selinux: use separate table for initial SID lookup
This moves handling of initial SIDs into a separate table. Note that the SIDs stored in the main table are now shifted by SECINITSID_NUM and converted to/from the actual SIDs transparently by helper functions. This change doesn't make much sense on its own, but it simplifies further sidtab overhaul in a succeeding patch. Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com> Reviewed-by: Stephen Smalley <sds@tycho.nsa.gov> [PM: fixed some checkpatch warnings on line length, whitespace] Signed-off-by: Paul Moore <paul@paul-moore.com>
这个提交包含在:
@@ -909,13 +909,21 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s)
|
||||
if (!c->context[0].user) {
|
||||
pr_err("SELinux: SID %s was never defined.\n",
|
||||
c->u.name);
|
||||
sidtab_destroy(s);
|
||||
goto out;
|
||||
}
|
||||
if (c->sid[0] == SECSID_NULL || c->sid[0] > SECINITSID_NUM) {
|
||||
pr_err("SELinux: Initial SID %s out of range.\n",
|
||||
c->u.name);
|
||||
sidtab_destroy(s);
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = sidtab_insert(s, c->sid[0], &c->context[0]);
|
||||
rc = sidtab_set_initial(s, c->sid[0], &c->context[0]);
|
||||
if (rc) {
|
||||
pr_err("SELinux: unable to load initial SID %s.\n",
|
||||
c->u.name);
|
||||
sidtab_destroy(s);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户