aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-02-15 00:28:09 -0500
committerMike Frysinger <vapier@gentoo.org>2009-02-15 00:28:09 -0500
commit41621f114dcf879c45ae982c8c9796c4b050d4db (patch)
tree5c93506cd0920afbb866d9d9941e8ec35497039e /libsandbox
parentlibsandbox: simplify clean_env_entries a bit (diff)
downloadsandbox-41621f114dcf879c45ae982c8c9796c4b050d4db.tar.gz
sandbox-41621f114dcf879c45ae982c8c9796c4b050d4db.tar.bz2
sandbox-41621f114dcf879c45ae982c8c9796c4b050d4db.zip
libsandbox: make sure all mknod symbols are wrapped
The mknodat() symbol on glibc is rewritten to __xmknodat(), so we need to wrap that and check for all of them in the check_access() code. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'libsandbox')
-rw-r--r--libsandbox/libsandbox.c3
-rw-r--r--libsandbox/symbols.h.in1
-rw-r--r--libsandbox/wrapper-funcs/__xmknodat.c11
3 files changed, 15 insertions, 0 deletions
diff --git a/libsandbox/libsandbox.c b/libsandbox/libsandbox.c
index 77cb3f6..ffda996 100644
--- a/libsandbox/libsandbox.c
+++ b/libsandbox/libsandbox.c
@@ -561,7 +561,10 @@ static int check_access(sbcontext_t *sbcontext, int sb_nr, const char *func, con
sb_nr == SB_NR_CREAT64 ||
sb_nr == SB_NR_MKDIR ||
sb_nr == SB_NR_MKNOD ||
+ sb_nr == SB_NR_MKNODAT ||
+ sb_nr == SB_NR__XMKNOD ||
sb_nr == SB_NR___XMKNOD ||
+ sb_nr == SB_NR___XMKNODAT ||
sb_nr == SB_NR_MKFIFO ||
sb_nr == SB_NR_LINK ||
sb_nr == SB_NR_SYMLINK ||
diff --git a/libsandbox/symbols.h.in b/libsandbox/symbols.h.in
index ab79f17..deb7b60 100644
--- a/libsandbox/symbols.h.in
+++ b/libsandbox/symbols.h.in
@@ -24,6 +24,7 @@ mknod
mknodat
_xmknod
__xmknod
+__xmknodat
mkfifo
mkfifoat
access
diff --git a/libsandbox/wrapper-funcs/__xmknodat.c b/libsandbox/wrapper-funcs/__xmknodat.c
new file mode 100644
index 0000000..97e4689
--- /dev/null
+++ b/libsandbox/wrapper-funcs/__xmknodat.c
@@ -0,0 +1,11 @@
+/*
+ * __xmknodat() wrapper.
+ *
+ * Copyright 1999-2008 Gentoo Foundation
+ * Licensed under the GPL-2
+ */
+
+#define WRAPPER_ARGS_PROTO int ver, int dirfd, const char *pathname, mode_t mode, dev_t *dev
+#define WRAPPER_ARGS ver, dirfd, pathname, mode, dev
+#define WRAPPER_SAFE() FUNCTION_SANDBOX_SAFE(pathname)
+#include "__wrapper_simple.c"