]> git.pld-linux.org Git - packages/SysVinit.git/blob - sysvinit-killall5.patch
- updated to 3.04
[packages/SysVinit.git] / sysvinit-killall5.patch
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
4 @@ -496,7 +497,7 @@
5                 /* Open the status file. */
6                 snprintf(path, sizeof(path), "%s/stat", d->d_name);
7  
8 -               /* Read SID & statname from it. */
9 +               /* Read statname from it. */
10                 if ((fp = fopen(path, "r")) != NULL) {
11                         buf[0] = 0;
12                         fgets(buf, sizeof(buf), fp);
13 @@ -509,7 +510,6 @@
14                                 /* Read program name. */
15                                 q = strrchr(buf, ')');
16                                 if (q == NULL) {
17 -                                       p->sid = 0;
18                                         nsyslog(LOG_ERR,
19                                         "can't get program name from /proc/%s\n",
20                                                 path);
21 @@ -517,6 +517,7 @@
22                                         if (p->argv1) free(p->argv1);
23                                         if (p->statname) free(p->statname);
24                                         free(p);
25 +                                       fclose(fp);
26                                         continue;
27                                 }
28                                 s++;
29 @@ -531,23 +532,25 @@
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;
47 -                               nsyslog(LOG_ERR, "can't read sid from %s\n",
48 -                                       path);
49 +                               nsyslog(LOG_ERR, "can't read sid for pid %d\n", pid);
50                                 if (p->argv0) free(p->argv0);
51                                 if (p->argv1) free(p->argv1);
52                                 if (p->statname) free(p->statname);
53                                 free(p);
54                                 continue;
55                         }
56 -                       if (startcode == 0 && endcode == 0)
57 -                               p->kernel = 1;
58 -                       fclose(fp);
59                 } else {
60                         /* Process disappeared.. */
61                         if (p->argv0) free(p->argv0);
This page took 0.094419 seconds and 3 git commands to generate.