git.annexia.org
/
libguestfs.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6dff51f
)
Fix unchecked malloc & realloc in 'commandv' func (Jim Meyering).
author
Richard Jones
<rjones@redhat.com>
Thu, 30 Apr 2009 12:36:06 +0000
(13:36 +0100)
committer
Richard Jones
<rjones@redhat.com>
Thu, 30 Apr 2009 12:36:06 +0000
(13:36 +0100)
daemon/guestfsd.c
patch
|
blob
|
history
diff --git
a/daemon/guestfsd.c
b/daemon/guestfsd.c
index
d7ba482
..
ba4035e
100644
(file)
--- a/
daemon/guestfsd.c
+++ b/
daemon/guestfsd.c
@@
-339,20
+339,31
@@
int
command (char **stdoutput, char **stderror, const char *name, ...)
{
va_list args;
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. */
char *s;
int i, r;
/* Collect the command line arguments into an array. */
- va_start (args, name);
-
i = 2;
argv = malloc (sizeof (char *) * i);
i = 2;
argv = malloc (sizeof (char *) * i);
+ if (argv == NULL) {
+ perror ("malloc");
+ return -1;
+ }
argv[0] = (char *) name;
argv[1] = NULL;
argv[0] = (char *) name;
argv[1] = NULL;
+ va_start (args, name);
+
while ((s = va_arg (args, char *)) != NULL) {
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;
}
argv[i-2] = s;
argv[i-1] = NULL;
}