]> Cypherpunks repositories - gostls13.git/commitdiff
os/exec: don't crash when out of fds
authorBrad Fitzpatrick <bradfitz@golang.org>
Fri, 14 Sep 2012 20:40:22 +0000 (13:40 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 14 Sep 2012 20:40:22 +0000 (13:40 -0700)
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

src/pkg/os/exec/exec.go

index 3db3ab095da2384cb972457f752699825ca1c232..c4907cd7d7b519846e82f75a0d1f29b80e527dc8 100644 (file)
@@ -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
        }