diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-12-21 23:15:28 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-12-21 23:15:28 -0500 |
commit | 974c60e14ac1a088cd39d8c1e93dc895ccc286df (patch) | |
tree | c78325961d8943829c1b22581c8ccc05a574ebbe | |
parent | db7acd1310732f8240c6919a4cfb7267fcd46032 (diff) | |
download | libevent-974c60e14ac1a088cd39d8c1e93dc895ccc286df.tar.gz |
Refactor evmap_{io,signal}_active_() to tolerate bad inputs
-rw-r--r-- | evmap.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -397,11 +397,13 @@ evmap_io_active_(struct event_base *base, evutil_socket_t fd, short events) struct event *ev; #ifndef EVMAP_USE_HT - EVUTIL_ASSERT(fd < io->nentries); + if (fd < 0 || fd >= io->nentries) + return; #endif GET_IO_SLOT(ctx, io, fd, evmap_io); - EVUTIL_ASSERT(ctx); + if (NULL == ctx) + return; LIST_FOREACH(ev, &ctx->events, ev_io_next) { if (ev->ev_events & events) event_active_nolock_(ev, ev->ev_events & events, 1); @@ -472,9 +474,12 @@ evmap_signal_active_(struct event_base *base, evutil_socket_t sig, int ncalls) struct evmap_signal *ctx; struct event *ev; - EVUTIL_ASSERT(sig < map->nentries); + if (sig < 0 || sig >= map->nentries) + return; GET_SIGNAL_SLOT(ctx, map, sig, evmap_signal); + if (!ctx) + return; LIST_FOREACH(ev, &ctx->events, ev_signal_next) event_active_nolock_(ev, EV_SIGNAL, ncalls); } |