View Issue Details

IDProjectCategoryView StatusLast Update
0008808GNUnetset servicepublic2024-05-13 10:45
Reporterulfvonbelow Assigned ToFlorian Dold  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Platformx86-64OSGuix SystemOS Versiona1d711c92e
Product VersionGit master 
Fixed in Version0.21.2 
Summary0008808: memory leak in strata_estimator_destroy in gnunet-service-setu_strata_estimator.c
Descriptionstrata_estimator_create creates a 5-level hierarchy of allocations: a dynamically-allocated struct (1), containing a pointer to an array (2), whose elements are pointers to structs (3), which contain a pointer to an array (4), whose elements are pointers to structs (5). Only (1), (4), and (5) are being freed currently by strata_estimator_destroy. Additionally, in the "Failed to allocate memory" case of strata_estimator_create, only (1) and (5) are freed.
Steps To Reproduce1. Build gnunet with --enable-sanitizer
2. Start the node with gnunet-arm -s
3. Stop the node after a bit with gnunet-arm -e
4. Observe reported memory leak wherever you've configured setu to log to
Additional InformationPatch attached.
TagsNo tags attached.
Attached Files
0001-setu-fix-memory-leak-in-strata_estimator_destroy.patch (1,545 bytes)   
From e5503c52754277a54e3107f622a7c73af74f3a21 Mon Sep 17 00:00:00 2001
From: ulfvonbelow <striness@tilde.club>
Date: Sat, 4 May 2024 19:35:03 -0500
Subject: [PATCH] setu: fix memory leak in strata_estimator_destroy.

And also in the "failed to allocate memory" case of strata_estimator_create.
---
 src/service/setu/gnunet-service-setu_strata_estimator.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/service/setu/gnunet-service-setu_strata_estimator.c b/src/service/setu/gnunet-service-setu_strata_estimator.c
index 43ccf3afd..e5af92980 100644
--- a/src/service/setu/gnunet-service-setu_strata_estimator.c
+++ b/src/service/setu/gnunet-service-setu_strata_estimator.c
@@ -331,6 +331,12 @@ strata_estimator_create (unsigned int strata_count,
                     "Failed to allocate memory for strata estimator\n");
         for (j = 0; j < i; j++)
           ibf_destroy (se->stratas[strata_ctr]->strata[i]);
+        for (j = 0; j <= strata_ctr; j++)
+        {
+          GNUNET_free (se->stratas[j]->strata);
+          GNUNET_free (se->stratas[j]);
+        }
+        GNUNET_free (se->stratas);
         GNUNET_free (se);
         return NULL;
       }
@@ -463,6 +469,8 @@ strata_estimator_destroy (struct MultiStrataEstimator *se)
     for (i = 0; i < se->stratas[strata_ctr]->strata_count; i++)
       ibf_destroy (se->stratas[strata_ctr]->strata[i]);
     GNUNET_free (se->stratas[strata_ctr]->strata);
+    GNUNET_free (se->stratas[strata_ctr]);
   }
+  GNUNET_free (se->stratas);
   GNUNET_free (se);
 }
-- 
2.41.0

Activities

schanzen

2024-05-13 10:45

administrator   ~0022391

Applied

Issue History

Date Modified Username Field Change
2024-05-07 05:04 ulfvonbelow New Issue
2024-05-07 05:04 ulfvonbelow Status new => assigned
2024-05-07 05:04 ulfvonbelow Assigned To => Florian Dold
2024-05-07 05:04 ulfvonbelow File Added: 0001-setu-fix-memory-leak-in-strata_estimator_destroy.patch
2024-05-13 10:45 schanzen Status assigned => resolved
2024-05-13 10:45 schanzen Resolution open => fixed
2024-05-13 10:45 schanzen Fixed in Version => 0.21.2
2024-05-13 10:45 schanzen Note Added: 0022391