summaryrefslogtreecommitdiffstats
path: root/daemon
diff options
context:
space:
mode:
authorRichard Jones <rjones@trick.home.annexia.org>2009-06-22 12:40:57 +0100
committerRichard Jones <rjones@trick.home.annexia.org>2009-06-22 12:40:57 +0100
commit3dfc0a8c5da8f3a4a6c13e936d4306b79b231dde (patch)
tree83f42445cf4cc17dfcd42be4fda15396bfdd4f15 /daemon
parent7c2e6fd3e98840c91b0bac8e13e2eb564810ba04 (diff)
downloadlibguestfs-3dfc0a8c5da8f3a4a6c13e936d4306b79b231dde.tar.gz
libguestfs-3dfc0a8c5da8f3a4a6c13e936d4306b79b231dde.tar.xz
libguestfs-3dfc0a8c5da8f3a4a6c13e936d4306b79b231dde.zip
Make CHROOT_IN/OUT macros should loudly if the syscall fails.
Diffstat (limited to 'daemon')
-rw-r--r--daemon/daemon.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/daemon/daemon.h b/daemon/daemon.h
index 115db093..70f0beef 100644
--- a/daemon/daemon.h
+++ b/daemon/daemon.h
@@ -162,11 +162,22 @@ extern void reply (xdrproc_t xdrp, char *ret);
* (2) You must not change directory! cwd must always be "/", otherwise
* we can't escape our own chroot.
* (3) All paths specified must be absolute.
- * (4) CHROOT_OUT does not affect errno.
+ * (4) Neither macro affects errno.
*/
-#define CHROOT_IN chroot ("/sysroot");
-#define CHROOT_OUT \
- do { int old_errno = errno; chroot ("."); errno = old_errno; } while (0)
+#define CHROOT_IN \
+ do { \
+ int __old_errno = errno; \
+ if (chroot ("/sysroot") == -1) \
+ perror ("CHROOT_IN: sysroot"); \
+ errno = __old_errno; \
+ } while (0)
+#define CHROOT_OUT \
+ do { \
+ int __old_errno = errno; \
+ if (chroot (".") == -1) \
+ perror ("CHROOT_OUT: ."); \
+ errno = __old_errno; \
+ } while (0)
/* Marks functions which are not implemented.
* NB. Cannot be used for FileIn functions.