Package: procps
Version: 1:3.2.8-2
Severity: normal
When given null string as its pid, kill behaves as if it were given 0,
thus being a trouble to people writing this:
1 #!/bin/sh
2 PID=`pidof non-running-program`
3 /bin/kill "$PID"
4 do some other work...
Line 3 terminates the shell process effectively, probably not expected
by users unfamiliar with this odd behave of /bin/kill.
A patch is attatched to correct this problem, making kill treat null
string the same as an ordinal non-numerals.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.30-1-686 (SMP w/2 CPU cores)
Locale: LANG=zh_CN.UTF-8, LC_CTYPE=zh_CN.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages procps depends on:
ii initscripts 2.87dsf-1 scripts for initializing
and shutt
ii libc6 2.9-25 GNU C Library: Shared libraries
ii libncurses5 5.7+20090803-2 shared libraries for
terminal hand
ii lsb-base 3.2-22 Linux Standard Base 3.2
init scrip
Versions of packages procps recommends:
ii psmisc 22.8-1 utilities that use the proc
file s
procps suggests no packages.
-- no debconf information
diff -urN procps-3.2.8/skill.c procps-3.2.8.new/skill.c
--- procps-3.2.8/skill.c 2008-03-24 13:48:39.000000000 +0800
+++ procps-3.2.8.new/skill.c 2009-10-16 17:29:48.000000000 +0800
@@ -307,7 +307,7 @@
long pid;
char *endp;
pid = strtol(argv[argc],&endp,10);
- if(!*endp){
+ if(!*endp && (endp != argv[argc])){
if(!kill((pid_t)pid,signo)) continue;
// The UNIX standard contradicts itself. If at least one process
// is matched for each PID (as if processes could share PID!) and