From: Tobias Stoeckmann Date: Mon, 22 Apr 2019 17:58:56 +0000 (+0200) Subject: Enforce limit of NSIG signals. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4a1088baf40928673317f10614fb15da9933ad4e;p=libevent Enforce limit of NSIG signals. It doesn't make sense to allow a signal number higher than NSIG. The NSIG check already exists in signal.c for internally used functions. As this is a programming error of libevent consumers, this is a purely defensive mechanism. Signed-off-by: Tobias Stoeckmann --- diff --git a/evmap.c b/evmap.c index 9f46dd0f..9e3449c5 100644 --- a/evmap.c +++ b/evmap.c @@ -43,6 +43,7 @@ #include #endif #include +#include #include #include #include @@ -446,6 +447,9 @@ evmap_signal_add_(struct event_base *base, int sig, struct event *ev) struct event_signal_map *map = &base->sigmap; struct evmap_signal *ctx = NULL; + if (sig < 0 || sig >= NSIG) + return (-1); + if (sig >= map->nentries) { if (evmap_make_space( map, sig, sizeof(struct evmap_signal *)) == -1) @@ -472,7 +476,7 @@ evmap_signal_del_(struct event_base *base, int sig, struct event *ev) struct event_signal_map *map = &base->sigmap; struct evmap_signal *ctx; - if (sig >= map->nentries) + if (sig < 0 || sig >= map->nentries) return (-1); GET_SIGNAL_SLOT(ctx, map, sig, evmap_signal);