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 |