View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008789 | GNUnet | transport service | public | 2024-05-03 03:43 | 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 | 0008789: memory leaks in transport-testing-communicator.c | ||||
Description | The various fields of struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue aren't freed when it is. | ||||
Steps To Reproduce | 1. ./configure --enable-sanitizer ; make ; make check 2. Observe memory leak in anything that uses transport-testing-communicator | ||||
Additional Information | Patch attached. | ||||
Tags | No tags attached. | ||||
Attached Files | 0001-transport-fix-memory-leaks-in-transport-testing-comm.patch (2,459 bytes)
From a3183dd7cfd13b75a554e92856bcffade570b19d Mon Sep 17 00:00:00 2001 From: ulfvonbelow <striness@tilde.club> Date: Thu, 2 May 2024 19:25:16 -0500 Subject: [PATCH] transport: fix memory leaks in transport-testing-communicator.c. --- .../transport/transport-testing-communicator.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/service/transport/transport-testing-communicator.c b/src/service/transport/transport-testing-communicator.c index 7d8abbe1e..9ee70fe7b 100644 --- a/src/service/transport/transport-testing-communicator.c +++ b/src/service/transport/transport-testing-communicator.c @@ -186,6 +186,7 @@ handle_communicator_available ( return; /* receive-only communicator */ } tc_h->c_characteristics = ntohl (msg->cc); + GNUNET_free (tc_h->c_addr_prefix); tc_h->c_addr_prefix = GNUNET_strdup ((const char *) &msg[1]); if (NULL != tc_h->communicator_available_cb) { @@ -320,6 +321,7 @@ handle_add_address (void *cls, if (0 == size) return; /* receive-only communicator */ LOG (GNUNET_ERROR_TYPE_DEBUG, "received add address cb %u\n", size); + GNUNET_free (tc_h->c_address); tc_h->c_address = GNUNET_strdup ((const char *) &msg[1]); if (NULL != tc_h->add_address_cb) { @@ -852,6 +854,7 @@ communicator_start ( "-c", tc_h->cfg_filename, NULL); + GNUNET_free (loprefix); if (NULL == tc_h->c_proc) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to start communicator!"); @@ -1093,6 +1096,7 @@ void GNUNET_TRANSPORT_TESTING_transport_communicator_service_stop ( struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h) { + struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *queue; shutdown_communicator (tc_h->c_proc); shutdown_service (tc_h->sh); shutdown_nat (tc_h->nat_proc); @@ -1100,6 +1104,14 @@ GNUNET_TRANSPORT_TESTING_transport_communicator_service_stop ( shutdown_peerstore (tc_h->ps_proc); shutdown_statistics (tc_h->stat_proc); GNUNET_CONFIGURATION_destroy (tc_h->cfg); + while (NULL != (queue = tc_h->queue_head)) + { + GNUNET_CONTAINER_DLL_remove (tc_h->queue_head, tc_h->queue_tail, queue); + GNUNET_free (queue); + } + GNUNET_free (tc_h->c_address); + GNUNET_free (tc_h->cfg_filename); + GNUNET_free (tc_h->c_addr_prefix); GNUNET_free (tc_h); } -- 2.41.0 | ||||
Date Modified | Username | Field | Change |
---|---|---|---|
2024-05-03 03:43 | ulfvonbelow | New Issue | |
2024-05-03 03:43 | ulfvonbelow | File Added: 0001-transport-fix-memory-leaks-in-transport-testing-comm.patch | |
2024-05-05 14:01 | schanzen | Assigned To | => schanzen |
2024-05-05 14:01 | schanzen | Status | new => resolved |
2024-05-05 14:01 | schanzen | Resolution | open => fixed |
2024-05-05 14:01 | schanzen | Fixed in Version | => 0.21.2 |
2024-05-05 14:01 | schanzen | Note Added: 0022342 | |
2024-06-08 12:03 | schanzen | Note Added: 0022557 | |
2024-06-08 12:03 | schanzen | Status | resolved => closed |