From 8154eb3a825d0541a2fbafa1844c0c88fe14d263 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 16 Feb 2016 14:23:53 -0800 Subject: [PATCH] =?UTF-8?q?lib:=20tevent:=20Fix=20memory=20leak=20reported?= =?UTF-8?q?=20by=20Pavel=20B=C5=99ezina=20=20when=20o?= =?UTF-8?q?ld=20signal=20action=20restored.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jeremy Allison --- lib/tevent/tevent_signal.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/tevent/tevent_signal.c b/lib/tevent/tevent_signal.c index 924dc05..1c1e60e 100644 --- a/lib/tevent/tevent_signal.c +++ b/lib/tevent/tevent_signal.c @@ -212,6 +212,7 @@ static int tevent_signal_destructor(struct tevent_signal *se) /* restore old handler, if any */ if (sig_state->oldact[se->signum]) { sigaction(se->signum, sig_state->oldact[se->signum], NULL); + talloc_free(sig_state->oldact[se->signum]); sig_state->oldact[se->signum] = NULL; } #ifdef SA_SIGINFO @@ -342,6 +343,8 @@ struct tevent_signal *tevent_common_add_signal(struct tevent_context *ev, return NULL; } if (sigaction(signum, &act, sig_state->oldact[signum]) == -1) { + talloc_free(sig_state->oldact[se->signum]); + sig_state->oldact[se->signum] = NULL; talloc_free(se); return NULL; } @@ -505,6 +508,7 @@ void tevent_cleanup_pending_signal_handlers(struct tevent_signal *se) if (sig_state->sig_handlers[se->signum] == NULL) { if (sig_state->oldact[se->signum]) { sigaction(se->signum, sig_state->oldact[se->signum], NULL); + talloc_free(sig_state->oldact[se->signum]); sig_state->oldact[se->signum] = NULL; } } -- 2.7.0.rc3.207.g0ac5344