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 <tobias@stoeckmann.org>
#include <unistd.h>
#endif
#include <errno.h>
+#include <limits.h>
#include <signal.h>
#include <string.h>
#include <time.h>
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)
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);