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:
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