forked from pool/systemd
33 lines
1.2 KiB
Diff
33 lines
1.2 KiB
Diff
|
From 3e09eb5c83e56bc0184bd9d9c44f76047464f77c 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.
|
||
|
---
|
||
|
src/core/killall.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git src/core/killall.c src/core/killall.c
|
||
|
index 57ed41c..eab48f7 100644
|
||
|
--- src/core/killall.c
|
||
|
+++ src/core/killall.c
|
||
|
@@ -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));
|
||
|
--
|
||
|
1.7.9.2
|
||
|
|