View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0007651 | GNUnet | DHT service | public | 2023-01-29 23:49 | 2024-06-08 10:03 |
| Reporter | ulfvonbelow | Assigned To | schanzen | Due Date | |
| Priority | normal | Severity | trivial | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | Git master | ||||
| Target Version | 0.19.4 | Fixed in Version | 0.21.2 | ||
| Summary | 0007651: "Memory leak" in gnunet-dht-get and gnunet-dht-put | ||||
| Description | The argv created by GNUNET_STRINGS_get_utf8_args is never freed. | ||||
| Steps To Reproduce | ./configure --enable-sanitizer make make install make check | ||||
| Additional Information | Not a real problem, again, but sanitizers... Patch attached. | ||||
| Tags | patch | ||||
| Attached Files | 0001-DHT-remove-memory-leak-in-gnunet-dht-get-put.patch (2,234 bytes)
From 5ecf4d9a574395b7a2c62623f658bcc043eca28f Mon Sep 17 00:00:00 2001
From: ulfvonbelow <strilen@tilde.club>
Date: Sun, 29 Jan 2023 07:08:37 -0600
Subject: [PATCH] DHT: remove "memory leak" in gnunet-dht-{get,put}.
Not really a memory leak, but good to get the sanitizers off our back.
---
src/dht/gnunet-dht-get.c | 26 ++++++++++++++------------
src/dht/gnunet-dht-put.c | 9 +++++----
2 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/src/dht/gnunet-dht-get.c b/src/dht/gnunet-dht-get.c
index 1ae9235f8..4a071dbad 100644
--- a/src/dht/gnunet-dht-get.c
+++ b/src/dht/gnunet-dht-get.c
@@ -329,18 +329,20 @@ main (int argc, char *const *argv)
GNUNET_STRINGS_get_utf8_args (argc, argv,
&argc, &argv))
return 2;
- return (GNUNET_OK ==
- GNUNET_PROGRAM_run (
- argc,
- argv,
- "gnunet-dht-get",
- gettext_noop (
- "Issue a GET request to the GNUnet DHT, prints results."),
- options,
- &run,
- NULL))
- ? ret
- : 1;
+ ret = (GNUNET_OK ==
+ GNUNET_PROGRAM_run (
+ argc,
+ argv,
+ "gnunet-dht-get",
+ gettext_noop (
+ "Issue a GET request to the GNUnet DHT, prints results."),
+ options,
+ &run,
+ NULL))
+ ? ret
+ : 1;
+ GNUNET_free (argv);
+ return ret;
}
diff --git a/src/dht/gnunet-dht-put.c b/src/dht/gnunet-dht-put.c
index 531107ef2..2281ff56b 100644
--- a/src/dht/gnunet-dht-put.c
+++ b/src/dht/gnunet-dht-put.c
@@ -226,13 +226,12 @@ main (int argc, char *const *argv)
GNUNET_GETOPT_OPTION_END
};
-
if (GNUNET_OK !=
GNUNET_STRINGS_get_utf8_args (argc, argv,
&argc, &argv))
return 2;
expiration = GNUNET_TIME_UNIT_HOURS;
- return (GNUNET_OK ==
+ ret = (GNUNET_OK ==
GNUNET_PROGRAM_run (
argc,
argv,
@@ -242,8 +241,10 @@ main (int argc, char *const *argv)
options,
&run,
NULL))
- ? ret
- : 1;
+ ? ret
+ : 1;
+ GNUNET_free (argv);
+ return ret;
}
--
2.38.1
| ||||
| Actually, reverting this as we cannot free a const pointer here. This may have to be fixed in PROGRAM_run... | |
| ab66a7a9d..eabc1baaf | |
| eabc1baaf980d8948f3fc0ac83a84446d5f1b226 didn't reintroduce the 'ret = ...' line to replace the 'return ...' line, so it still always returns before the memory is freed. So the sanitizers still fail on this. | |
| Fix committed to master branch. | |
| released some time ago | |
| The fix seems to have made its way only to gnunet-dht-get, not gnunet-dht-put | |
| 95f0616e0ca40eb2eef5881b0eaccc110a27fddc | |
| Fix committed to master branch. | |
| 0.21.2 released | |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2023-01-29 23:49 | ulfvonbelow | New Issue | |
| 2023-01-29 23:49 | ulfvonbelow | Tag Attached: patch | |
| 2023-01-29 23:49 | ulfvonbelow | File Added: 0001-DHT-remove-memory-leak-in-gnunet-dht-get-put.patch | |
| 2023-02-06 04:53 | schanzen | Assigned To | => schanzen |
| 2023-02-06 04:53 | schanzen | Status | new => resolved |
| 2023-02-06 04:53 | schanzen | Resolution | open => fixed |
| 2023-02-06 04:53 | schanzen | Fixed in Version | => 0.19.4 |
| 2023-02-06 05:19 | schanzen | Target Version | => 0.19.4 |
| 2023-02-06 05:54 | schanzen | Status | resolved => feedback |
| 2023-02-06 05:54 | schanzen | Resolution | fixed => reopened |
| 2023-02-06 05:54 | schanzen | Note Added: 0019765 | |
| 2023-02-06 06:05 | schanzen | Status | feedback => resolved |
| 2023-02-06 06:05 | schanzen | Resolution | reopened => fixed |
| 2023-02-06 06:05 | schanzen | Note Added: 0019766 | |
| 2023-05-25 16:51 | ulfvonbelow | Status | resolved => feedback |
| 2023-05-25 16:51 | ulfvonbelow | Resolution | fixed => reopened |
| 2023-05-25 16:51 | ulfvonbelow | Note Added: 0020201 | |
| 2023-06-01 18:21 | schanzen | ||
| 2023-06-01 18:21 | schanzen | Note Added: 0020211 | |
| 2023-06-01 18:21 | schanzen | Status | feedback => resolved |
| 2023-06-01 18:21 | schanzen | Resolution | reopened => fixed |
| 2023-06-01 18:26 | schanzen | Note Added: 0020212 | |
| 2023-06-01 18:26 | schanzen | Status | resolved => closed |
| 2024-05-03 01:49 | ulfvonbelow | Status | closed => feedback |
| 2024-05-03 01:49 | ulfvonbelow | Resolution | fixed => reopened |
| 2024-05-03 01:49 | ulfvonbelow | Note Added: 0022331 | |
| 2024-05-05 12:04 | schanzen | Status | feedback => resolved |
| 2024-05-05 12:04 | schanzen | Fixed in Version | 0.19.4 => 0.21.2 |
| 2024-05-05 12:04 | schanzen | Note Added: 0022343 | |
| 2024-05-05 12:04 | schanzen | ||
| 2024-05-05 12:04 | schanzen | Note Added: 0022344 | |
| 2024-05-05 12:04 | schanzen | Resolution | reopened => fixed |
| 2024-06-08 10:03 | schanzen | Note Added: 0022556 | |
| 2024-06-08 10:03 | schanzen | Status | resolved => closed |