Prechádzať zdrojové kódy

Make _SC_OPEN_MAX actually get used when closing fds before exec.

Fixes bug 8209; bugfix on 0.2.3.1-alpha.
Nick Mathewson 11 rokov pred
rodič
commit
da6720e9fa
2 zmenil súbory, kde vykonal 9 pridanie a 2 odobranie
  1. 6 0
      changes/bug8209
  2. 3 2
      src/common/util.c

+ 6 - 0
changes/bug8209

@@ -0,0 +1,6 @@
+  o Minor bugfixes:
+    - When detecting the largest possible file descriptor (in order to close
+      all file descriptors when launching a new program), actually use
+      _SC_OPEN_MAX. The old code for doing this was very, very broken.
+      Fix for bug 8209; bugfix on 0.2.3.1-alpha. Found by Coverity; this
+      is CID 743383.

+ 3 - 2
src/common/util.c

@@ -3834,12 +3834,13 @@ tor_spawn_background(const char *const filename, const char **argv,
   child_state = CHILD_STATE_MAXFD;
 
 #ifdef _SC_OPEN_MAX
-  if (-1 != max_fd) {
+  if (-1 == max_fd) {
     max_fd = (int) sysconf(_SC_OPEN_MAX);
-    if (max_fd == -1)
+    if (max_fd == -1) {
       max_fd = DEFAULT_MAX_FD;
       log_warn(LD_GENERAL,
                "Cannot find maximum file descriptor, assuming %d", max_fd);
+    }
   }
 #else
   max_fd = DEFAULT_MAX_FD;