aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2012-09-22 05:55:12 +1000
committerBrad Fitzpatrick <bradfitz@golang.org>2012-09-22 05:55:12 +1000
commit4ba17d5097640caadbbe8df5663ce6d681359b49 (patch)
tree5532e8554500ea0c30c0e2ed2c9cd0d7c784b87f
parent92125eecb540e43fe42f1501224973f7762cd580 (diff)
downloadgo-4ba17d5097640caadbbe8df5663ce6d681359b49.tar.gz
go-4ba17d5097640caadbbe8df5663ce6d681359b49.zip
[release-branch.go1] os/exec: don't crash when out of fds
««« backport 00e1feaa9218 os/exec: don't crash when out of fds Command.Start could crash before if no fds were available because a nil *os.File of /dev/null was added to the cleanup list, which crashed before returning the proper error. R=golang-dev, iant CC=golang-dev https://golang.org/cl/6514043 »»»
-rw-r--r--src/pkg/os/exec/exec.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/os/exec/exec.go b/src/pkg/os/exec/exec.go
index 3db3ab095d..c4907cd7d7 100644
--- a/src/pkg/os/exec/exec.go
+++ b/src/pkg/os/exec/exec.go
@@ -143,6 +143,9 @@ func (c *Cmd) argv() []string {
func (c *Cmd) stdin() (f *os.File, err error) {
if c.Stdin == nil {
f, err = os.Open(os.DevNull)
+ if err != nil {
+ return
+ }
c.closeAfterStart = append(c.closeAfterStart, f)
return
}
@@ -182,6 +185,9 @@ func (c *Cmd) stderr() (f *os.File, err error) {
func (c *Cmd) writerDescriptor(w io.Writer) (f *os.File, err error) {
if w == nil {
f, err = os.OpenFile(os.DevNull, os.O_WRONLY, 0)
+ if err != nil {
+ return
+ }
c.closeAfterStart = append(c.closeAfterStart, f)
return
}