summaryrefslogtreecommitdiff
path: root/src/irmd
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-01-19 19:31:58 +0100
committerSander Vrijders <sander@ouroboros.rocks>2026-01-23 08:20:27 +0100
commit9f2e078c694d375ff7a633e629d05554c873c8dc (patch)
treed408b478df97dff2d8c2646cf8680d0a3dd9b0fa /src/irmd
parentc20c5bfb40bb65d4196bcf97e80acd97496ddda3 (diff)
downloadouroboros-9f2e078c694d375ff7a633e629d05554c873c8dc.tar.gz
ouroboros-9f2e078c694d375ff7a633e629d05554c873c8dc.zip
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 <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/irmd')
-rw-r--r--src/irmd/oap/tests/oap_test.c16
1 files changed, 10 insertions, 6 deletions
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;