- fix 2699
[oweals/gnunet.git] / src / util / os_priority.c
index 68b63908d3b897d8839c3a51bd7081871a5094bf..983da42b17bb5f35015dc588895ee80286967bdc 100644 (file)
@@ -151,6 +151,13 @@ GNUNET_OS_install_parent_control_handler (void *cls,
     putenv (GNUNET_OS_CONTROL_PIPE "=");
     return;
   }
+  if (pipe_fd >= FD_SETSIZE)
+  {
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         "GNUNET_OS_CONTROL_PIPE `%s' contains garbage?\n", env_buf);
+    putenv (GNUNET_OS_CONTROL_PIPE "=");
+    return;
+  }
   /* Gcc will issue a warning here. What to do with it? */
 #if WINDOWS
   control_pipe = GNUNET_DISK_get_handle_from_w32_handle ((HANDLE) pipe_fd);
@@ -655,6 +662,7 @@ start_process (int pipe_control,
   {
     childpipe_read = NULL;
     childpipe_write = NULL;
+    childpipe_read_fd = -1;
   }
   if (NULL != pipe_stdout)
   {
@@ -730,6 +738,8 @@ start_process (int pipe_control,
     snprintf (fdbuf, 100, "%x", childpipe_read_fd);
     setenv (GNUNET_OS_CONTROL_PIPE, fdbuf, 1);
   }
+  else
+    unsetenv (GNUNET_OS_CONTROL_PIPE);
   if (NULL != pipe_stdin)
   {
     GNUNET_break (0 == close (fd_stdin_write));