chiark / gitweb /
core: fix invalid free() in killall()
authorAndreas Henriksson <andreas@fatal.se>
Fri, 13 Jun 2014 16:48:19 +0000 (18:48 +0200)
committerTom Gundersen <teg@jklm.no>
Fri, 13 Jun 2014 17:00:13 +0000 (19:00 +0200)
static int killall(....) in ./src/core/killall.c tries to get "s"
initialized by calling get_process_comm(...) which calls
read_one_line_file(...) which if it fails will mean it is left
uninitialized.
It is then used in argument to strna(s) call where it is
dereferenced(!), in addition to nothing else initializing it before
the scope it is in finishes.

src/core/killall.c

index 57ed41c5afe4d2eb62e3adb20562a65f9de10e24..eab48f7dcabdc9475a788b7bcd46256bb1ac614a 100644 (file)
@@ -168,7 +168,7 @@ static int killall(int sig, Set *pids, bool send_sighup) {
                         continue;
 
                 if (sig == SIGKILL) {
-                        _cleanup_free_ char *s;
+                        _cleanup_free_ char *s = NULL;
 
                         get_process_comm(pid, &s);
                         log_notice("Sending SIGKILL to PID "PID_FMT" (%s).", pid, strna(s));