git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added 'fsck' command.
[libguestfs.git]
/
daemon
/
guestfsd.c
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;
}