X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fcommand.c;h=f7a6dcf6d805df431b67e23bf0822e36e9ddfd04;hb=6bda071b5cd8393b37653687027c4ae6c6cf3804;hp=32615137fada79f99e0087380209e3f4b76cbb7d;hpb=2361905686c62b4163232139c3d390acd2c07916;p=libguestfs.git diff --git a/daemon/command.c b/daemon/command.c index 3261513..f7a6dcf 100644 --- a/daemon/command.c +++ b/daemon/command.c @@ -36,7 +36,7 @@ do_command (char **argv) int dev_ok, dev_pts_ok, proc_ok, selinux_ok, sys_ok; /* We need a root filesystem mounted to do this. */ - NEED_ROOT (NULL); + NEED_ROOT (return NULL); /* Conveniently, argv is already a NULL-terminated argv-style array * of parameters, so we can pass it straight in to our internal @@ -61,6 +61,18 @@ do_command (char **argv) sysroot_selinux = sysroot_path ("/selinux"); sysroot_sys = sysroot_path ("/sys"); + if (sysroot_dev == NULL || sysroot_dev_pts == NULL || + sysroot_proc == NULL || sysroot_selinux == NULL || + sysroot_sys == NULL) { + reply_with_perror ("malloc"); + free (sysroot_dev); + free (sysroot_dev_pts); + free (sysroot_proc); + free (sysroot_selinux); + free (sysroot_sys); + return NULL; + } + r = command (NULL, NULL, "mount", "--bind", "/dev", sysroot_dev, NULL); dev_ok = r != -1; r = command (NULL, NULL, "mount", "--bind", "/dev/pts", sysroot_dev_pts, NULL);