]> git.pld-linux.org Git - packages/SysVinit.git/blob - sysvinit-killall5.patch
- does not require logrotate; rel 19
[packages/SysVinit.git] / sysvinit-killall5.patch
1 --- sysvinit-2.86/src/killall5.c.orig   2004-12-26 23:07:15.505343096 +0100
2 +++ sysvinit-2.86/src/killall5.c        2004-12-26 23:20:43.017582576 +0100
3 @@ -193,6 +193,7 @@
4                 if (p->argv0) free(p->argv0);
5                 if (p->argv1) free(p->argv1);
6                 if (p->pathname) free(p->pathname);
7 +               if (p->statname) free(p->statname);
8                 free(p);
9         }
10         plist = NULL;
11 @@ -210,7 +211,7 @@
12                 /* Open the status file. */
13                 snprintf(path, sizeof(path), "/proc/%s/stat", d->d_name);
14  
15 -               /* Read SID & statname from it. */
16 +               /* Read statname from it. */
17                 if ((fp = fopen(path, "r")) != NULL) {
18                         buf[0] = 0;
19                         fgets(buf, sizeof(buf), fp);
20 @@ -223,11 +224,11 @@
21                                 /* Read program name. */
22                                 q = strrchr(buf, ')');
23                                 if (q == NULL) {
24 -                                       p->sid = 0;
25                                         nsyslog(LOG_ERR,
26                                         "can't get program name from %s\n",
27                                                 path);
28                                         free(p);
29 +                                       fclose(fp);
30                                         continue;
31                                 }
32                                 s++;
33 @@ -242,20 +243,23 @@
34  
35                         /* Get session, startcode, endcode. */
36                         startcode = endcode = 0;
37 -                       if (sscanf(q,   "%*c %*d %*d %d %*d %*d %*u %*u "
38 +                       if (sscanf(q,   "%*c %*d %*d %*d %*d %*d %*u %*u "
39                                         "%*u %*u %*u %*u %*u %*d %*d "
40                                         "%*d %*d %*d %*d %*u %*u %*d "
41                                         "%*u %lu %lu",
42 -                                       &p->sid, &startcode, &endcode) != 3) {
43 +                                       &startcode, &endcode) == 2) {
44 +                               if (startcode == 0 && endcode == 0)
45 +                                       p->kernel = 1;
46 +                       }
47 +                       fclose(fp);
48 +                       p->sid = getsid(pid);
49 +                       if (p->sid < 0) {
50                                 p->sid = 0;
51 -                               nsyslog(LOG_ERR, "can't read sid from %s\n",
52 -                                       path);
53 +                               nsyslog(LOG_ERR, "can't read sid for pid %d\n", pid);
54 +                               free(p->statname);
55                                 free(p);
56                                 continue;
57                         }
58 -                       if (startcode == 0 && endcode == 0)
59 -                               p->kernel = 1;
60 -                       fclose(fp);
61                 } else {
62                         /* Process disappeared.. */
63                         free(p);
This page took 0.070233 seconds and 3 git commands to generate.