From 9f2e078c694d375ff7a633e629d05554c873c8dc Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Mon, 19 Jan 2026 19:31:58 +0100 Subject: lib: Fix memleak in oap tests The test_oap_piggyback_data was not cleaning up the passed data correctly. Also, a FILE * was not properly closed in the openssl load_pubkey_raw_file_to_der() wrapper. Refactored some fail paths to make them easier to read. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/irmd/oap/tests/oap_test.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/irmd/oap/tests') diff --git a/src/irmd/oap/tests/oap_test.c b/src/irmd/oap/tests/oap_test.c index 70943d7c..70f0a248 100644 --- a/src/irmd/oap/tests/oap_test.c +++ b/src/irmd/oap/tests/oap_test.c @@ -245,14 +245,13 @@ static int test_oap_piggyback_data(void) /* Set server's response data (ctx.data will take cli data) */ srv_data.len = strlen(srv_data_str); - srv_data.data = malloc(srv_data.len); - if (srv_data.data == NULL) - goto fail_cleanup; - memcpy(srv_data.data, srv_data_str, srv_data.len); + srv_data.data = (uint8_t *) srv_data_str; freebuf(ctx.data); - ctx.data = srv_data; - clrbuf(srv_data); + ctx.data.data = srv_data.data; + ctx.data.len = srv_data.len; + srv_data.data = NULL; + srv_data.len = 0; if (oap_srv_process_ctx(&ctx) < 0) goto fail_cleanup; @@ -276,6 +275,11 @@ static int test_oap_piggyback_data(void) goto fail_cleanup; } + /* Free the copied data */ + free(ctx.data.data); + ctx.data.data = NULL; + ctx.data.len = 0; + if (memcmp(ctx.cli.key, ctx.srv.key, SYMMKEYSZ) != 0) { printf("Client and server keys do not match!\n"); goto fail_cleanup; -- cgit v1.2.3