checkpolicy: resolve dismod memory leaks
Example leak: Indirect leak of 4 byte(s) in 1 object(s) allocated from: #0 0x49bacd in __interceptor_malloc (./checkpolicy/test/dismod+0x49bacd) #1 0x58ae54 in add_i_to_a ./libsepol/src/util.c:55:21 #2 0x53ea8e in symtab_insert ./libsepol/src/policydb.c:1729:6 #3 0x536252 in roles_init ./libsepol/src/policydb.c:772:7 #4 0x536252 in policydb_init ./libsepol/src/policydb.c:892:7 #5 0x562ff1 in sepol_policydb_create ./libsepol/src/policydb_public.c:69:6 #6 0x521a7c in module_package_init ./libsepol/src/module.c:96:6 #7 0x521a7c in sepol_module_package_create ./libsepol/src/module.c:126:7 #8 0x4cfb80 in read_policy ./checkpolicy/test/dismod.c:750:7 #9 0x4cda10 in main ./checkpolicy/test/dismod.c:878:6 #10 0x7f8538d01e49 in __libc_start_main csu/../csu/libc-start.c:314:16 Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
This commit is contained in:
parent
e6bab7bf45
commit
16d7dde41c
|
@ -751,12 +751,14 @@ static int read_policy(char *filename, policydb_t * policy)
|
||||||
fprintf(stderr, "%s: Out of memory!\n", __FUNCTION__);
|
fprintf(stderr, "%s: Out of memory!\n", __FUNCTION__);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
sepol_policydb_free(package->policy);
|
||||||
package->policy = (sepol_policydb_t *) policy;
|
package->policy = (sepol_policydb_t *) policy;
|
||||||
package->file_contexts = NULL;
|
package->file_contexts = NULL;
|
||||||
retval =
|
retval =
|
||||||
sepol_module_package_read(package,
|
sepol_module_package_read(package,
|
||||||
(sepol_policy_file_t *) & f, 1);
|
(sepol_policy_file_t *) & f, 1);
|
||||||
free(package->file_contexts);
|
package->policy = NULL;
|
||||||
|
sepol_module_package_free(package);
|
||||||
} else {
|
} else {
|
||||||
if (policydb_init(policy)) {
|
if (policydb_init(policy)) {
|
||||||
fprintf(stderr, "%s: Out of memory!\n", __FUNCTION__);
|
fprintf(stderr, "%s: Out of memory!\n", __FUNCTION__);
|
||||||
|
|
Loading…
Reference in New Issue