summaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/dwarf.c9
2 files changed, 14 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 335c7d02fa..85d21ebfa6 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,5 +1,11 @@
2021-05-13 Alan Modra <amodra@gmail.com>
+ PR 27861
+ * dwarf.c (display_debug_str_offsets): Sanity check dwarf5
+ header length.
+
+2021-05-13 Alan Modra <amodra@gmail.com>
+
PR 27860
* dwarf.c (display_debug_frames): Sanity check cie_off before
attempting to read cie.
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 20bd92657b..b22d33c43d 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -7487,7 +7487,14 @@ display_debug_str_offsets (struct dwarf_section *section,
}
else
{
- entries_end = curr + length;
+ if (length <= (dwarf_vma) (end - curr))
+ entries_end = curr + length;
+ else
+ {
+ warn (_("Section %s is too small %#lx\n"),
+ section->name, (unsigned long) section->size);
+ entries_end = end;
+ }
int version;
SAFE_BYTE_GET_AND_INC (version, curr, 2, end);