diff options
author | Glenn L McGrath | 2002-11-25 22:31:37 +0000 |
---|---|---|
committer | Glenn L McGrath | 2002-11-25 22:31:37 +0000 |
commit | 393ad1a834071c441abc5ab55bd3651f1903a842 (patch) | |
tree | f2bdc488db3fd9adb8001c80d2d51e769f9b0c78 /libbb | |
parent | bb2e9d47f3c7c8172836b589292612e5f155f054 (diff) | |
download | busybox-393ad1a834071c441abc5ab55bd3651f1903a842.zip busybox-393ad1a834071c441abc5ab55bd3651f1903a842.tar.gz |
Handle name entries that have a \0 in them, last_patch_65 from Vladimir N. Oleynik
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/procps.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libbb/procps.c b/libbb/procps.c index eea6aa6..e76e1ac 100644 --- a/libbb/procps.c +++ b/libbb/procps.c @@ -110,10 +110,17 @@ extern procps_status_t * procps_scan(int save_user_arg0) if(save_user_arg0) { if((fp = fopen(status, "r")) == NULL) continue; - if(fgets(buf, sizeof(buf), fp) != NULL) { - name = strchr(buf, '\n'); - if(name != NULL) - *name = 0; + if((n=fread(buf, 1, sizeof(buf)-1, fp)) > 0) { + if(buf[n-1]=='\n') + buf[--n] = 0; + name = buf; + while(n) { + if(*name < ' ') + *name = ' '; + name++; + n--; + } + *name = 0; if(buf[0]) curstatus.cmd = strdup(buf); /* if NULL it work true also */ |