tevent_poll: Avoid a crash in poll_event_set_fd_flags
authorVolker Lendecke <vl@samba.org>
Thu, 31 Jan 2013 15:34:41 +0000 (16:34 +0100)
committerJeremy Allison <jra@samba.org>
Sun, 3 Feb 2013 03:53:30 +0000 (19:53 -0800)
The event context might have been freed before the fde

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/tevent/tevent_poll.c

index f63173744fae431cf64857b3525a99b3156f5977..7d106653530bfe46171cf55c2cbde515626845fb 100644 (file)
@@ -297,11 +297,17 @@ static struct tevent_fd *poll_event_add_fd(struct tevent_context *ev,
 */
 static void poll_event_set_fd_flags(struct tevent_fd *fde, uint16_t flags)
 {
-       struct poll_event_context *poll_ev = talloc_get_type_abort(
-               fde->event_ctx->additional_data, struct poll_event_context);
+       struct tevent_context *ev = fde->event_ctx;
+       struct poll_event_context *poll_ev;
        uint64_t idx = fde->additional_flags;
        uint16_t pollflags;
 
+       if (ev == NULL) {
+               return;
+       }
+       poll_ev = talloc_get_type_abort(
+               ev->additional_data, struct poll_event_context);
+
        fde->flags = flags;
 
        if (idx == UINT64_MAX) {