From: Mark Wielaard Date: Thu, 9 Jul 2026 20:56:56 +0000 (+0200) Subject: libdw: Check there are any header bytes in str_offsets_base_off X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6f8f78ce4a1b56f96f2db531cc2c9eddb5be1fc3;p=thirdparty%2Felfutils.git libdw: Check there are any header bytes in str_offsets_base_off We tried to read the str_offsets header length and only then checked if there were any bytes left. Make sure to check there are at least 4 bytes for the initial unit length. * libdw/libdwP.h (str_offsets_base_off): Check before initial unit_length read. https://sourceware.org/bugzilla/show_bug.cgi?id=34383 Reported-by: Karan Kurani Signed-off-by: Mark Wielaard --- diff --git a/libdw/libdwP.h b/libdw/libdwP.h index 628777b0..5e1029bd 100644 --- a/libdw/libdwP.h +++ b/libdw/libdwP.h @@ -1282,6 +1282,8 @@ str_offsets_base_off (Dwarf *dbg, Dwarf_CU *cu) uint64_t unit_length; uint16_t version; + if (unlikely (readendp - readp < 4)) + goto no_header; unit_length = read_4ubyte_unaligned_inc (dbg, readp); if (unlikely (unit_length == 0xffffffff)) {