allocate mem 1st

This commit is contained in:
albert 2002-12-21 11:27:47 +00:00
parent d8367cbb3e
commit aef6890de1
4 changed files with 16 additions and 12 deletions

View File

@ -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

View 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 */

View 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

View 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