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 e875d04f0cb8cdee48bfc9d434e97587738ccfce..10dcb4225eadedcf72f216c3dceef541bb56076a 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 e875d04f0cb8cdee48bfc9d434e97587738ccfce..10dcb4225eadedcf72f216c3dceef541bb56076a 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 007099d4d298e12696421fcb838b61a3cf99aa2f..8bb20e9bbb949ef5a1159896c9de61ffa777fc0d 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 74d2cf6434c62856f721dc34600e2664b7899181..35c147b341080eef67427919f613070acb1e8be7 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 007099d4d298e12696421fcb838b61a3cf99aa2f..8bb20e9bbb949ef5a1159896c9de61ffa777fc0d 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 74d2cf6434c62856f721dc34600e2664b7899181..35c147b341080eef67427919f613070acb1e8be7 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