[apparmor] [PATCH] apparmor: return -ENOMEM in unpack_perms_tableupon alloc failure
John Johansen
john.johansen at canonical.com
Sun Jan 18 07:53:40 UTC 2026
On 1/14/26 09:42, Zygmunt Krynicki wrote:
> W dniu 13.01.2026 o 18:35 Ryan Lee pisze:
>> In policy_unpack.c:unpack_perms_table, the perms struct is allocated via
>> kcalloc, with the position being reset if the allocation fails. However,
>> the error path results in -EPROTO being retured instead of -ENOMEM. Fix
>> this to return the correct error code.
>>
>> Reported-by: Zygmunt Krynicki <zygmunt.krynicki at canonical.com>
>> Fixes: fd1b2b95a2117 ("apparmor: add the ability for policy to specify
>> a permission table")
>> Signed-off-by: Ryan Lee <ryan.lee at canonical.com>
>> ---
>> security/apparmor/policy_unpack.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/security/apparmor/policy_unpack.c
>> b/security/apparmor/policy_unpack.c
>> index 019430225e4a..2280a8f7a843 100644
>> --- a/security/apparmor/policy_unpack.c
>> +++ b/security/apparmor/policy_unpack.c
>> @@ -700,8 +700,10 @@ static ssize_t unpack_perms_table(struct aa_ext
>> *e, struct aa_perms **perms)
>> if (!aa_unpack_array(e, NULL, &size))
>> goto fail_reset;
>> *perms = kcalloc(size, sizeof(struct aa_perms), GFP_KERNEL);
>> - if (!*perms)
>> - goto fail_reset;
>> + if (!*perms) {
>> + e->pos = pos;
>> + return -ENOMEM;
>> + }
>> for (i = 0; i < size; i++) {
>> if (!unpack_perm(e, version, &(*perms)[i]))
>> goto fail;
>> --
>> 2.43.0
>
> This looks good.
>
> I'm unfamiliar with kernel acked protocol so I'll refrain from that.
>
Essentially here, since you reviewed the patch you could add a
Reviewed-by: Zygmunt Krynicki <me at zygoon.pl>
like Tyler did.
You can find the tag descriptions in
Documentation/process/5.Posting.rst
search for "tags in common"
More information about the AppArmor
mailing list