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. Reported by: Stefan Hegnauer <stefan.hegnauer gmx ch> MFC after: soon (regression, breaks inspecting jail host bits, partial revert)
This commit is contained in:
parent
71259635f7
commit
067498ed56
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user