]> git.pld-linux.org Git - packages/SysVinit.git/blame - sysvinit-killall5.patch
Remove double free() from pidof; rel 10
[packages/SysVinit.git] / sysvinit-killall5.patch
CommitLineData
8c5b2406
AF
1diff -u sysvinit-2.88dsf/src/killall5.c sysvinit-2.88dsf/src/killall5.c
2--- sysvinit-2.88dsf/src/killall5.c 2011-12-03 23:12:52.373139250 +0100
3+++ sysvinit-2.88dsf/src/killall5.c 2011-12-03 23:19:21.498025134 +0100
8c5b2406 4@@ -496,7 +497,7 @@
437bcd41 5 /* Open the status file. */
8c5b2406 6 snprintf(path, sizeof(path), "%s/stat", d->d_name);
437bcd41
AM
7
8- /* Read SID & statname from it. */
9+ /* Read statname from it. */
8c5b2406 10 if ((fp = fopen(path, "r")) != NULL) {
437bcd41 11 buf[0] = 0;
612af2b6 12 fgets(buf, sizeof(buf), fp);
8c5b2406 13@@ -509,7 +510,6 @@
437bcd41
AM
14 /* Read program name. */
15 q = strrchr(buf, ')');
16 if (q == NULL) {
17- p->sid = 0;
18 nsyslog(LOG_ERR,
8c5b2406 19 "can't get program name from /proc/%s\n",
437bcd41 20 path);
8c5b2406
AF
21@@ -517,6 +517,7 @@
22 if (p->argv1) free(p->argv1);
23 if (p->statname) free(p->statname);
612af2b6
JB
24 free(p);
25+ fclose(fp);
26 continue;
27 }
28 s++;
8c5b2406 29@@ -531,23 +532,26 @@
612af2b6
JB
30
31 /* Get session, startcode, endcode. */
32 startcode = endcode = 0;
33- if (sscanf(q, "%*c %*d %*d %d %*d %*d %*u %*u "
34+ if (sscanf(q, "%*c %*d %*d %*d %*d %*d %*u %*u "
35 "%*u %*u %*u %*u %*u %*d %*d "
36 "%*d %*d %*d %*d %*u %*u %*d "
37 "%*u %lu %lu",
38- &p->sid, &startcode, &endcode) != 3) {
39+ &startcode, &endcode) == 2) {
40+ if (startcode == 0 && endcode == 0)
41+ p->kernel = 1;
42+ }
43+ fclose(fp);
44+ p->sid = getsid(pid);
45+ if (p->sid < 0) {
46 p->sid = 0;
437bcd41
AM
47- nsyslog(LOG_ERR, "can't read sid from %s\n",
48- path);
612af2b6
JB
49+ nsyslog(LOG_ERR, "can't read sid for pid %d\n", pid);
50+ free(p->statname);
8c5b2406
AF
51 if (p->argv0) free(p->argv0);
52 if (p->argv1) free(p->argv1);
53 if (p->statname) free(p->statname);
612af2b6
JB
54 free(p);
55 continue;
56 }
57- if (startcode == 0 && endcode == 0)
58- p->kernel = 1;
59- fclose(fp);
437bcd41
AM
60 } else {
61 /* Process disappeared.. */
8c5b2406 62 if (p->argv0) free(p->argv0);
This page took 0.079502 seconds and 4 git commands to generate.