X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fguestfsd.c;h=eb1e82b4a53b9fc362d9580df6a763b620dbf901;hb=e187aa8431ccf0436d9aee03ee1e80b79f148217;hp=ceadfdbdb36f0387f85dfa1b15f055aa07f0620d;hpb=7a091a11d7aeddc170e4d1b833fd9d7d18c00841;p=libguestfs.git diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index ceadfdb..eb1e82b 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -689,7 +689,7 @@ commandrvf (char **stdoutput, char **stderror, int flags, close (stdin_fd[1]); } else { /* Set stdin to /dev/null (ignore failure) */ - open ("/dev/null", O_RDONLY); + ignore_value (open ("/dev/null", O_RDONLY)); } close (so_fd[0]); close (se_fd[0]); @@ -779,8 +779,20 @@ commandrvf (char **stdoutput, char **stderror, int flags, perror ("select"); quit: - if (stdoutput) free (*stdoutput); - if (stderror) free (*stderror); + if (stdoutput) { + free (*stdoutput); + *stdoutput = NULL; + } + if (stderror) { + free (*stderror); + /* Need to return non-NULL *stderror here since most callers + * will try to print and then free the err string. + * Unfortunately recovery from strdup failure here is not + * possible. + */ + *stderror = strdup ("error running external command, " + "see debug output for details"); + } close (so_fd[0]); close (se_fd[0]); waitpid (pid, NULL, 0);