X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fguestfsd.c;h=ba4035ea48de324194374178b6e456c102956fcf;hb=c69c3695303d5a660ad093a076c2e364ae6061de;hp=d7ba4821263bbbd061f0c49aacdcb5a5483dc826;hpb=11350529fee2dbbcfda333bbe10d72f023dc2109;p=libguestfs.git diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index d7ba482..ba4035e 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -339,20 +339,31 @@ int command (char **stdoutput, char **stderror, const char *name, ...) { va_list args; - char **argv; + char **argv, **p; char *s; int i, r; /* Collect the command line arguments into an array. */ - va_start (args, name); - i = 2; argv = malloc (sizeof (char *) * i); + if (argv == NULL) { + perror ("malloc"); + return -1; + } argv[0] = (char *) name; argv[1] = NULL; + va_start (args, name); + while ((s = va_arg (args, char *)) != NULL) { - argv = realloc (argv, sizeof (char *) * (++i)); + p = realloc (argv, sizeof (char *) * (++i)); + if (p == NULL) { + perror ("realloc"); + free (argv); + va_end (args); + return -1; + } + argv = p; argv[i-2] = s; argv[i-1] = NULL; }