Joe.C writes:
I've reported this bug in April and it still exists in 1.00-pre2. So I made patches for both 0.60.x and 1.00-pre2. The patch is very simple, just use strncmp instead of strcmp. Please apply if it is OK. Here's the procedure to test this problem: Create a executable with very long name, say 'test_1234567890123456' and execute it. Try using 'killall' or 'pidof' to find/kill this program. Without this patch, you can't find the program.
This commit is contained in:
parent
8f4ef159f0
commit
5378fbcb33
@ -25,6 +25,10 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
|
|
||||||
|
#define COMM_LEN 16 /* synchronize with size of comm in struct task_struct
|
||||||
|
in /usr/include/linux/sched.h */
|
||||||
|
|
||||||
|
|
||||||
/* find_pid_by_name()
|
/* find_pid_by_name()
|
||||||
*
|
*
|
||||||
* Modified by Vladimir Oleynik for use with libbb/procps.c
|
* Modified by Vladimir Oleynik for use with libbb/procps.c
|
||||||
@ -46,7 +50,7 @@ extern long* find_pid_by_name( const char* pidName)
|
|||||||
#else
|
#else
|
||||||
while ((p = procps_scan(0)) != 0) {
|
while ((p = procps_scan(0)) != 0) {
|
||||||
#endif
|
#endif
|
||||||
if (strcmp(p->short_cmd, pidName) == 0) {
|
if (strncmp(p->short_cmd, pidName, COMM_LEN-1) == 0) {
|
||||||
pidList=xrealloc( pidList, sizeof(long) * (i+2));
|
pidList=xrealloc( pidList, sizeof(long) * (i+2));
|
||||||
pidList[i++]=p->pid;
|
pidList[i++]=p->pid;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user