From 08020dbe3125e936429e7966bf072e08fa964f36 Mon Sep 17 00:00:00 2001 From: Massimiliano Pellizzer Date: Tue, 10 Feb 2026 18:15:38 +0100 Subject: [PATCH] apparmor: fix signedness bug in unpack_tags() Smatch static checker warning: security/apparmor/policy_unpack.c:966 unpack_pdb() warn: unsigned 'unpack_tags(e, &pdb->tags, info)' is never less than zero. unpack_tags() is declared with return type size_t (unsigned) but returns negative errno values on failure. The caller in unpack_pdb() tests the return with `< 0`, which is always false for an unsigned type, making error handling dead code. Malformed tag data would be silently accepted instead of causing a load failure. Change return type of unpack_tags() from size_t to int to match the functions's actual semantic. Fixes: 3d28e2397af7 ("apparmor: add support loading per permission tagging") Reported-by: Dan Carpenter Signed-off-by: Massimiliano Pellizzer Signed-off-by: John Johansen --- security/apparmor/policy_unpack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/apparmor/policy_unpack.c b/security/apparmor/policy_unpack.c index e68adf39771f..dc908e1f5a88 100644 --- a/security/apparmor/policy_unpack.c +++ b/security/apparmor/policy_unpack.c @@ -835,7 +835,7 @@ fail_reset: } -static size_t unpack_tags(struct aa_ext *e, struct aa_tags_struct *tags, +static int unpack_tags(struct aa_ext *e, struct aa_tags_struct *tags, const char **info) { int error = -EPROTO;