Skip to content

Commit c54d481

Browse files
Navidemjrjohansen
authored andcommitted
apparmor: Fix use-after-free in aa_audit_rule_init
In the implementation of aa_audit_rule_init(), when aa_label_parse() fails the allocated memory for rule is released using aa_audit_rule_free(). But after this release, the return statement tries to access the label field of the rule which results in use-after-free. Before releasing the rule, copy errNo and return it after release. Fixes: 52e8c38 ("apparmor: Fix memory leak of rule on error exit path") Signed-off-by: Navid Emamdoost <[email protected]> Signed-off-by: John Johansen <[email protected]>
1 parent c6b39f0 commit c54d481

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

security/apparmor/audit.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,9 @@ int aa_audit_rule_init(u32 field, u32 op, char *rulestr, void **vrule)
197197
rule->label = aa_label_parse(&root_ns->unconfined->label, rulestr,
198198
GFP_KERNEL, true, false);
199199
if (IS_ERR(rule->label)) {
200+
int err = PTR_ERR(rule->label);
200201
aa_audit_rule_free(rule);
201-
return PTR_ERR(rule->label);
202+
return err;
202203
}
203204

204205
*vrule = rule;

0 commit comments

Comments
 (0)