]> granicus.if.org Git - procps-ng/commitdiff
allocate mem 1st
authoralbert <>
Sat, 21 Dec 2002 11:27:47 +0000 (11:27 +0000)
committeralbert <>
Sat, 21 Dec 2002 11:27:47 +0000 (11:27 +0000)
Makefile
proc/readproc.c
procps.lsm
procps.spec

index c6069e6480e8a60379b60b7b85e8ad2bc3b8c96e..40b4068558773aa73c6e18af6f1bcb9860fa1679 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -18,9 +18,9 @@
 
 VERSION      := 3
 SUBVERSION   := 1
-MINORVERSION := 4
-TARVERSION   := 3.1.4
-LIBVERSION   := 3.1.4
+MINORVERSION := 5
+TARVERSION   := 3.1.5
+LIBVERSION   := 3.1.5
 
 ############ vars
 
index 27b8c6ef9715912b352d8449db15766ff2fff6d7..356c6a687fbcfabaab0642cebb672ef6536e496a 100644 (file)
@@ -368,6 +368,7 @@ proc_t* readproc(PROCTAB* PT, proc_t* p) {
 #ifdef FLASK_LINUX
     security_id_t secsid;
 #endif
+    pid_t pid;  // saved until we have a proc_t allocated for sure
 
     /* loop until a proc matching restrictions is found or no more processes */
     /* I know this could be a while loop -- this way is easier to indent ;-) */
@@ -377,9 +378,8 @@ next_proc:                          /* get next PID for consideration */
 #define flags (PT->flags)
 
     if (flags & PROC_PID) {
-        pid_t pid = *(PT->pids)++;
+        pid = *(PT->pids)++;
        if (unlikely(!pid)) return NULL;
-       p->pid = pid;
        snprintf(path, sizeof path, "/proc/%d", pid);
     } else {                                   /* get next numeric /proc ent */
        for (;;) {
@@ -387,7 +387,7 @@ next_proc:                          /* get next PID for consideration */
            if(unlikely(unlikely(!ent) || unlikely(!ent->d_name))) return NULL;
            if(likely( likely(*ent->d_name > '0') && likely(*ent->d_name <= '9') )) break;
        }
-       p->pid = strtoul(ent->d_name, NULL, 10);
+       pid = strtoul(ent->d_name, NULL, 10);
        memcpy(path, "/proc/", 6);
        strcpy(path+6, ent->d_name);  // trust /proc to not contain evil top-level entries
 //     snprintf(path, sizeof path, "/proc/%s", ent->d_name);
@@ -404,11 +404,12 @@ next_proc:                                /* get next PID for consideration */
 
     if (!p)
        p = xcalloc(p, sizeof *p); /* passed buf or alloced mem */
-    p->euid = sb.st_uid;                       /* need a way to get real uid */
 
+    p->euid = sb.st_uid;                       /* need a way to get real uid */
 #ifdef FLASK_LINUX
     p->secsid = secsid;
 #endif
+    p->pid  = pid;
 
     if (flags & PROC_FILLSTAT) {         /* read, parse /proc/#/stat */
        if (unlikely( file2str(path, "stat", sbuf, sizeof sbuf) == -1 ))
@@ -478,6 +479,7 @@ proc_t* ps_readproc(PROCTAB* PT, proc_t* p) {
 #ifdef FLASK_LINUX
     security_id_t secsid;
 #endif
+    pid_t pid;  // saved until we have a proc_t allocated for sure
 
     /* loop until a proc matching restrictions is found or no more processes */
     /* I know this could be a while loop -- this way is easier to indent ;-) */
@@ -491,7 +493,7 @@ next_proc:                          /* get next PID for consideration */
        if(unlikely(unlikely(!ent) || unlikely(!ent->d_name))) return NULL;
        if(likely( likely(*ent->d_name > '0') && likely(*ent->d_name <= '9') )) break;
     }
-    p->pid = strtoul(ent->d_name, NULL, 10);
+    pid = strtoul(ent->d_name, NULL, 10);
     memcpy(path, "/proc/", 6);
     strcpy(path+6, ent->d_name);  // trust /proc to not contain evil top-level entries
 //  snprintf(path, sizeof path, "/proc/%s", ent->d_name);
@@ -505,10 +507,12 @@ next_proc:                                /* get next PID for consideration */
 
     if (!p)
        p = xcalloc(p, sizeof *p); /* passed buf or alloced mem */
+
     p->euid = sb.st_uid;                       /* need a way to get real uid */
 #ifdef FLASK_LINUX
     p->secsid = secsid;
 #endif
+    p->pid  = pid;
 
     if ((file2str(path, "stat", sbuf, sizeof sbuf)) == -1)
        goto next_proc;                 /* error reading /proc/#/stat */
index 1815181ff75ac630f09a8e9ed04578b8c6b5650d..fd78b87ec875fb3f098be8a273e7894a845096d6 100644 (file)
@@ -1,6 +1,6 @@
 Begin4
 Title: procps
-Version: 3.1.4
+Version: 3.1.5
 Entered-date: 2002-12-14
 Description: Linux system utilities
 Keywords: procps /proc libproc sysctl pmap
@@ -8,8 +8,8 @@ Keywords: procps /proc libproc sysctl pmap
 Author: Albert Cahalan, Michael K. Johnson, Jim Warner, etc.
 Maintained-by: various <procps-feedback@lists.sf.net>
 Primary-site: http://procps.sf.net/
-       236kB procps-3.1.4.tar.gz
+       236kB procps-3.1.5.tar.gz
 Alternate-site: http://www.debian.org/Packages/unstable/base/procps.html
-       236kB procps-3.1.4.tar.gz
+       236kB procps-3.1.5.tar.gz
 Copying-policy: mixed
 End
index d0793f1ed59d32460488623e653b674ac7747002..6674608e467c73fbb48e46adb0cd446d91579e2b 100644 (file)
@@ -3,7 +3,7 @@ Summary: System and process monitoring utilities
 Name: procps
 %define major_version 3
 %define minor_version 1
-%define revision 4
+%define revision 5
 %define version %{major_version}.%{minor_version}.%{revision}
 Version: %{version}
 Release: 1