1 diff -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
5 if (p->argv1) free(p->argv1);
6 if (p->statname) free(p->statname);
7 if (p->pathname) free(p->pathname);
8 + if (p->statname) free(p->statname);
13 /* Open the status file. */
14 snprintf(path, sizeof(path), "%s/stat", d->d_name);
16 - /* Read SID & statname from it. */
17 + /* Read statname from it. */
18 if ((fp = fopen(path, "r")) != NULL) {
20 fgets(buf, sizeof(buf), fp);
22 /* Read program name. */
23 q = strrchr(buf, ')');
27 "can't get program name from /proc/%s\n",
30 if (p->argv1) free(p->argv1);
31 if (p->statname) free(p->statname);
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 "
46 - &p->sid, &startcode, &endcode) != 3) {
47 + &startcode, &endcode) == 2) {
48 + if (startcode == 0 && endcode == 0)
52 + p->sid = getsid(pid);
55 - nsyslog(LOG_ERR, "can't read sid from %s\n",
57 + nsyslog(LOG_ERR, "can't read sid for pid %d\n", pid);
59 if (p->argv0) free(p->argv0);
60 if (p->argv1) free(p->argv1);
61 if (p->statname) free(p->statname);
65 - if (startcode == 0 && endcode == 0)
69 /* Process disappeared.. */
70 if (p->argv0) free(p->argv0);