[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-1267-g23abcd2

Volker Lendecke vlendec at samba.org
Sat Aug 29 01:49:55 MDT 2009


The branch, master has been updated
       via  23abcd2318c69753aa2a144e1dc0f9cf9efdb705 (commit)
      from  c1b8eb884b71727fa12f4f62e0261c07b47c943a (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 23abcd2318c69753aa2a144e1dc0f9cf9efdb705
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Aug 29 09:41:32 2009 +0200

    tevent: Fix a segfault upon the first signal
    
    When the first signal arrives, tevent_common_signal_handler() crashed: "ev" is
    initialized to NULL, so the first "write(ev->pipe_fds[1], &c, 1);" dereferences
    NULL.
    
    Rusty, Tridge, please check. Also, can you tell me a bit more about the
    environment you tested this in? I'd be curious to see where this survived.
    
    Thanks,
    
    Volker

-----------------------------------------------------------------------

Summary of changes:
 lib/tevent/tevent_signal.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tevent/tevent_signal.c b/lib/tevent/tevent_signal.c
index 0333325..b329f8c 100644
--- a/lib/tevent/tevent_signal.c
+++ b/lib/tevent/tevent_signal.c
@@ -85,6 +85,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) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list