Skip to content

Commit cee79c1

Browse files
authored
Merge pull request #153 from GregThain/fix-memory-leaks-in-unit-tests
Fix memory leaks in the unit tests
2 parents b02c3c7 + 79e1d3c commit cee79c1

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

test/main.cpp

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,11 @@ TEST_F(SerializeTest, VerifyTest) {
131131
ASSERT_TRUE(rv == 0) << err_msg;
132132
std::unique_ptr<char, decltype(&free)> value_ptr(value, free);
133133
EXPECT_STREQ(value, "https://demo.scitokens.org/gtest");
134-
135134
value_ptr.reset();
135+
136136
rv = scitoken_get_claim_string(m_read_token.get(), "doesnotexist", &value,
137137
&err_msg);
138+
free(err_msg);
138139
EXPECT_FALSE(rv == 0);
139140
}
140141

@@ -154,6 +155,7 @@ TEST_F(SerializeTest, TestStringList) {
154155
EXPECT_STREQ(value[1], "group1");
155156

156157
EXPECT_TRUE(value[2] == nullptr);
158+
scitoken_free_string_list(value);
157159
}
158160

159161
TEST_F(SerializeTest, VerifyWLCGTest) {
@@ -181,6 +183,8 @@ TEST_F(SerializeTest, VerifyWLCGTest) {
181183

182184
value_ptr.reset();
183185
rv = scitoken_get_claim_string(m_read_token.get(), "ver", &value, &err_msg);
186+
free(err_msg);
187+
err_msg = nullptr;
184188
EXPECT_FALSE(rv == 0);
185189

186190
// Accepts only a WLCG token
@@ -195,6 +199,7 @@ TEST_F(SerializeTest, VerifyWLCGTest) {
195199
SciTokenProfile::SCITOKENS_1_0);
196200
rv = scitoken_deserialize_v2(token_value, m_read_token.get(), nullptr,
197201
&err_msg);
202+
free(err_msg);
198203
ASSERT_FALSE(rv == 0);
199204
}
200205

@@ -223,6 +228,7 @@ TEST_F(SerializeTest, FailVerifyToken) {
223228

224229
// Should fail; we signed it with the wrong public key.
225230
rv = scitoken_deserialize_v2(value, m_read_token.get(), nullptr, &err_msg);
231+
free(err_msg);
226232
EXPECT_FALSE(rv == 0);
227233
}
228234

@@ -254,6 +260,7 @@ TEST_F(SerializeTest, VerifyATJWTTest) {
254260
SciTokenProfile::SCITOKENS_2_0);
255261
rv = scitoken_deserialize_v2(token_value, m_read_token.get(), nullptr,
256262
&err_msg);
263+
free(err_msg);
257264
ASSERT_FALSE(rv == 0);
258265
}
259266

@@ -278,6 +285,7 @@ TEST_F(SerializeTest, FailVerifyATJWTTest) {
278285
SciTokenProfile::AT_JWT);
279286
rv = scitoken_deserialize_v2(token_value, m_read_token.get(), nullptr,
280287
&err_msg);
288+
free(err_msg);
281289
ASSERT_FALSE(rv == 0);
282290
}
283291

@@ -315,12 +323,15 @@ TEST_F(SerializeTest, EnforcerTest) {
315323
rv = scitoken_deserialize_v2(token_value, m_read_token.get(), nullptr,
316324
&err_msg);
317325
ASSERT_TRUE(rv == 0) << err_msg;
326+
free(err_msg);
318327

319328
rv = enforcer_test(enforcer, m_read_token.get(), &acl, &err_msg);
320329
ASSERT_STREQ(
321330
err_msg,
322331
"token verification failed: 'scope' claim verification failed.");
323332
ASSERT_TRUE(rv == -1) << err_msg;
333+
free(err_msg);
334+
enforcer_destroy(enforcer);
324335
}
325336

326337
TEST_F(SerializeTest, EnforcerScopeTest) {
@@ -347,6 +358,7 @@ TEST_F(SerializeTest, EnforcerScopeTest) {
347358

348359
rv = scitoken_deserialize_v2(token_value, m_read_token.get(), nullptr,
349360
&err_msg);
361+
free(token_value);
350362
ASSERT_TRUE(rv == 0) << err_msg;
351363

352364
Acl *acls;
@@ -366,6 +378,8 @@ TEST_F(SerializeTest, EnforcerScopeTest) {
366378
ASSERT_STREQ(resource, "/");
367379
}
368380
}
381+
enforcer_acl_free(acls);
382+
enforcer_destroy(enforcer);
369383
ASSERT_TRUE(found_read);
370384
ASSERT_TRUE(found_write);
371385
}
@@ -395,6 +409,7 @@ TEST_F(SerializeTest, DeserializeAsyncTest) {
395409
rv = scitoken_deserialize_continue(&scitoken, &status, &err_msg);
396410
ASSERT_TRUE(rv == 0) << err_msg;
397411
}
412+
scitoken_destroy(scitoken);
398413
}
399414

400415
TEST_F(SerializeTest, FailDeserializeAsyncTest) {
@@ -430,11 +445,15 @@ TEST_F(SerializeTest, FailDeserializeAsyncTest) {
430445
rv = scitoken_deserialize_start(value, &scitoken, nullptr, &status,
431446
&err_msg);
432447
EXPECT_FALSE(rv == 0) << err_msg;
448+
free(err_msg);
449+
err_msg = nullptr;
433450

434451
// Accepts only an at+jwt token, should fail with COMPAT token
435452
while (rv == 0 && status) {
436453
rv = scitoken_deserialize_continue(&scitoken, &status, &err_msg);
437454
EXPECT_FALSE(rv == 0) << err_msg;
455+
free(err_msg);
456+
err_msg = nullptr;
438457
}
439458
}
440459

@@ -452,6 +471,7 @@ TEST_F(SerializeTest, ExplicitTime) {
452471

453472
rv = scitoken_deserialize_v2(token_value, m_read_token.get(), nullptr,
454473
&err_msg);
474+
free(token_value);
455475
ASSERT_TRUE(rv == 0) << err_msg;
456476

457477
auto enforcer = enforcer_create("https://demo.scitokens.org/gtest",
@@ -461,18 +481,23 @@ TEST_F(SerializeTest, ExplicitTime) {
461481
rv = enforcer_generate_acls(enforcer, m_read_token.get(), &acls, &err_msg);
462482
ASSERT_TRUE(rv == 0) << err_msg;
463483
ASSERT_TRUE(acls != nullptr);
484+
enforcer_acl_free(acls);
464485

465486
enforcer_set_time(enforcer, time(NULL), &err_msg);
466487
rv = enforcer_generate_acls(enforcer, m_read_token.get(), &acls, &err_msg);
467488
ASSERT_TRUE(rv == 0) << err_msg;
468489

469490
enforcer_set_time(enforcer, time(NULL) + 100, &err_msg);
491+
enforcer_acl_free(acls);
470492
rv = enforcer_generate_acls(enforcer, m_read_token.get(), &acls, &err_msg);
493+
free(err_msg);
494+
err_msg = nullptr;
471495
ASSERT_FALSE(rv == 0);
472496

473497
enforcer_set_time(enforcer, time(NULL) - 100, &err_msg);
474498
rv = enforcer_generate_acls(enforcer, m_read_token.get(), &acls, &err_msg);
475499
ASSERT_FALSE(rv == 0);
500+
free(err_msg);
476501

477502
enforcer_destroy(enforcer);
478503
}
@@ -554,6 +579,7 @@ TEST_F(SerializeNoKidTest, VerifyATJWTTest) {
554579
SciTokenProfile::SCITOKENS_2_0);
555580
rv = scitoken_deserialize_v2(token_value, m_read_token.get(), nullptr,
556581
&err_msg);
582+
free(err_msg);
557583
ASSERT_FALSE(rv == 0);
558584
}
559585

@@ -611,6 +637,7 @@ TEST_F(KeycacheTest, RefreshInvalid) {
611637
auto rv =
612638
keycache_refresh_jwks("https://demo.scitokens.org/invalid", &err_msg);
613639
ASSERT_FALSE(rv == 0);
640+
free(err_msg);
614641

615642
rv = keycache_get_cached_jwks("https://demo.scitokens.org/invalid", &jwks,
616643
&err_msg);
@@ -703,10 +730,13 @@ TEST_F(KeycacheTest, InvalidConfigKeyTest) {
703730
std::string key = "invalid key";
704731
auto rv =
705732
scitoken_config_set_int(key.c_str(), new_update_interval, &err_msg);
733+
free(err_msg);
734+
err_msg = nullptr;
706735
ASSERT_FALSE(rv == 0);
707736

708737
const char *key2 = nullptr;
709738
rv = scitoken_config_set_int(key2, new_update_interval, &err_msg);
739+
free(err_msg);
710740
ASSERT_FALSE(rv == 0);
711741
}
712742

@@ -740,6 +770,7 @@ TEST_F(KeycacheTest, SetInvalidUpdateTest) {
740770
std::string key = "keycache.update_interval_s";
741771
auto rv =
742772
scitoken_config_set_int(key.c_str(), new_update_interval, &err_msg);
773+
free(err_msg);
743774
ASSERT_FALSE(rv == 0);
744775
}
745776

@@ -749,6 +780,7 @@ TEST_F(KeycacheTest, SetInvalidExpirationTest) {
749780
std::string key = "keycache.expiration_interval_s";
750781
auto rv =
751782
scitoken_config_set_int(key.c_str(), new_expiration_interval, &err_msg);
783+
free(err_msg);
752784
ASSERT_FALSE(rv == 0);
753785
}
754786

0 commit comments

Comments
 (0)