svn commit: r348538 - stable/12/lib/libjail
Kyle Evans
kevans at FreeBSD.org
Mon Jun 3 15:28:38 UTC 2019
Author: kevans
Date: Mon Jun 3 15:28:37 2019
New Revision: 348538
URL: https://svnweb.freebsd.org/changeset/base/348538
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 (early MFC)
Modified:
stable/12/lib/libjail/jail_getid.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/lib/libjail/jail_getid.c
==============================================================================
--- stable/12/lib/libjail/jail_getid.c Mon Jun 3 15:25:12 2019 (r348537)
+++ stable/12/lib/libjail/jail_getid.c Mon Jun 3 15:28:37 2019 (r348538)
@@ -54,6 +54,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;
More information about the svn-src-stable-12
mailing list