Blob Blame History Raw
From cd90b3170d09d95f391a10da15be7a0b2eac32ab Mon Sep 17 00:00:00 2001
From: Andreas Henriksson <andreas@fatal.se>
Date: Fri, 13 Jun 2014 18:48:19 +0200
Subject: [PATCH] core: fix invalid free() in killall()

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.

(cherry picked from commit 3e09eb5c83e56bc0184bd9d9c44f76047464f77c)
(cherry picked from commit 89655d12976c14a2fc6b6c2b91164b9246898560)
---
 src/core/killall.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/killall.c b/src/core/killall.c
index e395050..967dac0 100644
--- a/src/core/killall.c
+++ b/src/core/killall.c
@@ -167,7 +167,7 @@ static int killall(int sig, Set *pids) {
                         continue;
 
                 if (sig == SIGKILL) {
-                        _cleanup_free_ char *s;
+                        _cleanup_free_ char *s = NULL;
 
                         get_process_comm(pid, &s);
                         log_notice("Sending SIGKILL to PID %lu (%s).", (unsigned long) pid, strna(s));