View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008795 | GNUnet | GNS | public | 2024-05-03 05:49 | 2024-06-08 12:03 |
Reporter | ulfvonbelow | Assigned To | schanzen | ||
Priority | normal | Severity | trivial | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | x86-64 | OS | Guix System | OS Version | a1d711c92e |
Product Version | 0.21.1 | ||||
Fixed in Version | 0.21.2 | ||||
Summary | 0008795: memory leak in test_gnsrecord_testvectors | ||||
Description | rrblock is never freed | ||||
Steps To Reproduce | 1. ./configure --enable-sanitizer ; make ; make check 2. Observe memory leak reported in test_gnsrecord_testvectors | ||||
Additional Information | Patch attached. With this plus the other recent patches, the test suite now passes with sanitizers enabled once again (provided that test_namestore_api_edit_records_sqlite is disabled and LSAN_OPTIONS=suppressions=$PWD/suppressions.txt where suppressions.txt contains "leak:test_cadet.c") at least it was a much smaller patchset this time | ||||
Tags | No tags attached. | ||||
Attached Files | 0001-gnsrecord-fix-memory-leak-in-test_gnsrecord_testvect.patch (1,821 bytes)
From 7b925b8ce71a7f1d7ea7e7aafc14abf2d590af22 Mon Sep 17 00:00:00 2001 From: ulfvonbelow <striness@tilde.club> Date: Thu, 2 May 2024 21:51:09 -0500 Subject: [PATCH] gnsrecord: fix memory leak in test_gnsrecord_testvectors --- src/lib/gnsrecord/test_gnsrecord_testvectors.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/gnsrecord/test_gnsrecord_testvectors.c b/src/lib/gnsrecord/test_gnsrecord_testvectors.c index 21a7a83b0..12b9efe56 100644 --- a/src/lib/gnsrecord/test_gnsrecord_testvectors.c +++ b/src/lib/gnsrecord/test_gnsrecord_testvectors.c @@ -655,6 +655,7 @@ main () printf ("FAIL: query does not match:"); printf (" expected: %s", GNUNET_h2s (&expected_query)); printf (", was: %s\n", GNUNET_h2s (&query)); + GNUNET_free (rrblock); res = 1; break; } @@ -671,6 +672,7 @@ main () { printf ("FAIL: Deserialization of RDATA failed\n"); res = 1; + GNUNET_free (rrblock); break; } expire = GNUNET_GNSRECORD_record_get_expiration_time ( @@ -681,6 +683,7 @@ main () (GNUNET_OK != check_derivations_pkey (label, expire, &pub, &tvs[i]))) { res = 1; + GNUNET_free (rrblock); break; } else if ((GNUNET_GNSRECORD_TYPE_EDKEY == ntohl (pub.type)) && @@ -688,6 +691,7 @@ main () &tvs[i]))) { res = 1; + GNUNET_free (rrblock); break; } if (GNUNET_OK != GNUNET_GNSRECORD_block_decrypt (rrblock, @@ -698,10 +702,14 @@ main () { printf ("FAIL: Decryption of RRBLOCK failed\n"); res = 1; + GNUNET_free (rrblock); break; } if (0 != res) + { + GNUNET_free (rrblock); break; + } printf ("Good.\n"); } return res; -- 2.41.0 | ||||
|
ah, the previous patch didn't include the GNUNET_free in the normal looping case... revised patch attached 0001-gnsrecord-fix-memory-leak-in-test_gnsrecord_testvect-2.patch (1,850 bytes)
From 029f91509a172ea4d50259451044c48e453192ae Mon Sep 17 00:00:00 2001 From: ulfvonbelow <striness@tilde.club> Date: Thu, 2 May 2024 21:51:09 -0500 Subject: [PATCH] gnsrecord: fix memory leak in test_gnsrecord_testvectors --- src/lib/gnsrecord/test_gnsrecord_testvectors.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lib/gnsrecord/test_gnsrecord_testvectors.c b/src/lib/gnsrecord/test_gnsrecord_testvectors.c index 21a7a83b0..4b171b165 100644 --- a/src/lib/gnsrecord/test_gnsrecord_testvectors.c +++ b/src/lib/gnsrecord/test_gnsrecord_testvectors.c @@ -655,6 +655,7 @@ main () printf ("FAIL: query does not match:"); printf (" expected: %s", GNUNET_h2s (&expected_query)); printf (", was: %s\n", GNUNET_h2s (&query)); + GNUNET_free (rrblock); res = 1; break; } @@ -671,6 +672,7 @@ main () { printf ("FAIL: Deserialization of RDATA failed\n"); res = 1; + GNUNET_free (rrblock); break; } expire = GNUNET_GNSRECORD_record_get_expiration_time ( @@ -681,6 +683,7 @@ main () (GNUNET_OK != check_derivations_pkey (label, expire, &pub, &tvs[i]))) { res = 1; + GNUNET_free (rrblock); break; } else if ((GNUNET_GNSRECORD_TYPE_EDKEY == ntohl (pub.type)) && @@ -688,6 +691,7 @@ main () &tvs[i]))) { res = 1; + GNUNET_free (rrblock); break; } if (GNUNET_OK != GNUNET_GNSRECORD_block_decrypt (rrblock, @@ -698,10 +702,15 @@ main () { printf ("FAIL: Decryption of RRBLOCK failed\n"); res = 1; + GNUNET_free (rrblock); break; } if (0 != res) + { + GNUNET_free (rrblock); break; + } + GNUNET_free (rrblock); printf ("Good.\n"); } return res; -- 2.41.0 |
|
applied. |
|
0.21.2 released |
Date Modified | Username | Field | Change |
---|---|---|---|
2024-05-03 05:49 | ulfvonbelow | New Issue | |
2024-05-03 05:49 | ulfvonbelow | File Added: 0001-gnsrecord-fix-memory-leak-in-test_gnsrecord_testvect.patch | |
2024-05-03 06:20 | ulfvonbelow | Note Added: 0022332 | |
2024-05-03 06:20 | ulfvonbelow | File Added: 0001-gnsrecord-fix-memory-leak-in-test_gnsrecord_testvect-2.patch | |
2024-05-05 14:17 | schanzen | Assigned To | => schanzen |
2024-05-05 14:17 | schanzen | Status | new => resolved |
2024-05-05 14:17 | schanzen | Resolution | open => fixed |
2024-05-05 14:17 | schanzen | Fixed in Version | => 0.21.2 |
2024-05-05 14:17 | schanzen | Note Added: 0022350 | |
2024-06-08 12:03 | schanzen | Note Added: 0022551 | |
2024-06-08 12:03 | schanzen | Status | resolved => closed |