Be extra extra careful about what we dereference.
authorEric Andersen <andersen@codepoet.org>
Thu, 5 Jul 2001 16:09:32 +0000 (16:09 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 5 Jul 2001 16:09:32 +0000 (16:09 -0000)
halt.c
init/halt.c
init/poweroff.c
init/reboot.c
poweroff.c
reboot.c

diff --git a/halt.c b/halt.c
index e875d04..10dcb42 100644 (file)
--- a/halt.c
+++ b/halt.c
@@ -28,7 +28,10 @@ extern int halt_main(int argc, char **argv)
 {
 #ifdef BB_FEATURE_LINUXRC
        /* don't assume init's pid == 1 */
-       return(kill(*(find_pid_by_name("init")), SIGUSR1));
+       pid_t *pid = find_pid_by_name("init");
+       if (!pid || *pid<=0)
+               error_msg_and_die("no process killed");
+       return(kill(*pid, SIGUSR1));
 #else
        return(kill(1, SIGUSR1));
 #endif
index e875d04..10dcb42 100644 (file)
@@ -28,7 +28,10 @@ extern int halt_main(int argc, char **argv)
 {
 #ifdef BB_FEATURE_LINUXRC
        /* don't assume init's pid == 1 */
-       return(kill(*(find_pid_by_name("init")), SIGUSR1));
+       pid_t *pid = find_pid_by_name("init");
+       if (!pid || *pid<=0)
+               error_msg_and_die("no process killed");
+       return(kill(*pid, SIGUSR1));
 #else
        return(kill(1, SIGUSR1));
 #endif
index 007099d..8bb20e9 100644 (file)
@@ -28,7 +28,10 @@ extern int poweroff_main(int argc, char **argv)
 {
 #ifdef BB_FEATURE_LINUXRC
        /* don't assume init's pid == 1 */
-       return(kill(*(find_pid_by_name("init")), SIGUSR2));
+       pid_t *pid = find_pid_by_name("init");
+       if (!pid || *pid<=0)
+               error_msg_and_die("no process killed");
+       return(kill(*pid, SIGUSR2));
 #else
        return(kill(1, SIGUSR2));
 #endif
index 74d2cf6..35c147b 100644 (file)
@@ -28,7 +28,10 @@ extern int reboot_main(int argc, char **argv)
 {
 #ifdef BB_FEATURE_LINUXRC
        /* don't assume init's pid == 1 */
-       return(kill(*(find_pid_by_name("init")), SIGTERM));
+       pid_t *pid = find_pid_by_name("init");
+       if (!pid || *pid<=0)
+               error_msg_and_die("no process killed");
+       return(kill(*pid, SIGTERM));
 #else
        return(kill(1, SIGTERM));
 #endif
index 007099d..8bb20e9 100644 (file)
@@ -28,7 +28,10 @@ extern int poweroff_main(int argc, char **argv)
 {
 #ifdef BB_FEATURE_LINUXRC
        /* don't assume init's pid == 1 */
-       return(kill(*(find_pid_by_name("init")), SIGUSR2));
+       pid_t *pid = find_pid_by_name("init");
+       if (!pid || *pid<=0)
+               error_msg_and_die("no process killed");
+       return(kill(*pid, SIGUSR2));
 #else
        return(kill(1, SIGUSR2));
 #endif
index 74d2cf6..35c147b 100644 (file)
--- a/reboot.c
+++ b/reboot.c
@@ -28,7 +28,10 @@ extern int reboot_main(int argc, char **argv)
 {
 #ifdef BB_FEATURE_LINUXRC
        /* don't assume init's pid == 1 */
-       return(kill(*(find_pid_by_name("init")), SIGTERM));
+       pid_t *pid = find_pid_by_name("init");
+       if (!pid || *pid<=0)
+               error_msg_and_die("no process killed");
+       return(kill(*pid, SIGTERM));
 #else
        return(kill(1, SIGTERM));
 #endif