Skip to content

Commit 234d5f0

Browse files
committed
test: avoid memory leaks in test_jose.c
Signed-off-by: Hans Zandbelt <[email protected]>
1 parent 11e657b commit 234d5f0

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

test/test_jose.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ START_TEST(test_jose_jwk_and_json_and_copy_lists) {
189189
char *s_json = NULL;
190190
ck_assert_msg(oidc_jwk_to_json(pool, pub, &s_json, &err) == TRUE, "oidc_jwk_to_json failed");
191191
ck_assert_ptr_nonnull(s_json);
192+
oidc_jwk_destroy(pub);
192193
json_error_t je;
193194
json_t *j = json_loads(s_json, 0, &je);
194195
ck_assert_ptr_nonnull(j);
@@ -206,16 +207,21 @@ START_TEST(test_jose_jwk_and_json_and_copy_lists) {
206207
oidc_jwk_t *sym_copy = oidc_jwk_copy(pool, sym);
207208
ck_assert_ptr_nonnull(sym_copy);
208209
ck_assert_ptr_nonnull(sym_copy->kid);
210+
oidc_jwk_destroy(sym_copy);
209211

210212
apr_array_header_t *arr = apr_array_make(pool, 1, sizeof(const oidc_jwk_t *));
211213
APR_ARRAY_PUSH(arr, const oidc_jwk_t *) = sym;
212214
apr_array_header_t *arr_copy = oidc_jwk_list_copy(pool, arr);
213215
ck_assert_msg(arr_copy != NULL && arr_copy->nelts == 1, "oidc_jwk_list_copy failed");
216+
oidc_jwk_list_destroy(arr_copy);
214217

215218
apr_hash_t *h = apr_hash_make(pool);
216219
apr_hash_set(h, sym->kid, APR_HASH_KEY_STRING, sym);
217220
oidc_jwk_list_destroy_hash(h);
218221
ck_assert_int_eq(apr_hash_count(h), 0);
222+
223+
oidc_jwk_list_destroy(arr);
224+
ck_assert_int_eq(arr->nelts, 0);
219225
}
220226
END_TEST
221227

@@ -252,11 +258,15 @@ START_TEST(test_jwt_sign_verify_and_encrypt_decrypt) {
252258
apr_hash_set(keys, sym->kid, APR_HASH_KEY_STRING, sym);
253259
ck_assert_msg(oidc_jwt_verify(pool, jwt, keys, &err) == TRUE, "oidc_jwt_verify failed");
254260

261+
oidc_jwk_destroy(sym);
262+
oidc_jwt_destroy(jwt);
263+
255264
oidc_jwt_t *none_jwt = oidc_jwt_new(pool, 1, 1);
256265
json_object_set_new(none_jwt->payload.value.json, "hello", json_string("world"));
257266
none_jwt->header.alg = apr_pstrdup(pool, CJOSE_HDR_ALG_NONE);
258267
char *s = oidc_jose_jwt_serialize(pool, none_jwt, &err);
259268
ck_assert_ptr_nonnull(s);
269+
oidc_jwt_destroy(none_jwt);
260270

261271
char *dot = strchr(s, '.');
262272
ck_assert_ptr_nonnull(dot);
@@ -311,6 +321,8 @@ START_TEST(test_jwt_sign_verify_and_encrypt_decrypt) {
311321
ck_assert_msg(oidc_jwt_encrypt(pool, jwe, pub, payload, (int)_oidc_strlen(payload), &serialized, &err) == TRUE,
312322
"oidc_jwt_encrypt failed");
313323
ck_assert_ptr_nonnull(serialized);
324+
oidc_jwk_destroy(pub);
325+
oidc_jwt_destroy(jwe);
314326

315327
apr_hash_t *dec_keys = apr_hash_make(pool);
316328
apr_hash_set(dec_keys, priv->kid, APR_HASH_KEY_STRING, priv);
@@ -320,6 +332,8 @@ START_TEST(test_jwt_sign_verify_and_encrypt_decrypt) {
320332
"oidc_jwe_decrypt failed");
321333
ck_assert_msg(dec_plain_len == (int)_oidc_strlen(payload), "decrypted length mismatch");
322334
ck_assert_msg(memcmp(dec_plain, payload, dec_plain_len) == 0, "decrypted plaintext mismatch");
335+
336+
oidc_jwk_list_destroy_hash(dec_keys);
323337
}
324338
END_TEST
325339

@@ -358,13 +372,15 @@ START_TEST(test_jwk_json_parse_and_jwks) {
358372

359373
char *s_json = NULL;
360374
ck_assert_msg(oidc_jwk_to_json(pool, pub, &s_json, &err) == TRUE, "oidc_jwk_to_json failed");
375+
oidc_jwk_destroy(pub);
361376
json_error_t je;
362377
json_t *j = json_loads(s_json, 0, &je);
363378
ck_assert_ptr_nonnull(j);
364379

365380
oidc_jwk_t *parsed = oidc_jwk_parse(pool, j, &err);
366381
ck_assert_ptr_nonnull(parsed);
367382
ck_assert_ptr_nonnull(parsed->kid);
383+
oidc_jwk_destroy(parsed);
368384

369385
ck_assert_msg(oidc_is_jwk(j) == TRUE, "oidc_is_jwk false for JWK json");
370386

@@ -379,6 +395,7 @@ START_TEST(test_jwk_json_parse_and_jwks) {
379395

380396
json_decref(j);
381397
json_decref(jwks);
398+
oidc_jwk_list_destroy(jwk_list);
382399
}
383400
END_TEST
384401

@@ -418,15 +435,20 @@ START_TEST(test_alg2keysize_and_hdr_get_and_jwt_parse) {
418435
char *s = oidc_jose_jwt_serialize(pool, jwt, &err);
419436
ck_assert_ptr_nonnull(s);
420437

438+
oidc_jwt_destroy(jwt);
439+
421440
apr_hash_t *keys = apr_hash_make(pool);
422441
apr_hash_set(keys, sym->kid, APR_HASH_KEY_STRING, sym);
423442
oidc_jwt_t *parsed = NULL;
424443
ck_assert_msg(oidc_jwt_parse(pool, s, &parsed, keys, FALSE, &err) == TRUE, "oidc_jwt_parse failed");
425444
ck_assert_ptr_nonnull(parsed);
426445

446+
oidc_jwk_destroy(sym);
447+
427448
const char *alg = oidc_jwt_hdr_get(parsed, "alg");
428449
ck_assert_ptr_nonnull(alg);
429450
ck_assert_msg(_oidc_strcmp(alg, CJOSE_HDR_ALG_HS256) == 0, "parsed alg mismatch");
451+
oidc_jwt_destroy(parsed);
430452
}
431453
END_TEST
432454

0 commit comments

Comments
 (0)