Skip to content

Commit fe01a91

Browse files
cgzonesfishilico
authored andcommitted
libsemanage/tests: free memory
Free all memory in test cases, reported by LeakSanitizer. Signed-off-by: Christian Göttsche <[email protected]>
1 parent ea53901 commit fe01a91

File tree

10 files changed

+183
-3
lines changed

10 files changed

+183
-3
lines changed

libsemanage/tests/test_bool.c

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ semanage_bool_t *get_bool_nth(int idx)
132132
if (i != (unsigned int) idx)
133133
semanage_bool_free(records[i]);
134134

135+
free(records);
136+
135137
return boolean;
136138
}
137139

@@ -163,6 +165,8 @@ semanage_bool_key_t *get_bool_key_nth(int idx)
163165
CU_ASSERT_FATAL(res >= 0);
164166
CU_ASSERT_PTR_NOT_NULL_FATAL(key);
165167

168+
semanage_bool_free(boolean);
169+
166170
return key;
167171
}
168172

@@ -196,6 +200,9 @@ void add_local_bool(const char *name)
196200
CU_ASSERT_PTR_NOT_NULL_FATAL(boolean);
197201

198202
CU_ASSERT_FATAL(semanage_bool_modify_local(sh, key, boolean) >= 0);
203+
204+
semanage_bool_key_free(key);
205+
semanage_bool_free(boolean);
199206
}
200207

201208
void delete_local_bool(const char *name)
@@ -208,6 +215,8 @@ void delete_local_bool(const char *name)
208215
CU_ASSERT_PTR_NOT_NULL_FATAL(key);
209216

210217
CU_ASSERT_FATAL(semanage_bool_del_local(sh, key) >= 0);
218+
219+
semanage_bool_key_free(key);
211220
}
212221

213222
/* Function bool_key_create */
@@ -447,6 +456,8 @@ void helper_bool_create(level_t level)
447456
CU_ASSERT_PTR_NULL(semanage_bool_get_name(boolean));
448457
CU_ASSERT(semanage_bool_get_value(boolean) == 0);
449458

459+
semanage_bool_free(boolean);
460+
450461
cleanup_handle(level);
451462
}
452463

@@ -483,6 +494,9 @@ void helper_bool_clone(level_t level, int bool_idx)
483494

484495
CU_ASSERT_EQUAL(val, val_clone);
485496

497+
semanage_bool_free(boolean_clone);
498+
semanage_bool_free(boolean);
499+
486500
cleanup_handle(level);
487501
}
488502

@@ -514,6 +528,9 @@ void helper_bool_query(level_t level, const char *bool_str, int exp_res)
514528
CU_ASSERT_PTR_NULL(resp);
515529
}
516530

531+
semanage_bool_free(resp);
532+
semanage_bool_key_free(key);
533+
517534
cleanup_handle(level);
518535
}
519536

@@ -647,6 +664,8 @@ void helper_bool_list(level_t level)
647664
for (unsigned int i = 0; i < count; i++)
648665
semanage_bool_free(records[i]);
649666

667+
free(records);
668+
650669
cleanup_handle(level);
651670
}
652671

@@ -662,7 +681,7 @@ void helper_bool_modify_del_local(level_t level, const char *name,
662681
int old_val, int exp_res)
663682
{
664683
semanage_bool_t *boolean;
665-
semanage_bool_t *boolean_local;
684+
semanage_bool_t *boolean_local = NULL;
666685
semanage_bool_key_t *key = NULL;
667686
int res;
668687
int new_val;
@@ -696,6 +715,8 @@ void helper_bool_modify_del_local(level_t level, const char *name,
696715
CU_ASSERT(semanage_bool_query_local(sh, key,
697716
&boolean_local) >= 0);
698717
CU_ASSERT(semanage_bool_compare2(boolean_local, boolean) == 0);
718+
semanage_bool_free(boolean_local);
719+
699720
CU_ASSERT(semanage_bool_del_local(sh, key) >= 0);
700721
CU_ASSERT(semanage_bool_query_local(sh, key,
701722
&boolean_local) < 0);
@@ -734,15 +755,18 @@ void test_bool_query_local(void)
734755

735756
/* transaction */
736757
setup_handle(SH_TRANS);
758+
semanage_bool_key_free(key);
737759
CU_ASSERT(semanage_bool_key_create(sh, BOOL1_NAME, &key) >= 0);
738760
CU_ASSERT_PTR_NOT_NULL(key);
739761

740762
CU_ASSERT(semanage_bool_query_local(sh, key, &resp) < 0);
741763
CU_ASSERT_PTR_NULL(resp);
764+
semanage_bool_free(resp);
742765

743766
add_local_bool(BOOL1_NAME);
744767
CU_ASSERT(semanage_bool_query_local(sh, key, &resp) >= 0);
745768
CU_ASSERT_PTR_NOT_NULL(resp);
769+
semanage_bool_free(resp);
746770

747771
semanage_bool_key_free(key);
748772
CU_ASSERT(semanage_bool_key_create(sh, BOOL2_NAME, &key) >= 0);
@@ -751,8 +775,10 @@ void test_bool_query_local(void)
751775
add_local_bool(BOOL2_NAME);
752776
CU_ASSERT(semanage_bool_query_local(sh, key, &resp) >= 0);
753777
CU_ASSERT_PTR_NOT_NULL(resp);
778+
semanage_bool_free(resp);
754779

755780
/* cleanup */
781+
semanage_bool_key_free(key);
756782
delete_local_bool(BOOL1_NAME);
757783
delete_local_bool(BOOL2_NAME);
758784
cleanup_handle(SH_TRANS);
@@ -784,6 +810,7 @@ void test_bool_exists_local(void)
784810
CU_ASSERT(resp == 0);
785811

786812
/* cleanup */
813+
semanage_bool_key_free(key);
787814
cleanup_handle(SH_TRANS);
788815
}
789816

@@ -918,12 +945,17 @@ void test_bool_list_local(void)
918945
CU_ASSERT(semanage_bool_list_local(sh, &records, &count) >= 0);
919946
CU_ASSERT(count == init_count + 1);
920947
CU_ASSERT_PTR_NOT_NULL(records[0]);
948+
semanage_bool_free(records[0]);
949+
free(records);
921950

922951
add_local_bool(BOOL2_NAME);
923952
CU_ASSERT(semanage_bool_list_local(sh, &records, &count) >= 0);
924953
CU_ASSERT(count == init_count + 2);
925954
CU_ASSERT_PTR_NOT_NULL(records[0]);
926955
CU_ASSERT_PTR_NOT_NULL(records[1]);
956+
semanage_bool_free(records[0]);
957+
semanage_bool_free(records[1]);
958+
free(records);
927959

928960
/* cleanup */
929961
delete_local_bool(BOOL1_NAME);

libsemanage/tests/test_fcontext.c

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ semanage_fcontext_t *get_fcontext_nth(int idx)
214214
if (i != (unsigned int) idx)
215215
semanage_fcontext_free(records[i]);
216216

217+
free(records);
218+
217219
return fcontext;
218220
}
219221

@@ -230,6 +232,8 @@ semanage_fcontext_key_t *get_fcontext_key_nth(int idx)
230232
CU_ASSERT_FATAL(semanage_fcontext_key_extract(sh, fcontext, &key) >= 0);
231233
CU_ASSERT_PTR_NOT_NULL_FATAL(key);
232234

235+
semanage_fcontext_free(fcontext);
236+
233237
return key;
234238
}
235239

@@ -246,6 +250,10 @@ void add_local_fcontext(int fcontext_idx)
246250
CU_ASSERT_PTR_NOT_NULL_FATAL(key);
247251

248252
CU_ASSERT_FATAL(semanage_fcontext_modify_local(sh, key, fcontext) >= 0);
253+
254+
/* cleanup */
255+
semanage_fcontext_key_free(key);
256+
semanage_fcontext_free(fcontext);
249257
}
250258

251259
void delete_local_fcontext(int fcontext_idx)
@@ -257,6 +265,8 @@ void delete_local_fcontext(int fcontext_idx)
257265
key = get_fcontext_key_nth(fcontext_idx);
258266

259267
CU_ASSERT_FATAL(semanage_fcontext_del_local(sh, key) >= 0);
268+
269+
semanage_fcontext_key_free(key);
260270
}
261271

262272
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,
477487
}
478488

479489
/* cleanup */
490+
semanage_context_free(con);
480491
semanage_fcontext_free(fcontext);
481492
cleanup_handle(level);
482493
}
@@ -587,12 +598,14 @@ void helper_fcontext_query(level_t level, const char *fcontext_expr,
587598
CU_ASSERT(res >= 0);
588599
const char *expr = semanage_fcontext_get_expr(resp);
589600
CU_ASSERT_STRING_EQUAL(expr, fcontext_expr);
601+
semanage_fcontext_free(resp);
590602
} else {
591603
CU_ASSERT(res < 0);
592604
CU_ASSERT(resp == (void *) 42);
593605
}
594606

595607
/* cleanup */
608+
semanage_fcontext_key_free(key);
596609
cleanup_handle(level);
597610
}
598611

@@ -752,6 +765,8 @@ void helper_fcontext_list(level_t level)
752765
for (unsigned int i = 0; i < count; i++)
753766
semanage_fcontext_free(records[i]);
754767

768+
free(records);
769+
755770
/* cleanup */
756771
cleanup_handle(level);
757772
}
@@ -768,7 +783,7 @@ void helper_fcontext_modify_del_local(level_t level, int fcontext_idx,
768783
const char *con_str, int exp_res)
769784
{
770785
semanage_fcontext_t *fcontext;
771-
semanage_fcontext_t *fcontext_local;
786+
semanage_fcontext_t *fcontext_local = NULL;
772787
semanage_fcontext_key_t *key = NULL;
773788
semanage_context_t *con = NULL;
774789
int res;
@@ -803,6 +818,8 @@ void helper_fcontext_modify_del_local(level_t level, int fcontext_idx,
803818
&fcontext_local) >= 0);
804819
CU_ASSERT(semanage_fcontext_compare2(fcontext_local,
805820
fcontext) == 0);
821+
semanage_fcontext_free(fcontext_local);
822+
806823
CU_ASSERT(semanage_fcontext_del_local(sh, key) >= 0);
807824
CU_ASSERT(semanage_fcontext_query_local(sh, key,
808825
&fcontext_local) < 0);
@@ -811,6 +828,7 @@ void helper_fcontext_modify_del_local(level_t level, int fcontext_idx,
811828
}
812829

813830
/* cleanup */
831+
semanage_context_free(con);
814832
semanage_fcontext_key_free(key);
815833
semanage_fcontext_free(fcontext);
816834
cleanup_handle(level);
@@ -846,21 +864,27 @@ void test_fcontext_query_local(void)
846864
/* transaction */
847865
setup_handle(SH_TRANS);
848866

867+
semanage_fcontext_key_free(key);
849868
key = get_fcontext_key_nth(I_FIRST);
850869
CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) < 0);
851870
CU_ASSERT_PTR_NULL(resp);
852871

853872
add_local_fcontext(I_FIRST);
854873
CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) >= 0);
855874
CU_ASSERT_PTR_NOT_NULL(resp);
875+
semanage_fcontext_free(resp);
876+
resp = NULL;
856877

857878
semanage_fcontext_key_free(key);
858879
key = get_fcontext_key_nth(I_SECOND);
859880
add_local_fcontext(I_SECOND);
860881
CU_ASSERT(semanage_fcontext_query_local(sh, key, &resp) >= 0);
861882
CU_ASSERT_PTR_NOT_NULL(resp);
883+
semanage_fcontext_free(resp);
884+
resp = NULL;
862885

863886
/* cleanup */
887+
semanage_fcontext_key_free(key);
864888
delete_local_fcontext(I_FIRST);
865889
delete_local_fcontext(I_SECOND);
866890
cleanup_handle(SH_TRANS);
@@ -898,6 +922,7 @@ void test_fcontext_exists_local(void)
898922
CU_ASSERT(resp == 0);
899923

900924
/* cleanup */
925+
semanage_fcontext_key_free(key);
901926
cleanup_handle(SH_TRANS);
902927
}
903928

@@ -1031,12 +1056,17 @@ void test_fcontext_list_local(void)
10311056
CU_ASSERT(semanage_fcontext_list_local(sh, &records, &count) >= 0);
10321057
CU_ASSERT(count == 1);
10331058
CU_ASSERT_PTR_NOT_NULL(records[0]);
1059+
semanage_fcontext_free(records[0]);
1060+
free(records);
10341061

10351062
add_local_fcontext(I_SECOND);
10361063
CU_ASSERT(semanage_fcontext_list_local(sh, &records, &count) >= 0);
10371064
CU_ASSERT(count == 2);
10381065
CU_ASSERT_PTR_NOT_NULL(records[0]);
10391066
CU_ASSERT_PTR_NOT_NULL(records[1]);
1067+
semanage_fcontext_free(records[0]);
1068+
semanage_fcontext_free(records[1]);
1069+
free(records);
10401070

10411071
/* cleanup */
10421072
delete_local_fcontext(I_FIRST);

libsemanage/tests/test_ibendport.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ semanage_ibendport_t *get_ibendport_nth(int idx)
113113
if (i != (unsigned int) idx)
114114
semanage_ibendport_free(records[i]);
115115

116+
free(records);
117+
116118
return ibendport;
117119
}
118120

@@ -132,6 +134,8 @@ semanage_ibendport_key_t *get_ibendport_key_nth(int idx)
132134
CU_ASSERT_FATAL(res >= 0);
133135
CU_ASSERT_PTR_NOT_NULL_FATAL(key);
134136

137+
semanage_ibendport_free(ibendport);
138+
135139
return key;
136140
}
137141

@@ -148,13 +152,18 @@ void add_local_ibendport(int idx)
148152

149153
CU_ASSERT_FATAL(semanage_ibendport_modify_local(sh, key,
150154
ibendport) >= 0);
155+
156+
semanage_ibendport_key_free(key);
157+
semanage_ibendport_free(ibendport);
151158
}
152159

153160
void delete_local_ibendport(int idx)
154161
{
155162
semanage_ibendport_key_t *key = NULL;
156163
key = get_ibendport_key_nth(idx);
157164
CU_ASSERT_FATAL(semanage_ibendport_del_local(sh, key) >= 0);
165+
166+
semanage_ibendport_key_free(key);
158167
}
159168

160169
/* Function semanage_ibendport_query */
@@ -195,7 +204,9 @@ void test_ibendport_query(void)
195204
CU_ASSERT_CONTEXT_EQUAL(con, con_exp);
196205

197206
/* cleanup */
207+
free(name_exp);
198208
free(name);
209+
semanage_ibendport_key_free(key);
199210
semanage_ibendport_free(ibendport);
200211
semanage_ibendport_free(ibendport_exp);
201212
cleanup_handle(SH_CONNECT);
@@ -356,12 +367,14 @@ void test_ibendport_modify_del_query_local(void)
356367
CU_ASSERT(semanage_ibendport_query_local(sh, key,
357368
&ibendport_local) >= 0);
358369
CU_ASSERT_PTR_NOT_NULL_FATAL(ibendport_local);
370+
semanage_ibendport_free(ibendport_local);
359371

360372
CU_ASSERT(semanage_ibendport_del_local(sh, key) >= 0);
361373
CU_ASSERT(semanage_ibendport_query_local(sh, key,
362374
&ibendport_local) < 0);
363375

364376
/* cleanup */
377+
semanage_ibendport_key_free(key);
365378
semanage_ibendport_free(ibendport);
366379
cleanup_handle(SH_TRANS);
367380
}

0 commit comments

Comments
 (0)