X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fgetprocentry-legacy.c;h=f88fa9501786f1290636577650bd692225c1d4ae;hb=38fe8b4a2dd28aebf52787c5b65cc79490fa53d3;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..f88fa95 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) { - errno = EINVAL; + if (pid<0 || (uint32_t)(pid)>99999) { + errno = EBADR; 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;