summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_jail.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c
index af5feb3..42c53c0 100644
--- a/sys/kern/kern_jail.c
+++ b/sys/kern/kern_jail.c
@@ -1585,11 +1585,14 @@ kern_jail_set(struct thread *td, struct uio *optuio, int flags)
#endif
onamelen = namelen = 0;
if (name != NULL) {
- /* Give a default name of the jid. */
+ /* Give a default name of the jid. Also allow the name to be
+ * explicitly the jid - but not any other number, and only in
+ * normal form (no leading zero/etc).
+ */
if (name[0] == '\0')
snprintf(name = numbuf, sizeof(numbuf), "%d", jid);
- else if (*namelc == '0' || (strtoul(namelc, &p, 10) != jid &&
- *p == '\0')) {
+ else if ((strtoul(namelc, &p, 10) != jid ||
+ namelc[0] < '1' || namelc[0] > '9') && *p == '\0') {
error = EINVAL;
vfs_opterror(opts,
"name cannot be numeric (unless it is the jid)");
OpenPOWER on IntegriCloud