summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorClark Williams <williams@redhat.com>2007-06-11 16:00:06 -0500
committerClark Williams <williams@redhat.com>2007-06-11 16:00:06 -0500
commit7ffaacde740bb073f0c7564ab3baa37615f4b58e (patch)
tree9a0a6ad24a241344a44b0117ba2efdebdc569724 /src
parentb44556b827bf9e95db8025351380ddb54388fb26 (diff)
downloadmock-7ffaacde740bb073f0c7564ab3baa37615f4b58e.tar.gz
mock-7ffaacde740bb073f0c7564ab3baa37615f4b58e.tar.xz
mock-7ffaacde740bb073f0c7564ab3baa37615f4b58e.zip
merged mock-helper from mock-0-6-branch
Diffstat (limited to 'src')
-rw-r--r--src/mock-helper.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mock-helper.c b/src/mock-helper.c
index 4b28061..0393d31 100644
--- a/src/mock-helper.c
+++ b/src/mock-helper.c
@@ -145,11 +145,12 @@ do_command (const char *filename, char *const argv[], int use_selinux_preload)
[1] = "HOME=/root"
};
int retval;
- char **arg;
+ //char **arg;
size_t idx=2;
size_t i;
- char *envvar;
+#ifdef USE_SELINUX
char *ld_preload;
+#endif
/* elevate privileges */
setreuid (geteuid (), geteuid ());
@@ -218,21 +219,25 @@ do_mount (int argc, char *argv[])
/* see if it's -t proc or -t devpts */
if ((strncmp ("-t", argv[2], 2) == 0) &&
- (strncmp ("proc", argv[3], 4) == 0))
- {
+ (strncmp ("proc", argv[3], 4) == 0)) {
/* see if we're mounting proc to somewhere in rootsdir */
if (strncmp (rootsdir, argv[5], strlen (rootsdir)) != 0)
error ("proc: mount not allowed on %s", argv[5]);
}
else if ((strncmp ("-t", argv[2], 2) == 0) &&
- (strncmp ("devpts", argv[3], 6) == 0))
- {
+ (strncmp ("devpts", argv[3], 6) == 0)) {
if (argc < 5)
error ("devpts: not enough mount arguments");
/* see if we're mounting devpts to somewhere in rootsdir */
else if (strncmp (rootsdir, argv[5], strlen (rootsdir)) != 0)
error ("devpts: mount not allowed on %s", argv[5]);
}
+ else if ((strncmp("--bind", argv[2], 6) == 0) &&
+ (strncmp("/dev", argv[3], 4) == 0)) {
+ /* make sure we're only mounting /dev in the chroot */
+ if (strncmp(rootsdir, argv[4], strlen(rootsdir)) != 0)
+ error("can only bindmount /dev in chroot");
+ }
else
error ("unallowed mount type");