]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
dwarf_getsrclines.c: Restore initialization of debug_str_offset
authorAaron Merey <amerey@redhat.com>
Thu, 14 May 2026 21:12:59 +0000 (17:12 -0400)
committerAaron Merey <amerey@redhat.com>
Thu, 14 May 2026 22:04:25 +0000 (18:04 -0400)
Prior to commit d4b0848b ("libdw: dwarf_getsrcfiles should not imply
dwarf_getsrclines") debug_str_offset was initialized with a default
value of 0.  This default initialization was removed as part of the
refactor introduced in d4b0848b.

Restore debug_str_offset's default initialization to 0.  For a
well-formed binary, it wasn't possible to use debug_str_offset
uninitialized.  The value is only relevant for line headers using
NVIDIA's CUBIN extension, in which case the real offset was always
stored in debug_str_offset before use.  However it's possible for a
malformed binary to cause uninitialized use and static analyzers
may complain about this.

Signed-off-by: Aaron Merey <amerey@redhat.com>
libdw/dwarf_getsrclines.c

index b3fe7cc87cd9e86c174dd83997acca4db756a0db..3521511993c16d37b947d3484c68f9a15a27ca47 100644 (file)
@@ -279,6 +279,10 @@ read_line_header (Dwarf *dbg, unsigned address_size,
   /* The opcode base.  */
   lh->opcode_base = *linep++;
 
+  /* If the line header uses the NVIDIA CUBIN extension, debug_str_offset's
+     actual value will be read from the last 4 bytes of the header.  */
+  lh->debug_str_offset = 0;
+
   /* Remember array with the standard opcode length (-1 to account for
      the opcode with value zero not being mentioned).  */
   lh->standard_opcode_lengths = linep - 1;