From: Richard Jones Date: Thu, 30 Apr 2009 12:36:06 +0000 (+0100) Subject: Fix unchecked malloc & realloc in 'commandv' func (Jim Meyering). X-Git-Tag: 1.0.16~20 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=4f7cc37e5f4a209773062d67e5f61a81f7800fc8;hp=6dff51fc7d8a33925f164bd66c2c26cd4b94b3df;p=libguestfs.git Fix unchecked malloc & realloc in 'commandv' func (Jim Meyering). --- 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; }