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 <[email protected]>
---
libdw/dwarf_getsrclines.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c
index b3fe7cc8..35215119 100644
--- a/libdw/dwarf_getsrclines.c
+++ b/libdw/dwarf_getsrclines.c
@@ -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;
--
2.54.0