Zbigniew Jędrzejewski-Szmek 5509c0
From 3f4dbb254a7ca90dd025a5de24f0fbaf53a9342e Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 5509c0
From: Andreas Henriksson <andreas@fatal.se>
Zbigniew Jędrzejewski-Szmek 5509c0
Date: Fri, 13 Jun 2014 18:48:19 +0200
Zbigniew Jędrzejewski-Szmek 5509c0
Subject: [PATCH] core: fix invalid free() in killall()
Zbigniew Jędrzejewski-Szmek 5509c0
Zbigniew Jędrzejewski-Szmek 5509c0
static int killall(....) in ./src/core/killall.c tries to get "s"
Zbigniew Jędrzejewski-Szmek 5509c0
initialized by calling get_process_comm(...) which calls
Zbigniew Jędrzejewski-Szmek 5509c0
read_one_line_file(...) which if it fails will mean it is left
Zbigniew Jędrzejewski-Szmek 5509c0
uninitialized.
Zbigniew Jędrzejewski-Szmek 5509c0
It is then used in argument to strna(s) call where it is
Zbigniew Jędrzejewski-Szmek 5509c0
dereferenced(!), in addition to nothing else initializing it before
Zbigniew Jędrzejewski-Szmek 5509c0
the scope it is in finishes.
Zbigniew Jędrzejewski-Szmek 5509c0
Zbigniew Jędrzejewski-Szmek 5509c0
(cherry picked from commit 3e09eb5c83e56bc0184bd9d9c44f76047464f77c)
Zbigniew Jędrzejewski-Szmek 5509c0
---
Zbigniew Jędrzejewski-Szmek 5509c0
 src/core/killall.c | 2 +-
Zbigniew Jędrzejewski-Szmek 5509c0
 1 file changed, 1 insertion(+), 1 deletion(-)
Zbigniew Jędrzejewski-Szmek 5509c0
Zbigniew Jędrzejewski-Szmek 5509c0
diff --git a/src/core/killall.c b/src/core/killall.c
Zbigniew Jędrzejewski-Szmek 5509c0
index 57ed41c5..eab48f7d 100644
Zbigniew Jędrzejewski-Szmek 5509c0
--- a/src/core/killall.c
Zbigniew Jędrzejewski-Szmek 5509c0
+++ b/src/core/killall.c
Zbigniew Jędrzejewski-Szmek 5509c0
@@ -168,7 +168,7 @@ static int killall(int sig, Set *pids, bool send_sighup) {
Zbigniew Jędrzejewski-Szmek 5509c0
                         continue;
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
                 if (sig == SIGKILL) {
Zbigniew Jędrzejewski-Szmek 5509c0
-                        _cleanup_free_ char *s;
Zbigniew Jędrzejewski-Szmek 5509c0
+                        _cleanup_free_ char *s = NULL;
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
                         get_process_comm(pid, &s);
Zbigniew Jędrzejewski-Szmek 5509c0
                         log_notice("Sending SIGKILL to PID "PID_FMT" (%s).", pid, strna(s));