Skip to content

Commit 1352c61

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 7f2e272 commit 1352c61

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
@@ -2064,7 +2064,8 @@ static int define_te_avtab_xperms_helper(int which, avrule_t ** rule)
20642064
avrule->xperms = NULL;
20652065
if (!avrule->source_filename) {
20662066
yyerror("out of memory");
2067-
return -1;
2067+
ret = -1;
2068+
goto out;
20682069
}
20692070

20702071
while ((id = queue_remove(id_queue))) {
@@ -2125,6 +2126,7 @@ static int define_te_avtab_xperms_helper(int which, avrule_t ** rule)
21252126
if (!cur_perms) {
21262127
yyerror("out of memory");
21272128
ret = -1;
2129+
ebitmap_destroy(&tclasses);
21282130
goto out;
21292131
}
21302132
class_perm_node_init(cur_perms);
@@ -2164,7 +2166,11 @@ static int define_te_avtab_xperms_helper(int which, avrule_t ** rule)
21642166
avrule->perms = perms;
21652167
*rule = avrule;
21662168

2169+
return 0;
21672170
out:
2171+
avrule_destroy(avrule);
2172+
free(avrule);
2173+
21682174
return ret;
21692175
}
21702176

0 commit comments

Comments
 (0)