summaryrefslogtreecommitdiff
path: root/lib/tevent
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2009-10-09 12:50:26 -0700
committerKarolin Seeger <kseeger@samba.org>2009-10-20 15:00:28 +0200
commit2ce7736058b58e337d42fc5e134096cc05cba4ed (patch)
tree8615c9b3f9563140ff254b90c72bffe6f54c63d9 /lib/tevent
parent21d70b508b6e38a0659bc4ecfef7b360bce91b71 (diff)
downloadsamba-2ce7736058b58e337d42fc5e134096cc05cba4ed.tar.gz
Fix bug 6796 - Deleting an event context on shutdown can cause smbd to crash.
Sync's tevent signal code with 3.5.x tree. Protects against ev pointer being NULL. Jeremy (cherry picked from commit 56290654c0c2056c31e0b348ba0d01e5c28ba89b)
Diffstat (limited to 'lib/tevent')
-rw-r--r--lib/tevent/tevent_signal.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/lib/tevent/tevent_signal.c b/lib/tevent/tevent_signal.c
index 0ca2a2760b0..ab170a66cf7 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) {
+ if (sl->se->event_ctx && 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;
}
}