Author: kevans
Date: Mon Jun  3 16:47:51 2019
New Revision: 348546
URL: https://svnweb.freebsd.org/changeset/base/348546

Log:
  MFC r348509: jail_getid(3): add special-case immediate return for jid 0
  
  As depicted in the comment: jid 0 always exists, but the lookup will fail as
  it does not appear in the kernel's alljails list being a special jail. Some
  callers will expect/rely on this, and we have no reason to lie because it
  does always exist.
  
  Approved by:  re (gjb)

Modified:
  stable/11/lib/libjail/jail_getid.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/lib/libjail/jail_getid.c
==============================================================================
--- stable/11/lib/libjail/jail_getid.c  Mon Jun  3 16:47:00 2019        
(r348545)
+++ stable/11/lib/libjail/jail_getid.c  Mon Jun  3 16:47:51 2019        
(r348546)
@@ -52,6 +52,15 @@ jail_getid(const char *name)
 
        jid = strtoul(name, &ep, 10);
        if (*name && !*ep) {
+               /*
+                * jid == 0 is a special case; it will not appear in the
+                * kernel's jail list, but naturally processes will be assigned
+                * to it because it is prison 0.  Trivially return this one
+                * without a trip to the kernel, because it always exists but
+                * the lookup won't succeed.
+                */
+               if (jid == 0)
+                       return jid;
                jiov[0].iov_base = __DECONST(char *, "jid");
                jiov[0].iov_len = sizeof("jid");
                jiov[1].iov_base = &jid;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to