Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Dec 2015 00:33:04 +0000 (UTC)
From:      Jamie Gritton <jamie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r292416 - stable/10/sys/kern
Message-ID:  <201512180033.tBI0X4NM061518@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jamie
Date: Fri Dec 18 00:33:04 2015
New Revision: 292416
URL: https://svnweb.freebsd.org/changeset/base/292416

Log:
  MFC r292277:
  
    Fix jail name checking that disallowed anything that starts with '0'.
    The intention was to just limit leading zeroes on numeric names.  That
    check is now improved to also catch the leading spaces and '+' that
    strtoul can pass through.
  
  PR:		204897

Modified:
  stable/10/sys/kern/kern_jail.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/kern/kern_jail.c
==============================================================================
--- stable/10/sys/kern/kern_jail.c	Fri Dec 18 00:33:03 2015	(r292415)
+++ stable/10/sys/kern/kern_jail.c	Fri Dec 18 00:33:04 2015	(r292416)
@@ -1585,11 +1585,14 @@ kern_jail_set(struct thread *td, struct 
 #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)");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201512180033.tBI0X4NM061518>