From b5b819b4a351b03b5dd91869582f855e124b9688 Mon Sep 17 00:00:00 2001 From: p_himanshu Date: Wed, 1 Apr 2015 22:24:29 -0700 Subject: [PATCH] Adding a check to avoid undefined behavior if socket is out of the bounds of FD_SETSIZE. --- mongoose.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mongoose.c b/mongoose.c index 70062649..84f96d33 100644 --- a/mongoose.c +++ b/mongoose.c @@ -1060,7 +1060,7 @@ static void ns_handle_udp(struct ns_connection *ls) { } static void ns_add_to_set(sock_t sock, fd_set *set, sock_t *max_fd) { - if (sock != INVALID_SOCKET) { + if ( (sock != INVALID_SOCKET) && (sock >= 0) && (sock < FD_SETSIZE) ) { FD_SET(sock, set); if (*max_fd == INVALID_SOCKET || sock > *max_fd) { *max_fd = sock; @@ -1971,6 +1971,8 @@ struct threadparam { }; static int wait_until_ready(sock_t sock, int for_read) { + if ( (sock < 0) || (sock >= FD_SETSIZE) ) + return 0; fd_set set; FD_ZERO(&set); FD_SET(sock, &set);