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