diff --git a/SOURCES/0001-lib-tevent-Fix-memory-leak-reported-by-Pavel-B-ezina.patch b/SOURCES/0001-lib-tevent-Fix-memory-leak-reported-by-Pavel-B-ezina.patch new file mode 100644 index 0000000..11ad84f --- /dev/null +++ b/SOURCES/0001-lib-tevent-Fix-memory-leak-reported-by-Pavel-B-ezina.patch @@ -0,0 +1,53 @@ +From 833a2f474367624dd9980abb28227850e95fe976 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 + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11742 + +Signed-off-by: Jeremy Allison +Reviewed-by: Andreas Schneider + +Autobuild-User(master): Andreas Schneider +Autobuild-Date(master): Thu Feb 18 01:42:50 CET 2016 on sn-devel-144 +--- + 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 924dc05c029d65cf5a167be278bd98035e5b13fd..9bc11edca42f5d3760a3035a507da73a70f3a780 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[signum]); ++ sig_state->oldact[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.4.11 + diff --git a/SPECS/libtevent.spec b/SPECS/libtevent.spec index 45d0991..1140ff9 100644 --- a/SPECS/libtevent.spec +++ b/SPECS/libtevent.spec @@ -1,6 +1,6 @@ Name: libtevent Version: 0.9.26 -Release: 1%{?dist} +Release: 1%{?dist}.1 Group: System Environment/Daemons Summary: The tevent library License: LGPLv3+ @@ -18,6 +18,7 @@ BuildRequires: libxslt Provides: bundled(libreplace) # Patches +Patch0001: 0001-lib-tevent-Fix-memory-leak-reported-by-Pavel-B-ezina.patch %description Tevent is an event system based on the talloc memory management library. @@ -63,6 +64,11 @@ UpdateTimestamps() { %setup -q -n tevent-%{version} +for p in %patches ; do + %__patch -p3 -i $p + UpdateTimestamps -p3 $p +done + %build %configure --disable-rpath \ --bundled-libraries=NONE \ @@ -112,6 +118,9 @@ rm -rf $RPM_BUILD_ROOT %postun -p /sbin/ldconfig %changelog +* Mon Apr 4 2016 Jakub Hrozek - 0.9.26-1.1 +- Resolves: #1324387 - libtevent leaks memory during signal handling + * Fri Apr 1 2016 Jakub Hrozek - 0.9.26-1 - Rebase libtevent to 0.9.26 - Related: rhbz#1322690