From e656654456db9e76aeffa1b37db0b26560947e57 Mon Sep 17 00:00:00 2001 From: Mahmoud Al-Qudsi Date: Sat, 26 Aug 2017 19:11:39 -0500 Subject: [PATCH] Fix uninitialized sigaction.sa_flags valgrind error Valgrind warns that the sometimes uninitialized sigaction.sa_flags field is sometimes used when passed to the signal handler. This patch explicitly zeros out the sigaction.sa_flags field at creation time. --- src/signal.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/signal.cpp b/src/signal.cpp index cc8726e74..90d008abd 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -267,6 +267,8 @@ void signal_reset_handlers() { static void set_interactive_handlers() { struct sigaction act, oact; + act.sa_flags = 0; + oact.sa_flags = 0; sigemptyset(&act.sa_mask); // Interactive mode. Ignore interactive signals. We are a shell, we know what is best for @@ -312,6 +314,7 @@ static void set_interactive_handlers() { static void set_non_interactive_handlers() { struct sigaction act; + act.sa_flags = 0; sigemptyset(&act.sa_mask); // Non-interactive. Ignore interrupt, check exit status of processes to determine result @@ -324,6 +327,7 @@ static void set_non_interactive_handlers() { /// Sets up appropriate signal handlers. void signal_set_handlers() { struct sigaction act; + act.sa_flags = 0; sigemptyset(&act.sa_mask); // Ignore SIGPIPE. We'll detect failed writes and deal with them appropriately. We don't want @@ -355,6 +359,7 @@ void signal_handle(int sig, int do_handle) { (sig == SIGTTOU) || (sig == SIGCHLD)) return; + act.sa_flags = 0; sigemptyset(&act.sa_mask); if (do_handle) { act.sa_flags = SA_SIGINFO;