View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008810 | GNUnet | DHT service | public | 2024-05-07 05:24 | 2024-06-08 12:03 |
Reporter | ulfvonbelow | Assigned To | schanzen | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | x86-64 | OS | Guix System | OS Version | a1d711c92e |
Product Version | Git master | ||||
Fixed in Version | 0.21.2 | ||||
Summary | 0008810: segmentation fault when stopping gnunet-service-dht | ||||
Description | Some time back, the DHT underlay plugins were switched to being compiled-in. At that time, GDS_Underlay.libname stopped being set, but was still present in the struct, taking on the default value of NULL because GNUNET_malloc zeroes the memory it returns. A call to GNUNET_PLUGIN_unload that passes in libname remained, however, despite there now being hardcoded logic in shutdown_task that does the cleanup for the underlays itself. The resulting NULL is passed to strcmp, causing a segmentation fault. | ||||
Steps To Reproduce | 1. Build gnunet with --enable-sanitizer (or don't, it will just be less obvious where it's happening) 2. Start the node with gnunet-arm -s 3. Stop the node after a bit with gnunet-arm -e 4. Observe segmentation fault wherever you've configured dht to log to | ||||
Additional Information | Patch attached which removes the GDS_Underlay.libname field and the call to GNUNET_PLUGIN_unload. | ||||
Tags | No tags attached. | ||||
Attached Files | 0001-dht-remove-vestigial-GNUNET_PLUGIN_unload.patch (1,181 bytes)
From b1abcc15de281f6efe4de7b631e200f7ce52110b Mon Sep 17 00:00:00 2001 From: ulfvonbelow <striness@tilde.club> Date: Sat, 4 May 2024 20:25:19 -0500 Subject: [PATCH] dht: remove vestigial GNUNET_PLUGIN_unload. u->libname is no longer set, so this passes in NULL, which is then passed to strcmp() and causes a segfault. Also remove the libname field from struct GDS_Underlay entirely. --- src/service/dht/gnunet-service-dht.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/service/dht/gnunet-service-dht.c b/src/service/dht/gnunet-service-dht.c index ab9e179bc..4579bfc2b 100644 --- a/src/service/dht/gnunet-service-dht.c +++ b/src/service/dht/gnunet-service-dht.c @@ -79,11 +79,6 @@ struct GDS_Underlay * Name of the underlay (i.e. "gnunet" or "ip"). */ char *name; - - /** - * Name of the library providing the underlay. - */ - char *libname; }; @@ -383,8 +378,6 @@ shutdown_task (void *cls) while (NULL != (u = u_head)) { - GNUNET_PLUGIN_unload (u->libname, - u->dhtu); GNUNET_CONTAINER_DLL_remove (u_head, u_tail, u); -- 2.41.0 | ||||
Date Modified | Username | Field | Change |
---|---|---|---|
2024-05-07 05:24 | ulfvonbelow | New Issue | |
2024-05-07 05:24 | ulfvonbelow | File Added: 0001-dht-remove-vestigial-GNUNET_PLUGIN_unload.patch | |
2024-05-13 10:46 | schanzen | Assigned To | => schanzen |
2024-05-13 10:46 | schanzen | Status | new => resolved |
2024-05-13 10:46 | schanzen | Resolution | open => fixed |
2024-05-13 10:46 | schanzen | Fixed in Version | => 0.21.2 |
2024-05-13 10:46 | schanzen | Note Added: 0022394 | |
2024-06-08 12:03 | schanzen | Note Added: 0022535 | |
2024-06-08 12:03 | schanzen | Status | resolved => closed |