From 83bbc679e509047f171fa4db9faa0d05cd26a258 Mon Sep 17 00:00:00 2001 From: Xiaole He Date: Tue, 20 Dec 2022 21:06:34 +0800 Subject: [PATCH] elf-reader: reclaim fd and mem before break In elf::reader::priv::locate_alt_ctf_debug_info from src/abg-elf-reader.cc, the resources held by the hdl and fd variables aren't necessary released because the control-flow gets out of the loop too early. This patch fixes the problem. * src/abg-elf-reader.cc (elf::reader::priv::locate_alt_ctf_debug_info): Reclaim fd and mem before break. Also, do not try to locate the debug info it's already been located. Signed-off-by: Xiaole He Signed-off-by: Dodji Seketeli --- src/abg-elf-reader.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/abg-elf-reader.cc b/src/abg-elf-reader.cc index c07f0655..656418e3 100644 --- a/src/abg-elf-reader.cc +++ b/src/abg-elf-reader.cc @@ -420,6 +420,9 @@ struct reader::priv void locate_alt_ctf_debug_info() { + if (alt_ctf_section) + return; + Elf_Scn *section = elf_helpers::find_section(elf_handle, ".gnu_debuglink", @@ -453,10 +456,12 @@ struct reader::priv // unlikely .ctf was designed to be present in stripped file alt_ctf_section = elf_helpers::find_section(hdl, ".ctf", SHT_PROGBITS); - break; elf_end(hdl); close(fd); + + if (alt_ctf_section) + break; } } -- 2.34.1