command: check for fork error before closing fd

We should not set *outfd or *errfd if virExecWithHook() failed
because the caller may close these fds.

Bug present since v0.4.5 (commit 60ed1d2a).
This commit is contained in:
Wen Congyang 2012-05-30 17:20:44 +08:00 committed by Eric Blake
parent f3cfc7c884
commit 746ff701e8

View File

@ -492,6 +492,10 @@ virExecWithHook(const char *const*argv,
}
if (pid) { /* parent */
if (forkRet < 0) {
goto cleanup;
}
VIR_FORCE_CLOSE(null);
if (outfd && *outfd == -1) {
VIR_FORCE_CLOSE(pipeout[1]);
@ -502,10 +506,6 @@ virExecWithHook(const char *const*argv,
*errfd = pipeerr[0];
}
if (forkRet < 0) {
goto cleanup;
}
*retpid = pid;
if (binary != argv[0])