From: Nick Mathewson Date: Thu, 21 Aug 2014 14:38:19 +0000 (-0400) Subject: Check return values for fcntl in tor_spawn_background. X-Git-Tag: tor-0.2.6.1-alpha~189^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0de7565dfd4498e9bbc2ab295e5b160bab6e1867;p=thirdparty%2Ftor.git Check return values for fcntl in tor_spawn_background. [CID 718609] --- diff --git a/src/common/util.c b/src/common/util.c index 4029512978..16ff8e3a80 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");