summaryrefslogtreecommitdiffstats
path: root/usr.sbin/jail/command.c
diff options
context:
space:
mode:
authorjamie <jamie@FreeBSD.org>2012-02-27 22:37:35 +0000
committerjamie <jamie@FreeBSD.org>2012-02-27 22:37:35 +0000
commit6fe59c6c06d9b42a052d1fb76fdbd3237ffba98e (patch)
tree90dfaafdc1a8e275adbb456494f3f02df99d94c7 /usr.sbin/jail/command.c
parentce34112a7dc2c5d7092d69bc27eac385caeae9cd (diff)
downloadFreeBSD-src-6fe59c6c06d9b42a052d1fb76fdbd3237ffba98e.zip
FreeBSD-src-6fe59c6c06d9b42a052d1fb76fdbd3237ffba98e.tar.gz
Use the defvs_ruleset paramater when mounting a jail's /dev,
instead of a mount.devfs.ruleset pseudo-parameter.
Diffstat (limited to 'usr.sbin/jail/command.c')
-rw-r--r--usr.sbin/jail/command.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/usr.sbin/jail/command.c b/usr.sbin/jail/command.c
index 10ff3e2..1c17da0 100644
--- a/usr.sbin/jail/command.c
+++ b/usr.sbin/jail/command.c
@@ -417,6 +417,7 @@ run_command(struct cfjail *j)
break;
case IP_MOUNT_DEVFS:
+ argv = alloca(7 * sizeof(char *));
path = string_param(j->intparams[KP_PATH]);
if (path == NULL) {
jail_warnx(j, "mount.devfs: no path");
@@ -428,22 +429,21 @@ run_command(struct cfjail *j)
down ? "devfs" : NULL) < 0)
return -1;
if (down) {
- argv = alloca(3 * sizeof(char *));
*(const char **)&argv[0] = "/sbin/umount";
argv[1] = devpath;
argv[2] = NULL;
} else {
- argv = alloca(4 * sizeof(char *));
- *(const char **)&argv[0] = _PATH_BSHELL;
- *(const char **)&argv[1] = "-c";
- ruleset = string_param(j->intparams
- [IP_MOUNT_DEVFS_RULESET]);
- argv[2] = alloca(strlen(path) +
- (ruleset ? strlen(ruleset) + 1 : 0) + 56);
- sprintf(argv[2], ". /etc/rc.subr; load_rc_config .; "
- "devfs_mount_jail %s/dev%s%s", path,
- ruleset ? " " : "", ruleset ? ruleset : "");
- argv[3] = NULL;
+ *(const char **)&argv[0] = _PATH_MOUNT;
+ *(const char **)&argv[1] = "-t";
+ *(const char **)&argv[2] = "devfs";
+ ruleset = string_param(j->intparams[KP_DEVFS_RULESET]);
+ if (!ruleset)
+ ruleset = "4"; /* devfsrules_jail */
+ argv[3] = alloca(11 + strlen(ruleset));
+ sprintf(argv[3], "-oruleset=%s", ruleset);
+ *(const char **)&argv[4] = ".";
+ argv[5] = devpath;
+ argv[6] = NULL;
}
break;
OpenPOWER on IntegriCloud