/* libguestfs - the guestfsd daemon
- * Copyright (C) 2009 Red Hat Inc.
+ * Copyright (C) 2009 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
FILE *fp;
char **res = NULL;
int size = 0, alloc = 0;
- char sysrootdir[PATH_MAX];
+ char *sysrootdir;
char str[PATH_MAX];
NEED_ROOT (NULL);
ABS_PATH (dir, NULL);
- snprintf (sysrootdir, sizeof sysrootdir, "/sysroot%s", dir);
+ sysrootdir = sysroot_path (dir);
+ if (!sysrootdir) {
+ reply_with_perror ("malloc");
+ return NULL;
+ }
r = stat (sysrootdir, &statbuf);
if (r == -1) {
reply_with_perror ("%s", dir);
+ free (sysrootdir);
return NULL;
}
if (!S_ISDIR (statbuf.st_mode)) {
reply_with_error ("%s: not a directory", dir);
+ free (sysrootdir);
return NULL;
}
cmd = malloc (len);
if (!cmd) {
reply_with_perror ("malloc");
+ free (sysrootdir);
return NULL;
}
strcpy (cmd, "find ");
shell_quote (cmd+5, len-5, sysrootdir);
+ free (sysrootdir);
strcat (cmd, " -print0");
if (verbose)
return NULL;
}
}
- pclose (fp);
+ if (pclose (fp) != 0) {
+ reply_with_perror ("pclose: find");
+ free_stringslen (res, size);
+ return NULL;
+ }
if (r == -1) {
free_stringslen (res, size);