Browse Source

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

Christian Grothoff 9 years ago
parent
commit
667a974ca7
2 changed files with 10 additions and 3 deletions
  1. 5 0
      ChangeLog
  2. 5 3
      src/microhttpd/daemon.c

+ 5 - 0
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`.
 

+ 5 - 3
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