[tor-commits] [tor/master] Make _SC_OPEN_MAX actually get used when closing fds before exec.

nickm at torproject.org nickm at torproject.org
Fri Feb 15 21:38:27 UTC 2013


commit da6720e9fa6e86e381cb82dd06bca73e7bc8bc6c
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Feb 11 16:27:35 2013 -0500

    Make _SC_OPEN_MAX actually get used when closing fds before exec.
    
    Fixes bug 8209; bugfix on 0.2.3.1-alpha.
---
 changes/bug8209   |    6 ++++++
 src/common/util.c |    5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/changes/bug8209 b/changes/bug8209
new file mode 100644
index 0000000..c589235
--- /dev/null
+++ b/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.
diff --git a/src/common/util.c b/src/common/util.c
index 49353a8..6a69635 100644
--- a/src/common/util.c
+++ b/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;





More information about the tor-commits mailing list