Author: jamie
Date: Tue Dec 15 17:25:00 2015
New Revision: 292277
URL: https://svnweb.freebsd.org/changeset/base/292277

Log:
  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
  MFC after:    3 days

Modified:
  head/sys/kern/kern_jail.c

Modified: head/sys/kern/kern_jail.c
==============================================================================
--- head/sys/kern/kern_jail.c   Tue Dec 15 16:04:45 2015        (r292276)
+++ head/sys/kern/kern_jail.c   Tue Dec 15 17:25:00 2015        (r292277)
@@ -1580,11 +1580,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)");
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to