git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New API calls: truncate, truncate_size, mkdir_mode, utimens, lchown.
[libguestfs.git]
/
daemon
/
mount.c
diff --git
a/daemon/mount.c
b/daemon/mount.c
index
4f74c02
..
463e789
100644
(file)
--- a/
daemon/mount.c
+++ b/
daemon/mount.c
@@
-48,6
+48,8
@@
do_mount_vfs (const char *options, const char *vfstype,
char *mp;
char *error;
char *mp;
char *error;
+ ABS_PATH (mountpoint, return -1);
+
is_root = strcmp (mountpoint, "/") == 0;
if (!root_mounted && !is_root) {
is_root = strcmp (mountpoint, "/") == 0;
if (!root_mounted && !is_root) {
@@
-107,15
+109,20
@@
do_umount (const char *pathordevice)
{
int r;
char *err;
{
int r;
char *err;
+ char *buf;
+ int is_dev;
- char *buf = (strncmp (pathordevice, "/dev/", 5) == 0
-
? strdup (pathordevice)
- : sysroot_path (pathordevice)
)
;
+ is_dev = strncmp (pathordevice, "/dev/", 5) == 0;
+
buf = is_dev
? strdup (pathordevice)
+ : sysroot_path (pathordevice);
if (buf == NULL) {
reply_with_perror ("malloc");
return -1;
}
if (buf == NULL) {
reply_with_perror ("malloc");
return -1;
}
+ if (is_dev)
+ RESOLVE_DEVICE (buf, { free (buf); return -1; });
+
r = command (NULL, &err, "umount", buf, NULL);
free (buf);
r = command (NULL, &err, "umount", buf, NULL);
free (buf);
@@
-373,6
+380,9
@@
do_rmmountpoint (const char *path)
{
int r;
{
int r;
+ /* NEED_ROOT (return -1); - we don't want this test for this call. */
+ ABS_PATH (path, return -1);
+
CHROOT_IN;
r = rmdir (path);
CHROOT_OUT;
CHROOT_IN;
r = rmdir (path);
CHROOT_OUT;