summaryrefslogtreecommitdiffstats
path: root/usr.sbin/jail/jail.c
diff options
context:
space:
mode:
authorjamie <jamie@FreeBSD.org>2010-10-27 16:35:23 +0000
committerjamie <jamie@FreeBSD.org>2010-10-27 16:35:23 +0000
commit3c30caa6545349f6810a60f536f3fa8aee2c52fc (patch)
treea3314f12e60935a69bfca5bd2d673dad5d7f40e9 /usr.sbin/jail/jail.c
parent235aefe21957ecc7c526a419943418bbb1248f11 (diff)
downloadFreeBSD-src-3c30caa6545349f6810a60f536f3fa8aee2c52fc.zip
FreeBSD-src-3c30caa6545349f6810a60f536f3fa8aee2c52fc.tar.gz
Don't assume either jid or name is set - they may not be from the
command line.
Diffstat (limited to 'usr.sbin/jail/jail.c')
-rw-r--r--usr.sbin/jail/jail.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/usr.sbin/jail/jail.c b/usr.sbin/jail/jail.c
index 1ea88f9..bea0322 100644
--- a/usr.sbin/jail/jail.c
+++ b/usr.sbin/jail/jail.c
@@ -891,8 +891,7 @@ running_jid(struct cfjail *j, int dflag)
char *ep;
int jid;
- pval = string_param(j->intparams[KP_JID]);
- if (pval != NULL) {
+ if ((pval = string_param(j->intparams[KP_JID]))) {
if (!(jid = strtol(pval, &ep, 10)) || *ep) {
j->jid = -1;
return;
@@ -901,13 +900,15 @@ running_jid(struct cfjail *j, int dflag)
jiov[0].iov_len = sizeof("jid");
jiov[1].iov_base = &jid;
jiov[1].iov_len = sizeof(jid);
- } else {
- pval = string_param(j->intparams[KP_NAME]);
+ } else if ((pval = string_param(j->intparams[KP_NAME]))) {
*(const void **)&jiov[0].iov_base = "name";
jiov[0].iov_len = sizeof("name");
jiov[1].iov_len = strlen(pval) + 1;
jiov[1].iov_base = alloca(jiov[1].iov_len);
strcpy(jiov[1].iov_base, pval);
+ } else {
+ j->jid = -1;
+ return;
}
j->jid = jail_get(jiov, 2, dflag ? JAIL_DYING : 0);
}
OpenPOWER on IntegriCloud