libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 667a974ca7b8ad4ddc72a3feec6c005defd615dd
parent 81425ba9c1828ec636980ccae2087b969a698328
Author: Christian Grothoff <christian@grothoff.org>
Date:   Fri, 10 Mar 2017 16:26:24 +0100

fix CID 164297: ensure -1 listen_fd is not passed to close

Diffstat:
MChangeLog | 5+++++
Msrc/microhttpd/daemon.c | 8+++++---
2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,8 @@ +Fri Mar 10 16:22:54 CET 2017 + Handle case that we do not listen at all more gracefully + in MHD_start_daemon() and not pass '-1' to helper functions + that expect a valid socket. -CG + Tue Mar 7 12:11:44 BRT 2017 Updates file `.gitignore`. diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -5454,7 +5454,8 @@ MHD_start_daemon_va (unsigned int flags, listen_fd = daemon->listen_fd; } - if (!MHD_socket_nonblocking_ (listen_fd)) + if ( (MHD_INVALID_SOCKET != listen_fd) && + (! MHD_socket_nonblocking_ (listen_fd)) ) { #ifdef HAVE_MESSAGES MHD_DLOG (daemon, @@ -5471,8 +5472,9 @@ MHD_start_daemon_va (unsigned int flags, goto free_and_fail; } } - if ( (!MHD_SCKT_FD_FITS_FDSET_(listen_fd, - NULL)) && + if ( (MHD_INVALID_SOCKET != listen_fd) && + (! MHD_SCKT_FD_FITS_FDSET_(listen_fd, + NULL)) && (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL)) ) ) { #ifdef HAVE_MESSAGES