rpms/libtevent/devel 0001-lib-tevent-a-cleaner-fix-for-be4ac227842530d484659f.patch, NONE, 1.1 libtevent.spec, 1.3, 1.4

Simo Sorce simo at fedoraproject.org
Wed Sep 23 16:32:00 UTC 2009


Author: simo

Update of /cvs/pkgs/rpms/libtevent/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20108

Modified Files:
	libtevent.spec 
Added Files:
	0001-lib-tevent-a-cleaner-fix-for-be4ac227842530d484659f.patch 
Log Message:
forgot to cvs add patch


0001-lib-tevent-a-cleaner-fix-for-be4ac227842530d484659f.patch:
 tevent_signal.c |    9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

--- NEW FILE 0001-lib-tevent-a-cleaner-fix-for-be4ac227842530d484659f.patch ---
>From 455d44d9618afdc1d1f4198ae9f64ccc56dee62f Mon Sep 17 00:00:00 2001
From: Rusty Russell <rusty at rustcorp.com.au>
Date: Tue, 22 Sep 2009 10:32:10 +0930
Subject: [PATCH] lib/tevent: a cleaner fix for be4ac227842530d484659f2db683453366326d8b segv

Revert 23abcd2318c69753aa2a144e1dc0f9cf9efdb705 and fix logic bug.

The current code loops through the event contexts, when it sees a different
one, it notifies the current one (ev) and updates ev to point to the new one.

This is dumb, because:
(1) ev starts as NULL, so this code crashes, and
(2) The final context will not be notified.

The correct fix for this is to update ev to the new one, then notify it.
Volker's fix works because we currently always have one event context.

Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
---
 lib/tevent/tevent_signal.c |    8 +-------
 1 files changed, 1 insertions(+), 7 deletions(-)

diff --git a/lib/tevent/tevent_signal.c b/lib/tevent/tevent_signal.c
index 0ca2a27..d3325b6 100644
--- a/lib/tevent/tevent_signal.c
+++ b/lib/tevent/tevent_signal.c
@@ -90,18 +90,12 @@ static void tevent_common_signal_handler(int signum)
 	SIG_INCREMENT(sig_state->signal_count[signum]);
 	SIG_INCREMENT(sig_state->got_signal);
 
-	if (sig_state->sig_handlers[signum] != NULL) {
-		ev = sig_state->sig_handlers[signum]->se->event_ctx;
-		/* doesn't matter if this pipe overflows */
-		res = write(ev->pipe_fds[1], &c, 1);
-	}
-
 	/* Write to each unique event context. */
 	for (sl = sig_state->sig_handlers[signum]; sl; sl = sl->next) {
 		if (sl->se->event_ctx != ev) {
+			ev = sl->se->event_ctx;
 			/* doesn't matter if this pipe overflows */
 			res = write(ev->pipe_fds[1], &c, 1);
-			ev = sl->se->event_ctx;
 		}
 	}
 
-- 
1.6.2.5



Index: libtevent.spec
===================================================================
RCS file: /cvs/pkgs/rpms/libtevent/devel/libtevent.spec,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- libtevent.spec	23 Sep 2009 16:22:47 -0000	1.3
+++ libtevent.spec	23 Sep 2009 16:32:00 -0000	1.4
@@ -1,6 +1,6 @@
 Name: libtevent
 Version: 0.9.8
-Release: 3%{?dist}
+Release: 4%{?dist}
 Group: System Environment/Daemons
 Summary: The tevent library
 License: LGPLv3+
@@ -70,7 +70,7 @@ rm -rf $RPM_BUILD_ROOT
 %postun -p /sbin/ldconfig
 
 %changelog
-* Wed Sep 23 2009 Simo Sorce <ssorce at redhat.com> - 0.9.8-3
+* Wed Sep 23 2009 Simo Sorce <ssorce at redhat.com> - 0.9.8-4
 - Add patch to fix a segfault case
 
 * Wed Sep 16 2009 Simo Sorce <ssorce at redhat.com> - 0.9.8-2




More information about the fedora-extras-commits mailing list