diff options
author | Kevin P. Fleming <kpfleming@digium.com> | 2005-09-01 19:44:51 +0000 |
---|---|---|
committer | Kevin P. Fleming <kpfleming@digium.com> | 2005-09-01 19:44:51 +0000 |
commit | 0361052ae1dd83329b8dd1dba503fe39f48d9c56 (patch) | |
tree | 269629d410c4bb365404685d850d5cf456256903 /apps | |
parent | 25f3403b21866d8e79ed163be3b3c9b21c22b3ef (diff) |
ensure that file handles are never double closed
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6485 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rwxr-xr-x | apps/app_externalivr.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/apps/app_externalivr.c b/apps/app_externalivr.c index 59fc95340..75a2c7421 100755 --- a/apps/app_externalivr.c +++ b/apps/app_externalivr.c @@ -302,9 +302,6 @@ static int app_exec(struct ast_channel *chan, void *data) dup2(child_stdin[0], STDIN_FILENO); dup2(child_stdout[1], STDOUT_FILENO); dup2(child_stderr[1], STDERR_FILENO); - close(child_stdin[1]); - close(child_stdout[0]); - close(child_stderr[0]); for (i = STDERR_FILENO + 1; i < 1024; i++) close(i); execv(command, argv); @@ -323,8 +320,11 @@ static int app_exec(struct ast_channel *chan, void *data) struct ast_channel *rchan; close(child_stdin[0]); + child_stdin[0] = 0; close(child_stdout[1]); + child_stdout[1] = 0; close(child_stderr[1]); + child_stderr[1] = 0; if (!(child_events = fdopen(child_events_fd, "w"))) { ast_chan_log(LOG_WARNING, chan, "Could not open stream for child events\n"); @@ -505,20 +505,23 @@ static int app_exec(struct ast_channel *chan, void *data) if (child_errors) fclose(child_errors); - if (child_stdin[0]) { + if (child_stdin[0]) close(child_stdin[0]); + + if (child_stdin[1]) close(child_stdin[1]); - } - if (child_stdout[0]) { + if (child_stdout[0]) close(child_stdout[0]); + + if (child_stdout[1]) close(child_stdout[1]); - } - if (child_stderr[0]) { + if (child_stderr[0]) close(child_stderr[0]); + + if (child_stderr[1]) close(child_stderr[1]); - } if (u) { while ((entry = AST_LIST_REMOVE_HEAD(&u->playlist, list))) |