[tor-commits] [tor/master] Check return values for fcntl in tor_spawn_background.

nickm at torproject.org nickm at torproject.org
Thu Aug 21 16:14:09 UTC 2014


commit 0de7565dfd4498e9bbc2ab295e5b160bab6e1867
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Aug 21 10:38:19 2014 -0400

    Check return values for fcntl in tor_spawn_background.
    
    [CID 718609]
---
 src/common/util.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/common/util.c b/src/common/util.c
index 4029512..16ff8e3 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -4052,8 +4052,11 @@ tor_spawn_background(const char *const filename, const char **argv,
 
   status = process_handle->status = PROCESS_STATUS_RUNNING;
   /* Set stdout/stderr pipes to be non-blocking */
-  fcntl(process_handle->stdout_pipe, F_SETFL, O_NONBLOCK);
-  fcntl(process_handle->stderr_pipe, F_SETFL, O_NONBLOCK);
+  if (fcntl(process_handle->stdout_pipe, F_SETFL, O_NONBLOCK) < 0 ||
+      fcntl(process_handle->stderr_pipe, F_SETFL, O_NONBLOCK) < 0) {
+    log_warn(LD_GENERAL, "Failed to set stderror/stdout pipes nonblocking "
+             "in parent process: %s", strerror(errno));
+  }
   /* Open the buffered IO streams */
   process_handle->stdout_handle = fdopen(process_handle->stdout_pipe, "r");
   process_handle->stderr_handle = fdopen(process_handle->stderr_pipe, "r");





More information about the tor-commits mailing list