Skip to content

Commit f1e9b99

Browse files
committed
checkpolicy: free avrule on error
Free the allocated avrule in define_te_avtab_xperms_helper() on failures. Also free the target classes ebitmap on allocation failure. Direct leak of 136 byte(s) in 1 object(s) allocated from: #0 0x49bb5d in __interceptor_malloc (./checkpolicy/checkpolicy+0x49bb5d) SELinuxProject#1 0x4e6eea in define_te_avtab_xperms_helper ./checkpolicy/policy_define.c:2041:24 SELinuxProject#2 0x4e6eea in define_te_avtab_extended_perms ./checkpolicy/policy_define.c:2487:6 SELinuxProject#3 0x4cef0b in yyparse ./checkpolicy/policy_parse.y:494:30 SELinuxProject#4 0x4e0575 in read_source_policy ./checkpolicy/parse_util.c:63:6 SELinuxProject#5 0x4ff121 in main ./checkpolicy/checkpolicy.c:616:7 SELinuxProject#6 0x7fe31628b7ec in __libc_start_main csu/../csu/libc-start.c:332:16 Indirect leak of 32 byte(s) in 1 object(s) allocated from: #0 0x4877b4 in strdup (./checkpolicy/checkpolicy+0x4877b4) SELinuxProject#1 0x4e6fa7 in define_te_avtab_xperms_helper ./checkpolicy/policy_define.c:2051:28 SELinuxProject#2 0x4e6fa7 in define_te_avtab_extended_perms ./checkpolicy/policy_define.c:2487:6 SELinuxProject#3 0x4cef0b in yyparse ./checkpolicy/policy_parse.y:494:30 SELinuxProject#4 0x4e0575 in read_source_policy ./checkpolicy/parse_util.c:63:6 SELinuxProject#5 0x4ff121 in main ./checkpolicy/checkpolicy.c:616:7 SELinuxProject#6 0x7fe31628b7ec in __libc_start_main csu/../csu/libc-start.c:332:16 Indirect leak of 24 byte(s) in 1 object(s) allocated from: #0 0x49bb5d in __interceptor_malloc (./checkpolicy/checkpolicy+0x49bb5d) SELinuxProject#1 0x50f2fa in ebitmap_set_bit ./libsepol/src/ebitmap.c:346:27 SELinuxProject#2 0x4eb632 in set_types ./checkpolicy/policy_define.c SELinuxProject#3 0x4e7055 in define_te_avtab_xperms_helper ./checkpolicy/policy_define.c:2059:7 SELinuxProject#4 0x4e7055 in define_te_avtab_extended_perms ./checkpolicy/policy_define.c:2487:6 SELinuxProject#5 0x4cef0b in yyparse ./checkpolicy/policy_parse.y:494:30 SELinuxProject#6 0x4e0575 in read_source_policy ./checkpolicy/parse_util.c:63:6 SELinuxProject#7 0x4ff121 in main ./checkpolicy/checkpolicy.c:616:7 SELinuxProject#8 0x7fe31628b7ec in __libc_start_main csu/../csu/libc-start.c:332:16 Signed-off-by: Christian Göttsche <[email protected]>
1 parent ec00141 commit f1e9b99

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

checkpolicy/policy_define.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2065,7 +2065,8 @@ static int define_te_avtab_xperms_helper(int which, avrule_t ** rule)
20652065
avrule->xperms = NULL;
20662066
if (!avrule->source_filename) {
20672067
yyerror("out of memory");
2068-
return -1;
2068+
ret = -1;
2069+
goto out;
20692070
}
20702071

20712072
while ((id = queue_remove(id_queue))) {
@@ -2126,6 +2127,7 @@ static int define_te_avtab_xperms_helper(int which, avrule_t ** rule)
21262127
if (!cur_perms) {
21272128
yyerror("out of memory");
21282129
ret = -1;
2130+
ebitmap_destroy(&tclasses);
21292131
goto out;
21302132
}
21312133
class_perm_node_init(cur_perms);
@@ -2165,7 +2167,11 @@ static int define_te_avtab_xperms_helper(int which, avrule_t ** rule)
21652167
avrule->perms = perms;
21662168
*rule = avrule;
21672169

2170+
return 0;
21682171
out:
2172+
avrule_destroy(avrule);
2173+
free(avrule);
2174+
21692175
return ret;
21702176
}
21712177

0 commit comments

Comments
 (0)