From 71e9801c52b09466088b88fd3f62efc1ba6a03a7 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 9 Mar 2017 03:38:06 +0000 Subject: goruby.c: FD leak [ci skip] * goruby.c (goruby_options): fix potential FD leak. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57820 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- goruby.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/goruby.c b/goruby.c index 5ac4c96d12..ddb62562d4 100644 --- a/goruby.c +++ b/goruby.c @@ -35,7 +35,11 @@ goruby_options(int argc, char **argv) if ((isatty(0) && isatty(1) && isatty(2)) && (pipe(rw) == 0)) { ssize_t n; infd = dup(0); - if (infd < 0) return NULL; + if (infd < 0) { + close(rw[0]); + close(rw[1]); + goto no_irb; + } dup2(rw[0], 0); close(rw[0]); n = write(rw[1], cmd, sizeof(cmd) - 1); @@ -46,6 +50,7 @@ goruby_options(int argc, char **argv) return ret; } else { + no_irb: return ruby_options(argc, argv); } } -- cgit v1.2.3