Within create_dwfl, if dwfl_begin is successful but dwfl_report_offline
fails, the dwfl * pointer being reported is reset to NULL without calling
dwfl_end, causing a memory leak.

Update create_dwfl to call dwfl_end in this case, preventing the leak.

Signed-off-by: Aaron Merey <[email protected]>
---
 src/readelf.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/readelf.c b/src/readelf.c
index 6b886c59..138ded6b 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -978,6 +978,7 @@ create_dwfl (int fd, const char *fname)
        error (0, 0, _("failed reading '%s': %s"),
               fname, dwfl_errmsg (-1));
       close (dwfl_fd);         /* Consumed on success, not on failure.  */
+      dwfl_end (dwfl);
       dwfl = NULL;
     }
   else
-- 
2.51.0

Reply via email to