summaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2021-05-15 15:15:47 +0930
committerAlan Modra <amodra@gmail.com>2021-05-15 15:16:35 +0930
commit5250d2f0a536276cbc8735e53ae70425780b991f (patch)
tree7284340c6fc3a93b480ccfc7232b69d26d301238 /binutils
parent6ca073501796fb41372af7f746411fbb498957a3 (diff)
display_debug_str_offsets
* dwarf.c (display_debug_str_offsets): Constrain reads to length given in header.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/dwarf.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 6d36f58a9c..670ab97704 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,5 +1,10 @@
2021-05-15 Alan Modra <amodra@gmail.com>
+ * dwarf.c (display_debug_str_offsets): Constrain reads to length
+ given in header.
+
+2021-05-15 Alan Modra <amodra@gmail.com>
+
* dwarf.c (display_debug_aranges): Delete initial_length_size.
Use end_ranges to constrain data reads to header length. Avoid
pointer UB.
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index cd76f3f5e8..a0b84fc8d8 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -7480,12 +7480,12 @@ display_debug_str_offsets (struct dwarf_section *section,
}
int version;
- SAFE_BYTE_GET_AND_INC (version, curr, 2, end);
+ SAFE_BYTE_GET_AND_INC (version, curr, 2, entries_end);
if (version != 5)
warn (_("Unexpected version number in str_offset header: %#x\n"), version);
int padding;
- SAFE_BYTE_GET_AND_INC (padding, curr, 2, end);
+ SAFE_BYTE_GET_AND_INC (padding, curr, 2, entries_end);
if (padding != 0)
warn (_("Unexpected value in str_offset header's padding field: %#x\n"), padding);