libsemanage/tests: free memory

Free all memory in test cases, reported by LeakSanitizer.

Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
This commit is contained in:
Christian Göttsche 2021-10-19 17:11:23 +02:00 committed by Nicolas Iooss
parent ea539017fb
commit fe01a91a79
No known key found for this signature in database
GPG Key ID: C191415F340DAAA0
10 changed files with 183 additions and 3 deletions

View File

@ -132,6 +132,8 @@ semanage_bool_t *get_bool_nth(int idx)
if (i != (unsigned int) idx) if (i != (unsigned int) idx)
semanage_bool_free(records[i]); semanage_bool_free(records[i]);
free(records);
return boolean; return boolean;
} }
@ -163,6 +165,8 @@ semanage_bool_key_t *get_bool_key_nth(int idx)
CU_ASSERT_FATAL(res >= 0); CU_ASSERT_FATAL(res >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
semanage_bool_free(boolean);
return key; return key;
} }
@ -196,6 +200,9 @@ void add_local_bool(const char *name)
CU_ASSERT_PTR_NOT_NULL_FATAL(boolean); CU_ASSERT_PTR_NOT_NULL_FATAL(boolean);
CU_ASSERT_FATAL(semanage_bool_modify_local(sh, key, boolean) >= 0); CU_ASSERT_FATAL(semanage_bool_modify_local(sh, key, boolean) >= 0);
semanage_bool_key_free(key);
semanage_bool_free(boolean);
} }
void delete_local_bool(const char *name) void delete_local_bool(const char *name)
@ -208,6 +215,8 @@ void delete_local_bool(const char *name)
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
CU_ASSERT_FATAL(semanage_bool_del_local(sh, key) >= 0); CU_ASSERT_FATAL(semanage_bool_del_local(sh, key) >= 0);
semanage_bool_key_free(key);
} }
/* Function bool_key_create */ /* Function bool_key_create */
@ -447,6 +456,8 @@ void helper_bool_create(level_t level)
CU_ASSERT_PTR_NULL(semanage_bool_get_name(boolean)); CU_ASSERT_PTR_NULL(semanage_bool_get_name(boolean));
CU_ASSERT(semanage_bool_get_value(boolean) == 0); CU_ASSERT(semanage_bool_get_value(boolean) == 0);
semanage_bool_free(boolean);
cleanup_handle(level); cleanup_handle(level);
} }
@ -483,6 +494,9 @@ void helper_bool_clone(level_t level, int bool_idx)
CU_ASSERT_EQUAL(val, val_clone); CU_ASSERT_EQUAL(val, val_clone);
semanage_bool_free(boolean_clone);
semanage_bool_free(boolean);
cleanup_handle(level); cleanup_handle(level);
} }
@ -514,6 +528,9 @@ void helper_bool_query(level_t level, const char *bool_str, int exp_res)
CU_ASSERT_PTR_NULL(resp); CU_ASSERT_PTR_NULL(resp);
} }
semanage_bool_free(resp);
semanage_bool_key_free(key);
cleanup_handle(level); cleanup_handle(level);
} }
@ -647,6 +664,8 @@ void helper_bool_list(level_t level)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_bool_free(records[i]); semanage_bool_free(records[i]);
free(records);
cleanup_handle(level); cleanup_handle(level);
} }
@ -662,7 +681,7 @@ void helper_bool_modify_del_local(level_t level, const char *name,
int old_val, int exp_res) int old_val, int exp_res)
{ {
semanage_bool_t *boolean; semanage_bool_t *boolean;
semanage_bool_t *boolean_local; semanage_bool_t *boolean_local = NULL;
semanage_bool_key_t *key = NULL; semanage_bool_key_t *key = NULL;
int res; int res;
int new_val; int new_val;
@ -696,6 +715,8 @@ void helper_bool_modify_del_local(level_t level, const char *name,
CU_ASSERT(semanage_bool_query_local(sh, key, CU_ASSERT(semanage_bool_query_local(sh, key,
&boolean_local) >= 0); &boolean_local) >= 0);
CU_ASSERT(semanage_bool_compare2(boolean_local, boolean) == 0); CU_ASSERT(semanage_bool_compare2(boolean_local, boolean) == 0);
semanage_bool_free(boolean_local);
CU_ASSERT(semanage_bool_del_local(sh, key) >= 0); CU_ASSERT(semanage_bool_del_local(sh, key) >= 0);
CU_ASSERT(semanage_bool_query_local(sh, key, CU_ASSERT(semanage_bool_query_local(sh, key,
&boolean_local) < 0); &boolean_local) < 0);
@ -734,15 +755,18 @@ void test_bool_query_local(void)
/* transaction */ /* transaction */
setup_handle(SH_TRANS); setup_handle(SH_TRANS);
semanage_bool_key_free(key);
CU_ASSERT(semanage_bool_key_create(sh, BOOL1_NAME, &key) >= 0); CU_ASSERT(semanage_bool_key_create(sh, BOOL1_NAME, &key) >= 0);
CU_ASSERT_PTR_NOT_NULL(key); CU_ASSERT_PTR_NOT_NULL(key);
CU_ASSERT(semanage_bool_query_local(sh, key, &resp) < 0); CU_ASSERT(semanage_bool_query_local(sh, key, &resp) < 0);
CU_ASSERT_PTR_NULL(resp); CU_ASSERT_PTR_NULL(resp);
semanage_bool_free(resp);
add_local_bool(BOOL1_NAME); add_local_bool(BOOL1_NAME);
CU_ASSERT(semanage_bool_query_local(sh, key, &resp) >= 0); CU_ASSERT(semanage_bool_query_local(sh, key, &resp) >= 0);
CU_ASSERT_PTR_NOT_NULL(resp); CU_ASSERT_PTR_NOT_NULL(resp);
semanage_bool_free(resp);
semanage_bool_key_free(key); semanage_bool_key_free(key);
CU_ASSERT(semanage_bool_key_create(sh, BOOL2_NAME, &key) >= 0); CU_ASSERT(semanage_bool_key_create(sh, BOOL2_NAME, &key) >= 0);
@ -751,8 +775,10 @@ void test_bool_query_local(void)
add_local_bool(BOOL2_NAME); add_local_bool(BOOL2_NAME);
CU_ASSERT(semanage_bool_query_local(sh, key, &resp) >= 0); CU_ASSERT(semanage_bool_query_local(sh, key, &resp) >= 0);
CU_ASSERT_PTR_NOT_NULL(resp); CU_ASSERT_PTR_NOT_NULL(resp);
semanage_bool_free(resp);
/* cleanup */ /* cleanup */
semanage_bool_key_free(key);
delete_local_bool(BOOL1_NAME); delete_local_bool(BOOL1_NAME);
delete_local_bool(BOOL2_NAME); delete_local_bool(BOOL2_NAME);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
@ -784,6 +810,7 @@ void test_bool_exists_local(void)
CU_ASSERT(resp == 0); CU_ASSERT(resp == 0);
/* cleanup */ /* cleanup */
semanage_bool_key_free(key);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
} }
@ -918,12 +945,17 @@ void test_bool_list_local(void)
CU_ASSERT(semanage_bool_list_local(sh, &records, &count) >= 0); CU_ASSERT(semanage_bool_list_local(sh, &records, &count) >= 0);
CU_ASSERT(count == init_count + 1); CU_ASSERT(count == init_count + 1);
CU_ASSERT_PTR_NOT_NULL(records[0]); CU_ASSERT_PTR_NOT_NULL(records[0]);
semanage_bool_free(records[0]);
free(records);
add_local_bool(BOOL2_NAME); add_local_bool(BOOL2_NAME);
CU_ASSERT(semanage_bool_list_local(sh, &records, &count) >= 0); CU_ASSERT(semanage_bool_list_local(sh, &records, &count) >= 0);
CU_ASSERT(count == init_count + 2); CU_ASSERT(count == init_count + 2);
CU_ASSERT_PTR_NOT_NULL(records[0]); CU_ASSERT_PTR_NOT_NULL(records[0]);
CU_ASSERT_PTR_NOT_NULL(records[1]); CU_ASSERT_PTR_NOT_NULL(records[1]);
semanage_bool_free(records[0]);
semanage_bool_free(records[1]);
free(records);
/* cleanup */ /* cleanup */
delete_local_bool(BOOL1_NAME); delete_local_bool(BOOL1_NAME);

View File

@ -214,6 +214,8 @@ semanage_fcontext_t *get_fcontext_nth(int idx)
if (i != (unsigned int) idx) if (i != (unsigned int) idx)
semanage_fcontext_free(records[i]); semanage_fcontext_free(records[i]);
free(records);
return fcontext; return fcontext;
} }
@ -230,6 +232,8 @@ semanage_fcontext_key_t *get_fcontext_key_nth(int idx)
CU_ASSERT_FATAL(semanage_fcontext_key_extract(sh, fcontext, &key) >= 0); CU_ASSERT_FATAL(semanage_fcontext_key_extract(sh, fcontext, &key) >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
semanage_fcontext_free(fcontext);
return key; return key;
} }
@ -246,6 +250,10 @@ void add_local_fcontext(int fcontext_idx)
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
CU_ASSERT_FATAL(semanage_fcontext_modify_local(sh, key, fcontext) >= 0); CU_ASSERT_FATAL(semanage_fcontext_modify_local(sh, key, fcontext) >= 0);
/* cleanup */
semanage_fcontext_key_free(key);
semanage_fcontext_free(fcontext);
} }
void delete_local_fcontext(int fcontext_idx) void delete_local_fcontext(int fcontext_idx)
@ -257,6 +265,8 @@ void delete_local_fcontext(int fcontext_idx)
key = get_fcontext_key_nth(fcontext_idx); key = get_fcontext_key_nth(fcontext_idx);
CU_ASSERT_FATAL(semanage_fcontext_del_local(sh, key) >= 0); CU_ASSERT_FATAL(semanage_fcontext_del_local(sh, key) >= 0);
semanage_fcontext_key_free(key);
} }
semanage_fcontext_key_t *get_fcontext_key_from_str(const char *str, int type) semanage_fcontext_key_t *get_fcontext_key_from_str(const char *str, int type)
@ -477,6 +487,7 @@ void helper_fcontext_get_set_con(level_t level, int fcontext_idx,
} }
/* cleanup */ /* cleanup */
semanage_context_free(con);
semanage_fcontext_free(fcontext); semanage_fcontext_free(fcontext);
cleanup_handle(level); cleanup_handle(level);
} }
@ -587,12 +598,14 @@ void helper_fcontext_query(level_t level, const char *fcontext_expr,
CU_ASSERT(res >= 0); CU_ASSERT(res >= 0);
const char *expr = semanage_fcontext_get_expr(resp); const char *expr = semanage_fcontext_get_expr(resp);
CU_ASSERT_STRING_EQUAL(expr, fcontext_expr); CU_ASSERT_STRING_EQUAL(expr, fcontext_expr);
semanage_fcontext_free(resp);
} else { } else {
CU_ASSERT(res < 0); CU_ASSERT(res < 0);
CU_ASSERT(resp == (void *) 42); CU_ASSERT(resp == (void *) 42);
} }
/* cleanup */ /* cleanup */
semanage_fcontext_key_free(key);
cleanup_handle(level); cleanup_handle(level);
} }
@ -752,6 +765,8 @@ void helper_fcontext_list(level_t level)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_fcontext_free(records[i]); semanage_fcontext_free(records[i]);
free(records);
/* cleanup */ /* cleanup */
cleanup_handle(level); cleanup_handle(level);
} }
@ -768,7 +783,7 @@ void helper_fcontext_modify_del_local(level_t level, int fcontext_idx,
const char *con_str, int exp_res) const char *con_str, int exp_res)
{ {
semanage_fcontext_t *fcontext; semanage_fcontext_t *fcontext;
semanage_fcontext_t *fcontext_local; semanage_fcontext_t *fcontext_local = NULL;
semanage_fcontext_key_t *key = NULL; semanage_fcontext_key_t *key = NULL;
semanage_context_t *con = NULL; semanage_context_t *con = NULL;
int res; int res;
@ -803,6 +818,8 @@ void helper_fcontext_modify_del_local(level_t level, int fcontext_idx,
&fcontext_local) >= 0); &fcontext_local) >= 0);
CU_ASSERT(semanage_fcontext_compare2(fcontext_local, CU_ASSERT(semanage_fcontext_compare2(fcontext_local,
fcontext) == 0); fcontext) == 0);
semanage_fcontext_free(fcontext_local);
CU_ASSERT(semanage_fcontext_del_local(sh, key) >= 0); CU_ASSERT(semanage_fcontext_del_local(sh, key) >= 0);
CU_ASSERT(semanage_fcontext_query_local(sh, key, CU_ASSERT(semanage_fcontext_query_local(sh, key,
&fcontext_local) < 0); &fcontext_local) < 0);
@ -811,6 +828,7 @@ void helper_fcontext_modify_del_local(level_t level, int fcontext_idx,
} }
/* cleanup */ /* cleanup */
semanage_context_free(con);
semanage_fcontext_key_free(key); semanage_fcontext_key_free(key);
semanage_fcontext_free(fcontext); semanage_fcontext_free(fcontext);
cleanup_handle(level); cleanup_handle(level);
@ -846,6 +864,7 @@ void test_fcontext_query_local(void)
/* transaction */ /* transaction */
setup_handle(SH_TRANS); setup_handle(SH_TRANS);
semanage_fcontext_key_free(key);
key = get_fcontext_key_nth(I_FIRST); key = get_fcontext_key_nth(I_FIRST);
CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) < 0); CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) < 0);
CU_ASSERT_PTR_NULL(resp); CU_ASSERT_PTR_NULL(resp);
@ -853,14 +872,19 @@ void test_fcontext_query_local(void)
add_local_fcontext(I_FIRST); add_local_fcontext(I_FIRST);
CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) >= 0); CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) >= 0);
CU_ASSERT_PTR_NOT_NULL(resp); CU_ASSERT_PTR_NOT_NULL(resp);
semanage_fcontext_free(resp);
resp = NULL;
semanage_fcontext_key_free(key); semanage_fcontext_key_free(key);
key = get_fcontext_key_nth(I_SECOND); key = get_fcontext_key_nth(I_SECOND);
add_local_fcontext(I_SECOND); add_local_fcontext(I_SECOND);
CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) >= 0); CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) >= 0);
CU_ASSERT_PTR_NOT_NULL(resp); CU_ASSERT_PTR_NOT_NULL(resp);
semanage_fcontext_free(resp);
resp = NULL;
/* cleanup */ /* cleanup */
semanage_fcontext_key_free(key);
delete_local_fcontext(I_FIRST); delete_local_fcontext(I_FIRST);
delete_local_fcontext(I_SECOND); delete_local_fcontext(I_SECOND);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
@ -898,6 +922,7 @@ void test_fcontext_exists_local(void)
CU_ASSERT(resp == 0); CU_ASSERT(resp == 0);
/* cleanup */ /* cleanup */
semanage_fcontext_key_free(key);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
} }
@ -1031,12 +1056,17 @@ void test_fcontext_list_local(void)
CU_ASSERT(semanage_fcontext_list_local(sh, &records, &count) >= 0); CU_ASSERT(semanage_fcontext_list_local(sh, &records, &count) >= 0);
CU_ASSERT(count == 1); CU_ASSERT(count == 1);
CU_ASSERT_PTR_NOT_NULL(records[0]); CU_ASSERT_PTR_NOT_NULL(records[0]);
semanage_fcontext_free(records[0]);
free(records);
add_local_fcontext(I_SECOND); add_local_fcontext(I_SECOND);
CU_ASSERT(semanage_fcontext_list_local(sh, &records, &count) >= 0); CU_ASSERT(semanage_fcontext_list_local(sh, &records, &count) >= 0);
CU_ASSERT(count == 2); CU_ASSERT(count == 2);
CU_ASSERT_PTR_NOT_NULL(records[0]); CU_ASSERT_PTR_NOT_NULL(records[0]);
CU_ASSERT_PTR_NOT_NULL(records[1]); CU_ASSERT_PTR_NOT_NULL(records[1]);
semanage_fcontext_free(records[0]);
semanage_fcontext_free(records[1]);
free(records);
/* cleanup */ /* cleanup */
delete_local_fcontext(I_FIRST); delete_local_fcontext(I_FIRST);

View File

@ -113,6 +113,8 @@ semanage_ibendport_t *get_ibendport_nth(int idx)
if (i != (unsigned int) idx) if (i != (unsigned int) idx)
semanage_ibendport_free(records[i]); semanage_ibendport_free(records[i]);
free(records);
return ibendport; return ibendport;
} }
@ -132,6 +134,8 @@ semanage_ibendport_key_t *get_ibendport_key_nth(int idx)
CU_ASSERT_FATAL(res >= 0); CU_ASSERT_FATAL(res >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
semanage_ibendport_free(ibendport);
return key; return key;
} }
@ -148,6 +152,9 @@ void add_local_ibendport(int idx)
CU_ASSERT_FATAL(semanage_ibendport_modify_local(sh, key, CU_ASSERT_FATAL(semanage_ibendport_modify_local(sh, key,
ibendport) >= 0); ibendport) >= 0);
semanage_ibendport_key_free(key);
semanage_ibendport_free(ibendport);
} }
void delete_local_ibendport(int idx) void delete_local_ibendport(int idx)
@ -155,6 +162,8 @@ void delete_local_ibendport(int idx)
semanage_ibendport_key_t *key = NULL; semanage_ibendport_key_t *key = NULL;
key = get_ibendport_key_nth(idx); key = get_ibendport_key_nth(idx);
CU_ASSERT_FATAL(semanage_ibendport_del_local(sh, key) >= 0); CU_ASSERT_FATAL(semanage_ibendport_del_local(sh, key) >= 0);
semanage_ibendport_key_free(key);
} }
/* Function semanage_ibendport_query */ /* Function semanage_ibendport_query */
@ -195,7 +204,9 @@ void test_ibendport_query(void)
CU_ASSERT_CONTEXT_EQUAL(con, con_exp); CU_ASSERT_CONTEXT_EQUAL(con, con_exp);
/* cleanup */ /* cleanup */
free(name_exp);
free(name); free(name);
semanage_ibendport_key_free(key);
semanage_ibendport_free(ibendport); semanage_ibendport_free(ibendport);
semanage_ibendport_free(ibendport_exp); semanage_ibendport_free(ibendport_exp);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
@ -356,12 +367,14 @@ void test_ibendport_modify_del_query_local(void)
CU_ASSERT(semanage_ibendport_query_local(sh, key, CU_ASSERT(semanage_ibendport_query_local(sh, key,
&ibendport_local) >= 0); &ibendport_local) >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(ibendport_local); CU_ASSERT_PTR_NOT_NULL_FATAL(ibendport_local);
semanage_ibendport_free(ibendport_local);
CU_ASSERT(semanage_ibendport_del_local(sh, key) >= 0); CU_ASSERT(semanage_ibendport_del_local(sh, key) >= 0);
CU_ASSERT(semanage_ibendport_query_local(sh, key, CU_ASSERT(semanage_ibendport_query_local(sh, key,
&ibendport_local) < 0); &ibendport_local) < 0);
/* cleanup */ /* cleanup */
semanage_ibendport_key_free(key);
semanage_ibendport_free(ibendport); semanage_ibendport_free(ibendport);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
} }

View File

@ -139,6 +139,8 @@ semanage_iface_t *get_iface_nth(int idx)
if (i != (unsigned int) idx) if (i != (unsigned int) idx)
semanage_iface_free(records[i]); semanage_iface_free(records[i]);
free(records);
return iface; return iface;
} }
@ -157,6 +159,9 @@ semanage_iface_key_t *get_iface_key_nth(int idx)
CU_ASSERT_FATAL(res >= 0); CU_ASSERT_FATAL(res >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
/* cleanup */
semanage_iface_free(iface);
return key; return key;
} }
@ -171,6 +176,10 @@ void add_local_iface(int idx)
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
CU_ASSERT_FATAL(semanage_iface_modify_local(sh, key, iface) >= 0); CU_ASSERT_FATAL(semanage_iface_modify_local(sh, key, iface) >= 0);
/* cleanup */
semanage_iface_key_free(key);
semanage_iface_free(iface);
} }
void delete_local_iface(int idx) void delete_local_iface(int idx)
@ -178,6 +187,9 @@ void delete_local_iface(int idx)
semanage_iface_key_t *key = NULL; semanage_iface_key_t *key = NULL;
key = get_iface_key_nth(idx); key = get_iface_key_nth(idx);
CU_ASSERT_FATAL(semanage_iface_del_local(sh, key) >= 0); CU_ASSERT_FATAL(semanage_iface_del_local(sh, key) >= 0);
/* cleanup */
semanage_iface_key_free(key);
} }
/* Function semanage_iface_compare */ /* Function semanage_iface_compare */
@ -309,6 +321,7 @@ void test_iface_get_set_ifcon(void)
CU_ASSERT_CONTEXT_EQUAL(con1, con2); CU_ASSERT_CONTEXT_EQUAL(con1, con2);
/* cleanup */ /* cleanup */
semanage_context_free(con1);
semanage_iface_free(iface); semanage_iface_free(iface);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -332,6 +345,7 @@ void test_iface_get_set_msgcon(void)
CU_ASSERT_CONTEXT_EQUAL(con1, con2); CU_ASSERT_CONTEXT_EQUAL(con1, con2);
/* cleanup */ /* cleanup */
semanage_context_free(con1);
semanage_iface_free(iface); semanage_iface_free(iface);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -357,6 +371,8 @@ void test_iface_create(void)
CU_ASSERT(semanage_iface_set_msgcon(sh, iface, msgcon) >= 0); CU_ASSERT(semanage_iface_set_msgcon(sh, iface, msgcon) >= 0);
/* cleanup */ /* cleanup */
semanage_context_free(msgcon);
semanage_context_free(ifcon);
semanage_iface_free(iface); semanage_iface_free(iface);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -393,6 +409,8 @@ void test_iface_clone(void)
CU_ASSERT_CONTEXT_EQUAL(msgcon, msgcon2); CU_ASSERT_CONTEXT_EQUAL(msgcon, msgcon2);
/* cleanup */ /* cleanup */
semanage_context_free(msgcon);
semanage_context_free(ifcon);
semanage_iface_free(iface); semanage_iface_free(iface);
semanage_iface_free(iface_clone); semanage_iface_free(iface_clone);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
@ -426,6 +444,7 @@ void test_iface_query(void)
CU_ASSERT_CONTEXT_EQUAL(con, con_exp); CU_ASSERT_CONTEXT_EQUAL(con, con_exp);
/* cleanup */ /* cleanup */
semanage_iface_key_free(key);
semanage_iface_free(iface); semanage_iface_free(iface);
semanage_iface_free(iface_exp); semanage_iface_free(iface_exp);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
@ -513,6 +532,8 @@ void test_iface_list(void)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_iface_free(records[i]); semanage_iface_free(records[i]);
free(records);
/* cleanup */ /* cleanup */
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -541,11 +562,13 @@ void test_iface_modify_del_query_local(void)
CU_ASSERT(semanage_iface_query_local(sh, key, &iface_local) >= 0); CU_ASSERT(semanage_iface_query_local(sh, key, &iface_local) >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(iface_local); CU_ASSERT_PTR_NOT_NULL_FATAL(iface_local);
semanage_iface_free(iface_local);
CU_ASSERT(semanage_iface_del_local(sh, key) >= 0); CU_ASSERT(semanage_iface_del_local(sh, key) >= 0);
CU_ASSERT(semanage_iface_query_local(sh, key, &iface_local) < 0); CU_ASSERT(semanage_iface_query_local(sh, key, &iface_local) < 0);
/* cleanup */ /* cleanup */
semanage_iface_key_free(key);
semanage_iface_free(iface); semanage_iface_free(iface);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
} }
@ -658,6 +681,7 @@ void test_iface_list_local(void)
/* cleanup */ /* cleanup */
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_iface_free(records[i]); semanage_iface_free(records[i]);
free(records);
delete_local_iface(I_FIRST); delete_local_iface(I_FIRST);
delete_local_iface(I_SECOND); delete_local_iface(I_SECOND);

View File

@ -148,6 +148,8 @@ semanage_node_t *get_node_nth(int idx)
if (i != (unsigned int) idx) if (i != (unsigned int) idx)
semanage_node_free(records[i]); semanage_node_free(records[i]);
free(records);
return node; return node;
} }
@ -167,6 +169,8 @@ semanage_node_key_t *get_node_key_nth(int idx)
CU_ASSERT_FATAL(res >= 0); CU_ASSERT_FATAL(res >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
semanage_node_free(node);
return key; return key;
} }
@ -181,6 +185,10 @@ void add_local_node(int idx)
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
CU_ASSERT_FATAL(semanage_node_modify_local(sh, key, node) >= 0); CU_ASSERT_FATAL(semanage_node_modify_local(sh, key, node) >= 0);
/* cleanup */
semanage_node_key_free(key);
semanage_node_free(node);
} }
void delete_local_node(int idx) void delete_local_node(int idx)
@ -190,6 +198,9 @@ void delete_local_node(int idx)
key = get_node_key_nth(idx); key = get_node_key_nth(idx);
CU_ASSERT_FATAL(semanage_node_del_local(sh, key) >= 0); CU_ASSERT_FATAL(semanage_node_del_local(sh, key) >= 0);
/* cleanup */
semanage_node_key_free(key);
} }
/* Function semanage_node_compare */ /* Function semanage_node_compare */
@ -305,6 +316,7 @@ void test_node_get_set_addr(void)
CU_ASSERT_STRING_EQUAL(addr, "192.168.0.1"); CU_ASSERT_STRING_EQUAL(addr, "192.168.0.1");
/* cleanup */ /* cleanup */
free(addr);
semanage_node_free(node); semanage_node_free(node);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -334,6 +346,7 @@ void test_node_get_set_addr_bytes(void)
CU_ASSERT(addr1[i] == addr2[i]); CU_ASSERT(addr1[i] == addr2[i]);
/* cleanup */ /* cleanup */
free(addr2);
semanage_node_free(node); semanage_node_free(node);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -357,6 +370,7 @@ void test_node_get_set_mask(void)
CU_ASSERT_STRING_EQUAL(mask, "255.255.255.0"); CU_ASSERT_STRING_EQUAL(mask, "255.255.255.0");
/* cleanup */ /* cleanup */
free(mask);
semanage_node_free(node); semanage_node_free(node);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -386,6 +400,7 @@ void test_node_get_set_mask_bytes(void)
CU_ASSERT(mask1[i] == mask2[i]); CU_ASSERT(mask1[i] == mask2[i]);
/* cleanup */ /* cleanup */
free(mask2);
semanage_node_free(node); semanage_node_free(node);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -436,6 +451,7 @@ void test_node_get_set_con(void)
CU_ASSERT_CONTEXT_EQUAL(con1, con2); CU_ASSERT_CONTEXT_EQUAL(con1, con2);
/* cleanup */ /* cleanup */
semanage_context_free(con1);
semanage_node_free(node); semanage_node_free(node);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -461,6 +477,7 @@ void test_node_create(void)
CU_ASSERT(semanage_node_set_con(sh, node, con) >= 0); CU_ASSERT(semanage_node_set_con(sh, node, con) >= 0);
/* cleanup */ /* cleanup */
semanage_context_free(con);
semanage_node_free(node); semanage_node_free(node);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -508,6 +525,9 @@ void test_node_clone(void)
CU_ASSERT_CONTEXT_EQUAL(con, con2); CU_ASSERT_CONTEXT_EQUAL(con, con2);
/* cleanup */ /* cleanup */
free(mask2);
free(addr2);
semanage_context_free(con);
semanage_node_free(node); semanage_node_free(node);
semanage_node_free(node_clone); semanage_node_free(node_clone);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
@ -552,6 +572,8 @@ void test_node_query(void)
CU_ASSERT_CONTEXT_EQUAL(con, con_exp); CU_ASSERT_CONTEXT_EQUAL(con, con_exp);
/* cleanup */ /* cleanup */
semanage_node_key_free(key);
semanage_node_free(node_exp);
semanage_node_free(node); semanage_node_free(node);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -638,6 +660,8 @@ void test_node_list(void)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_node_free(records[i]); semanage_node_free(records[i]);
free(records);
/* cleanup */ /* cleanup */
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -679,6 +703,7 @@ void test_node_modify_del_query_local(void)
CU_ASSERT(semanage_node_query_local(sh, key, &node_local) >= 0); CU_ASSERT(semanage_node_query_local(sh, key, &node_local) >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(node_local); CU_ASSERT_PTR_NOT_NULL_FATAL(node_local);
semanage_node_free(node_local);
CU_ASSERT(semanage_node_del_local(sh, key) >= 0); CU_ASSERT(semanage_node_del_local(sh, key) >= 0);
CU_ASSERT(semanage_node_del_local(sh, key_tmp) >= 0); CU_ASSERT(semanage_node_del_local(sh, key_tmp) >= 0);
@ -686,6 +711,8 @@ void test_node_modify_del_query_local(void)
CU_ASSERT(semanage_node_query_local(sh, key, &node_local) < 0); CU_ASSERT(semanage_node_query_local(sh, key, &node_local) < 0);
/* cleanup */ /* cleanup */
semanage_node_key_free(key_tmp);
semanage_node_key_free(key);
semanage_node_free(node); semanage_node_free(node);
semanage_node_free(node_tmp); semanage_node_free(node_tmp);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
@ -800,6 +827,8 @@ void test_node_list_local(void)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_node_free(records[i]); semanage_node_free(records[i]);
free(records);
delete_local_node(I_FIRST); delete_local_node(I_FIRST);
delete_local_node(I_SECOND); delete_local_node(I_SECOND);
delete_local_node(I_THIRD); delete_local_node(I_THIRD);

View File

@ -81,6 +81,9 @@ void test_semanage_context(void)
assert(str); assert(str);
CU_ASSERT_STRING_EQUAL(str, "user_u:role_r:type_t:s0"); CU_ASSERT_STRING_EQUAL(str, "user_u:role_r:type_t:s0");
semanage_context_free(con);
con = NULL;
CU_ASSERT(semanage_context_from_string(sh, "my_u:my_r:my_t:s0", CU_ASSERT(semanage_context_from_string(sh, "my_u:my_r:my_t:s0",
&con) >= 0); &con) >= 0);
CU_ASSERT_STRING_EQUAL(semanage_context_get_user(con), "my_u"); CU_ASSERT_STRING_EQUAL(semanage_context_get_user(con), "my_u");
@ -95,6 +98,7 @@ void test_semanage_context(void)
CU_ASSERT_STRING_EQUAL(semanage_context_get_mls(con_clone), "s0"); CU_ASSERT_STRING_EQUAL(semanage_context_get_mls(con_clone), "s0");
/* cleanup */ /* cleanup */
free(str);
semanage_context_free(con); semanage_context_free(con);
semanage_context_free(con_clone); semanage_context_free(con_clone);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
@ -115,6 +119,8 @@ void test_debug(void)
CU_ASSERT(semanage_module_info_set_priority(sh, modinfo, -42) < 0); CU_ASSERT(semanage_module_info_set_priority(sh, modinfo, -42) < 0);
/* cleanup */ /* cleanup */
semanage_module_info_destroy(sh, modinfo);
free(modinfo);
CU_ASSERT(semanage_disconnect(sh) >= 0); CU_ASSERT(semanage_disconnect(sh) >= 0);
semanage_handle_destroy(sh); semanage_handle_destroy(sh);
} }

View File

@ -146,6 +146,8 @@ semanage_port_t *get_port_nth(int idx)
if (i != (unsigned int) idx) if (i != (unsigned int) idx)
semanage_port_free(records[i]); semanage_port_free(records[i]);
free(records);
return port; return port;
} }
@ -165,6 +167,9 @@ semanage_port_key_t *get_port_key_nth(int idx)
CU_ASSERT_FATAL(res >= 0); CU_ASSERT_FATAL(res >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
/* cleanup */
semanage_port_free(port);
return key; return key;
} }
@ -181,6 +186,10 @@ void add_local_port(int port_idx)
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
CU_ASSERT_FATAL(semanage_port_modify_local(sh, key, port) >= 0); CU_ASSERT_FATAL(semanage_port_modify_local(sh, key, port) >= 0);
/* cleanup */
semanage_port_key_free(key);
semanage_port_free(port);
} }
void delete_local_port(int port_idx) void delete_local_port(int port_idx)
@ -192,6 +201,8 @@ void delete_local_port(int port_idx)
key = get_port_key_nth(port_idx); key = get_port_key_nth(port_idx);
CU_ASSERT_FATAL(semanage_port_del_local(sh, key) >= 0); CU_ASSERT_FATAL(semanage_port_del_local(sh, key) >= 0);
semanage_port_key_free(key);
} }
/* Function semanage_port_compare */ /* Function semanage_port_compare */
@ -447,6 +458,7 @@ void test_port_clone(void)
CU_ASSERT_CONTEXT_EQUAL(con, con2); CU_ASSERT_CONTEXT_EQUAL(con, con2);
/* cleanup */ /* cleanup */
semanage_context_free(con);
semanage_port_free(port); semanage_port_free(port);
semanage_port_free(port_clone); semanage_port_free(port_clone);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
@ -480,6 +492,7 @@ void test_port_query(void)
CU_ASSERT_CONTEXT_EQUAL(con, con_exp); CU_ASSERT_CONTEXT_EQUAL(con, con_exp);
/* cleanup */ /* cleanup */
semanage_port_key_free(key);
semanage_port_free(port); semanage_port_free(port);
semanage_port_free(port_exp); semanage_port_free(port_exp);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
@ -567,6 +580,8 @@ void test_port_list(void)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_port_free(records[i]); semanage_port_free(records[i]);
free(records);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -594,11 +609,14 @@ void test_port_modify_del_local(void)
con_local = semanage_port_get_con(port_local); con_local = semanage_port_get_con(port_local);
CU_ASSERT_CONTEXT_EQUAL(con, con_local); CU_ASSERT_CONTEXT_EQUAL(con, con_local);
semanage_port_free(port_local);
CU_ASSERT(semanage_port_del_local(sh, key) >= 0); CU_ASSERT(semanage_port_del_local(sh, key) >= 0);
CU_ASSERT(semanage_port_query_local(sh, key, &port_local) < 0); CU_ASSERT(semanage_port_query_local(sh, key, &port_local) < 0);
/* cleanup */ /* cleanup */
semanage_context_free(con);
semanage_port_key_free(key);
semanage_port_free(port); semanage_port_free(port);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
} }
@ -633,6 +651,7 @@ void test_port_query_local(void)
/* cleanup */ /* cleanup */
delete_local_port(I_FIRST); delete_local_port(I_FIRST);
semanage_port_key_free(key);
semanage_port_free(port); semanage_port_free(port);
semanage_port_free(port_exp); semanage_port_free(port_exp);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
@ -747,6 +766,8 @@ void test_port_list_local(void)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_port_free(records[i]); semanage_port_free(records[i]);
free(records);
delete_local_port(I_FIRST); delete_local_port(I_FIRST);
delete_local_port(I_SECOND); delete_local_port(I_SECOND);
delete_local_port(I_THIRD); delete_local_port(I_THIRD);
@ -773,6 +794,7 @@ void helper_port_validate_local_noport(void)
helper_commit(); helper_commit();
/* cleanup */ /* cleanup */
semanage_port_key_free(key);
helper_begin_transaction(); helper_begin_transaction();
delete_local_port(I_FIRST); delete_local_port(I_FIRST);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
@ -832,6 +854,8 @@ void helper_port_validate_local_twoports(void)
helper_begin_transaction(); helper_begin_transaction();
CU_ASSERT(semanage_port_del_local(sh, key1) >= 0); CU_ASSERT(semanage_port_del_local(sh, key1) >= 0);
CU_ASSERT(semanage_port_del_local(sh, key2) >= 0); CU_ASSERT(semanage_port_del_local(sh, key2) >= 0);
semanage_context_free(con2);
semanage_context_free(con1);
semanage_port_key_free(key1); semanage_port_key_free(key1);
semanage_port_key_free(key2); semanage_port_key_free(key2);
semanage_port_free(port1); semanage_port_free(port1);

View File

@ -130,6 +130,8 @@ semanage_user_t *get_user_nth(int idx)
if (i != (unsigned int) idx) if (i != (unsigned int) idx)
semanage_user_free(records[i]); semanage_user_free(records[i]);
free(records);
return user; return user;
} }
@ -149,6 +151,8 @@ semanage_user_key_t *get_user_key_nth(int idx)
CU_ASSERT_FATAL(res >= 0); CU_ASSERT_FATAL(res >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
semanage_user_free(user);
return key; return key;
} }
@ -165,6 +169,9 @@ void add_local_user(int user_idx)
CU_ASSERT_PTR_NOT_NULL_FATAL(key); CU_ASSERT_PTR_NOT_NULL_FATAL(key);
CU_ASSERT_FATAL(semanage_user_modify_local(sh, key, user) >= 0); CU_ASSERT_FATAL(semanage_user_modify_local(sh, key, user) >= 0);
semanage_user_key_free(key);
semanage_user_free(user);
} }
void delete_local_user(int user_idx) void delete_local_user(int user_idx)
@ -176,6 +183,8 @@ void delete_local_user(int user_idx)
key = get_user_key_nth(user_idx); key = get_user_key_nth(user_idx);
CU_ASSERT_FATAL(semanage_user_del_local(sh, key) >= 0); CU_ASSERT_FATAL(semanage_user_del_local(sh, key) >= 0);
semanage_user_key_free(key);
} }
/* Function semanage_user_compare */ /* Function semanage_user_compare */
@ -391,6 +400,7 @@ void test_user_roles(void)
CU_ASSERT(semanage_user_get_num_roles(user) == 0); CU_ASSERT(semanage_user_get_num_roles(user) == 0);
/* cleanup */ /* cleanup */
free(roles_arr);
semanage_user_free(user); semanage_user_free(user);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -459,6 +469,7 @@ void test_user_query(void)
CU_ASSERT_PTR_NOT_NULL(user); CU_ASSERT_PTR_NOT_NULL(user);
/* cleanup */ /* cleanup */
semanage_user_key_free(key);
semanage_user_free(user); semanage_user_free(user);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -546,6 +557,8 @@ void test_user_list(void)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_user_free(records[i]); semanage_user_free(records[i]);
free(records);
cleanup_handle(SH_CONNECT); cleanup_handle(SH_CONNECT);
} }
@ -573,10 +586,12 @@ void test_user_modify_del_query_local(void)
CU_ASSERT(semanage_user_query_local(sh, key, &user_local) >= 0); CU_ASSERT(semanage_user_query_local(sh, key, &user_local) >= 0);
CU_ASSERT_PTR_NOT_NULL_FATAL(user_local); CU_ASSERT_PTR_NOT_NULL_FATAL(user_local);
semanage_user_free(user_local);
CU_ASSERT(semanage_user_del_local(sh, key) >= 0); CU_ASSERT(semanage_user_del_local(sh, key) >= 0);
CU_ASSERT(semanage_user_query_local(sh, key, &user_local) < 0); CU_ASSERT(semanage_user_query_local(sh, key, &user_local) < 0);
/* cleanup */ /* cleanup */
semanage_user_key_free(key);
semanage_user_free(user); semanage_user_free(user);
cleanup_handle(SH_TRANS); cleanup_handle(SH_TRANS);
} }
@ -683,6 +698,8 @@ void test_user_list_local(void)
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
semanage_user_free(records[i]); semanage_user_free(records[i]);
free(records);
delete_local_user(I_FIRST); delete_local_user(I_FIRST);
delete_local_user(I_SECOND); delete_local_user(I_SECOND);
delete_local_user(I_THIRD); delete_local_user(I_THIRD);

View File

@ -99,6 +99,7 @@ int write_test_policy_from_file(const char *filename) {
char *buf = NULL; char *buf = NULL;
size_t len = 0; size_t len = 0;
FILE *fptr = fopen(filename, "rb"); FILE *fptr = fopen(filename, "rb");
int rc;
if (!fptr) { if (!fptr) {
perror("fopen"); perror("fopen");
@ -120,7 +121,9 @@ int write_test_policy_from_file(const char *filename) {
fread(buf, len, 1, fptr); fread(buf, len, 1, fptr);
fclose(fptr); fclose(fptr);
return write_test_policy(buf, len); rc = write_test_policy(buf, len);
free(buf);
return rc;
} }
int write_test_policy_src(unsigned char *data, unsigned int data_len) { int write_test_policy_src(unsigned char *data, unsigned int data_len) {

View File

@ -39,6 +39,8 @@
CU_ASSERT(semanage_context_to_string(sh, CON1, &__str) >= 0); \ CU_ASSERT(semanage_context_to_string(sh, CON1, &__str) >= 0); \
CU_ASSERT(semanage_context_to_string(sh, CON2, &__str2) >= 0); \ CU_ASSERT(semanage_context_to_string(sh, CON2, &__str2) >= 0); \
CU_ASSERT_STRING_EQUAL(__str, __str2); \ CU_ASSERT_STRING_EQUAL(__str, __str2); \
free(__str2); \
free(__str); \
} while (0) } while (0)