diff options
author | jamie <jamie@FreeBSD.org> | 2010-10-27 16:35:23 +0000 |
---|---|---|
committer | jamie <jamie@FreeBSD.org> | 2010-10-27 16:35:23 +0000 |
commit | 3c30caa6545349f6810a60f536f3fa8aee2c52fc (patch) | |
tree | a3314f12e60935a69bfca5bd2d673dad5d7f40e9 /usr.sbin | |
parent | 235aefe21957ecc7c526a419943418bbb1248f11 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | usr.sbin/jail/jail.c | 9 |
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); } |