aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-02-15 16:37:53 -0500
committerNick Mathewson <nickm@torproject.org>2013-02-15 16:37:53 -0500
commite6e929f5cf5d548d64c4400c0a5036d16b8c4046 (patch)
tree568ec21afdb5f5ee8912f1d7c5a49b6747409b5b
parent73182e322022611f8593af7b7ea141b96e8692ea (diff)
parentda6720e9fa6e86e381cb82dd06bca73e7bc8bc6c (diff)
downloadtor-e6e929f5cf5d548d64c4400c0a5036d16b8c4046.tar
tor-e6e929f5cf5d548d64c4400c0a5036d16b8c4046.tar.gz
Merge remote-tracking branch 'public/bug8209'
-rw-r--r--changes/bug82096
-rw-r--r--src/common/util.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/changes/bug8209 b/changes/bug8209
new file mode 100644
index 000000000..c58923540
--- /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 49353a8ee..6a6963559 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;