integcli: fix race in runCommandWithStdoutStderr

Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
Upstream-commit: c69896d8a013fca05ffee479e08605552715f901
Component: engine
This commit is contained in:
unclejack
2014-09-22 17:38:55 +03:00
parent 4420332c09
commit 18f1860b4a

View File

@ -44,14 +44,13 @@ func runCommandWithOutput(cmd *exec.Cmd) (output string, exitCode int, err error
}
func runCommandWithStdoutStderr(cmd *exec.Cmd) (stdout string, stderr string, exitCode int, err error) {
var (
stderrBuffer, stdoutBuffer bytes.Buffer
)
exitCode = 0
var stderrBuffer bytes.Buffer
stderrPipe, err := cmd.StderrPipe()
if err != nil {
return "", "", -1, err
}
go io.Copy(&stderrBuffer, stderrPipe)
out, err := cmd.Output()
cmd.Stderr = &stderrBuffer
cmd.Stdout = &stdoutBuffer
err = cmd.Run()
if err != nil {
var exiterr error
@ -61,8 +60,8 @@ func runCommandWithStdoutStderr(cmd *exec.Cmd) (stdout string, stderr string, ex
exitCode = 127
}
}
stdout = string(out)
stderr = string(stderrBuffer.Bytes())
stdout = stdoutBuffer.String()
stderr = stderrBuffer.String()
return
}