git: c983ec6428ec - main - libdwarf: Fix error handling in _dwarf_elf_init()

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Mon, 13 Dec 2021 23:50:43 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=c983ec6428ecfa362903cbdba1dc9f4303e2f28c

commit c983ec6428ecfa362903cbdba1dc9f4303e2f28c
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2021-12-13 23:45:24 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2021-12-13 23:46:59 +0000

    libdwarf: Fix error handling in _dwarf_elf_init()
    
    We were not setting "ret" before jumping to the error path, so the
    function returned success even when it had failed.
    
    Reviewed by:    emaste
    MFC after:      1 week
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D33420
---
 contrib/elftoolchain/libdwarf/libdwarf_elf_init.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/contrib/elftoolchain/libdwarf/libdwarf_elf_init.c b/contrib/elftoolchain/libdwarf/libdwarf_elf_init.c
index c9b6ae601e0e..68062ee3209f 100644
--- a/contrib/elftoolchain/libdwarf/libdwarf_elf_init.c
+++ b/contrib/elftoolchain/libdwarf/libdwarf_elf_init.c
@@ -398,17 +398,17 @@ _dwarf_elf_init(Dwarf_Debug dbg, Elf *elf, Dwarf_Error *error)
 			}
 
 			if ((sh.sh_flags & SHF_COMPRESSED) != 0) {
-				if (_dwarf_elf_decompress(dbg, e, scn, ed,
-				    es, error) != DW_DLE_NONE)
+				if ((ret = _dwarf_elf_decompress(dbg, e, scn,
+				    ed, es, error)) != DW_DLE_NONE)
 					goto fail_cleanup;
 			} else {
 				ed->ed_size = ed->ed_data->d_size;
 			}
 
 			if (_libdwarf.applyreloc) {
-				if (_dwarf_elf_relocate(dbg, elf,
+				if ((ret = _dwarf_elf_relocate(dbg, elf,
 				    &e->eo_data[j], elf_ndxscn(scn), symtab_ndx,
-				    symtab_data, error) != DW_DLE_NONE)
+				    symtab_data, error)) != DW_DLE_NONE)
 					goto fail_cleanup;
 			}