linux_dsm_epyc7002/security/selinux/ss
Jann Horn 95ffe19420 selinux: refactor mls_context_to_sid() and make it stricter
The intended behavior change for this patch is to reject any MLS strings
that contain (trailing) garbage if p->mls_enabled is true.

As suggested by Paul Moore, change mls_context_to_sid() so that the two
parts of the range are extracted before the rest of the parsing. Because
now we don't have to scan for two different separators simultaneously
everywhere, we can actually switch to strchr() everywhere instead of the
open-coded loops that scan for two separators at once.

mls_context_to_sid() used to signal how much of the input string was parsed
by updating `*scontext`. However, there is actually no case in which
mls_context_to_sid() only parses a subset of the input and still returns
a success (other than the buggy case with a second '-' in which it
incorrectly claims to have consumed the entire string). Turn `scontext`
into a simple pointer argument and stop redundantly checking whether the
entire input was consumed in string_to_context_struct(). This also lets us
remove the `scontext_len` argument from `string_to_context_struct()`.

Signed-off-by: Jann Horn <jannh@google.com>
[PM: minor merge fuzz in convert_context()]
Signed-off-by: Paul Moore <paul@paul-moore.com>
2018-09-05 17:47:09 -04:00
..
avtab.c selinux: Cleanup printk logging in avtab 2018-06-19 13:00:48 -04:00
avtab.h selinux: wrap global selinux state 2018-03-01 18:48:02 -05:00
conditional.c selinux: Cleanup printk logging in conditional 2018-06-19 11:39:12 -04:00
conditional.h selinux: extended permissions for ioctls 2015-07-13 13:31:58 -04:00
constraint.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
context.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ebitmap.c selinux: Cleanup printk logging in ebitmap 2018-06-19 11:47:46 -04:00
ebitmap.h selinux: wrap global selinux state 2018-03-01 18:48:02 -05:00
hashtab.c selinux: wrap global selinux state 2018-03-01 18:48:02 -05:00
hashtab.h selinux: wrap global selinux state 2018-03-01 18:48:02 -05:00
mls_types.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mls.c selinux: refactor mls_context_to_sid() and make it stricter 2018-09-05 17:47:09 -04:00
mls.h selinux: refactor mls_context_to_sid() and make it stricter 2018-09-05 17:47:09 -04:00
policydb.c selinux: Cleanup printk logging in policydb 2018-06-19 12:38:48 -04:00
policydb.h selinux: update my email address 2017-08-17 15:32:55 -04:00
services.c selinux: refactor mls_context_to_sid() and make it stricter 2018-09-05 17:47:09 -04:00
services.h selinux: wrap global selinux state 2018-03-01 18:48:02 -05:00
sidtab.c selinux: Cleanup printk logging in sidtab 2018-06-19 13:37:58 -04:00
sidtab.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
status.c selinux: rename the {is,set}_enforcing() functions 2018-03-02 14:18:55 -05:00
symtab.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
symtab.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00