s3:lib/events: Fix a bug in run_poll_events().
authorStefan Metzmacher <metze@samba.org>
Mon, 8 Aug 2011 16:49:06 +0000 (18:49 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 9 Aug 2011 11:02:51 +0000 (13:02 +0200)
Ignore fd events without EVENT_FD_READ or EVENT_FD_WRITE also in
run_events_poll(). They are ignore when building the array
for the syscall in event_add_to_poll_args(), so we need to
ignore them run_events_poll() too.

metze

Signed-off-by: Andreas Schneider <asn@samba.org>
Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Tue Aug  9 10:11:54 CEST 2011 on sn-devel-104
(cherry picked from commit 020032e114c0e966acf24f24e707942219d60cf3)

Fix bug #8358 (smbd exits with NT_STATUS_INTERNAL_ERROR in run_poll_events()).

source3/lib/events.c

index fbe3db942b4d93084c976c01176d82bab15fc52e..56314369f11c9946887f730757381d05f25128f4 100644 (file)
@@ -243,6 +243,10 @@ bool run_events_poll(struct tevent_context *ev, int pollrtn,
                struct pollfd *pfd;
                uint16 flags = 0;
 
+               if ((fde->flags & (EVENT_FD_READ|EVENT_FD_WRITE)) == 0) {
+                       continue;
+               }
+
                if (pollfd_idx[fde->fd] >= num_pfds) {
                        DEBUG(1, ("internal error: pollfd_idx[fde->fd] (%d) "
                                  ">= num_pfds (%d)\n", pollfd_idx[fde->fd],