summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-11 08:58:05 +0100
committerKarolin Seeger <kseeger@samba.org>2014-04-01 11:33:36 +0200
commitfc185a5f4cb34f4a2488eb336844c32812f930e7 (patch)
tree09aa89b7d20bcb826f7d295f060cb696503add8f
parentf9e8a9ef616f025e02bab6f4847a8e424c9625e6 (diff)
downloadsamba-fc185a5f4cb34f4a2488eb336844c32812f930e7.tar.gz
tevent: fix crash bug in tevent_queue_immediate_trigger()
Assume we we have a queue with 2 entries (A and B with triggerA() and triggerB()). If triggerA() removes itself tevent_queue_entry_destructor() will be called for A, this schedules the immediate event to call triggerB(). If triggerA() then also removes B by an explicit of implizit talloc_free(), q->list is NULL, but the immediate event is still scheduled and can't be unscheduled. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org> (cherry picked from commit 7fe5584e2a59584431cb2ddf8a4da22bfb924454) Autobuild-User(v4-0-test): Karolin Seeger <kseeger@samba.org> Autobuild-Date(v4-0-test): Tue Apr 1 11:33:36 CEST 2014 on sn-devel-104
-rw-r--r--lib/tevent/tevent_queue.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/tevent/tevent_queue.c b/lib/tevent/tevent_queue.c
index eeb922fbbc8..e32468098d7 100644
--- a/lib/tevent/tevent_queue.c
+++ b/lib/tevent/tevent_queue.c
@@ -144,6 +144,10 @@ static void tevent_queue_immediate_trigger(struct tevent_context *ev,
return;
}
+ if (!q->list) {
+ return;
+ }
+
q->list->triggered = true;
q->list->trigger(q->list->req, q->list->private_data);
}