X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fgetprocentry-legacy.c;h=16d8cd89dee637ba02117580db0961590fa31a23;hb=437b5e9a1c7245fb99ddcf114b6b1bce36ae69f7;hp=331bcad882f377cde301fae629a7ff2dc24de711;hpb=26a5a1114913d053319fe9f26d69a72505a82abb;p=util-vserver.git diff --git a/util-vserver/lib/getprocentry-legacy.c b/util-vserver/lib/getprocentry-legacy.c index 331bcad..16d8cd8 100644 --- a/util-vserver/lib/getprocentry-legacy.c +++ b/util-vserver/lib/getprocentry-legacy.c @@ -19,7 +19,6 @@ #ifdef HAVE_CONFIG_H # include #endif -#include "compat.h" #include "utils-legacy.h" #include "internal.h" @@ -44,21 +43,22 @@ utilvserver_getProcEntry(pid_t pid, char *str, char *buf, size_t bufsize) { - char status_name[ sizeof("/proc/01234/status") ]; + char status_name[ sizeof("/proc//status") + sizeof(unsigned int)*3 + 1 ]; int fd; size_t len; char * res = 0; - if (pid<=0 || (uint32_t)(pid)>99999) { + if (pid<0 || (uint32_t)(pid)>99999) { errno = EINVAL; return 0; } - strcpy(status_name, "/proc/"); - len = utilvserver_uint2str(status_name+sizeof("/proc/")-1, - sizeof(status_name)-sizeof("/proc//status")+1, - pid, 10); - strcpy(status_name+sizeof("/proc/")+len-1, "/status"); + if (pid==0) strcpy(status_name, "/proc/self/status"); + else { + strcpy(status_name, "/proc/"); + len = utilvserver_fmt_uint(status_name+sizeof("/proc/")-1, pid); + strcpy(status_name+sizeof("/proc/")+len-1, "/status"); + } fd = open(status_name, O_RDONLY); if (fd==-1) return 0;