It should not return 0 when SID 0 is assigned to isids.
This patch fixes it.
Fixes: e3e0b582c321a ("selinux: remove unused initial SIDs and improve handling")
Signed-off-by: Xiu Jianfeng <[email protected]>
---
security/selinux/ss/policydb.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c
index defc5ef35c66..ad1183e18ce0 100644
--- a/security/selinux/ss/policydb.c
+++ b/security/selinux/ss/policydb.c
@@ -884,6 +884,7 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s)
if (sid == SECSID_NULL) {
pr_err("SELinux: SID 0 was assigned a context.\n");
+ rc = -EINVAL;
sidtab_destroy(s);
goto out;
}
--
2.17.1
On Wed, Jul 28, 2021 at 2:30 AM Xiu Jianfeng <[email protected]> wrote:
>
> It should not return 0 when SID 0 is assigned to isids.
> This patch fixes it.
>
> Fixes: e3e0b582c321a ("selinux: remove unused initial SIDs and improve handling")
> Signed-off-by: Xiu Jianfeng <[email protected]>
> ---
> security/selinux/ss/policydb.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c
> index defc5ef35c66..ad1183e18ce0 100644
> --- a/security/selinux/ss/policydb.c
> +++ b/security/selinux/ss/policydb.c
> @@ -884,6 +884,7 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s)
>
> if (sid == SECSID_NULL) {
> pr_err("SELinux: SID 0 was assigned a context.\n");
> + rc = -EINVAL;
> sidtab_destroy(s);
> goto out;
> }
Hi Xiu Jianfeng,
Thanks for the patch, but since you are fixing the error handling in
policydb_load_isids(), would you mind respinning this patch to get rid
of the "out" label and just have all of the associated callers return
directly instead? I generally dislike jump targets that do nothing
else other than return a value; those 'goto X;' statements can easily
be converted into 'return Y;' statements.
Thanks.
--
paul moore
http://www.paul-moore.com
在 2021/7/28 23:56, Paul Moore 写道:
> On Wed, Jul 28, 2021 at 2:30 AM Xiu Jianfeng <[email protected]> wrote:
>> It should not return 0 when SID 0 is assigned to isids.
>> This patch fixes it.
>>
>> Fixes: e3e0b582c321a ("selinux: remove unused initial SIDs and improve handling")
>> Signed-off-by: Xiu Jianfeng <[email protected]>
>> ---
>> security/selinux/ss/policydb.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c
>> index defc5ef35c66..ad1183e18ce0 100644
>> --- a/security/selinux/ss/policydb.c
>> +++ b/security/selinux/ss/policydb.c
>> @@ -884,6 +884,7 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s)
>>
>> if (sid == SECSID_NULL) {
>> pr_err("SELinux: SID 0 was assigned a context.\n");
>> + rc = -EINVAL;
>> sidtab_destroy(s);
>> goto out;
>> }
> Hi Xiu Jianfeng,
>
> Thanks for the patch, but since you are fixing the error handling in
> policydb_load_isids(), would you mind respinning this patch to get rid
> of the "out" label and just have all of the associated callers return
> directly instead? I generally dislike jump targets that do nothing
> else other than return a value; those 'goto X;' statements can easily
> be converted into 'return Y;' statements.
no problem, please check the v2 patch.
>
> Thanks.
>