Tidy commit 49910fd88dcd
authorAlan Modra <amodra@gmail.com>
Sat, 10 Jul 2021 00:37:17 +0000 (10:07 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 10 Jul 2021 03:59:04 +0000 (13:29 +0930)
Pointer range checking is UB if the values compared are outside the
underlying array elements (plus one).

* dwarf2.c (read_address): Remove accidental commit.
(read_ranges): Compare offset rather than pointers.

bfd/ChangeLog
bfd/dwarf2.c

index 9cbb9f91dd4bdc441c4e21bb03ce356d9218e2eb..4dc3d68525515ac77ec17589b134cf29405b643d 100644 (file)
@@ -1,3 +1,8 @@
+2021-07-10  Alan Modra  <amodra@gmail.com>
+
+       * dwarf2.c (read_address): Remove accidental commit.
+       (read_ranges): Compare offset rather than pointers.
+
 2021-07-08  Nick Clifton  <nickc@redhat.com>
 
        * po/pt.po: Updated Portuguese translation.
index 1247f952def003ef71a08b50c5557d272e683b07..04f56a7b18710a34f9551d7c8eb3ef250b17efc4 100644 (file)
@@ -909,8 +909,7 @@ read_address (struct comp_unit *unit, bfd_byte **ptr, bfd_byte *buf_end)
   if (bfd_get_flavour (unit->abfd) == bfd_target_elf_flavour)
     signed_vma = get_elf_backend_data (unit->abfd)->sign_extend_vma;
 
-  if (unit->addr_size > (size_t) (buf_end - buf)
-      || (buf > buf_end))
+  if (unit->addr_size > (size_t) (buf_end - buf))
     {
       *ptr = buf_end;
       return 0;
@@ -3094,12 +3093,10 @@ read_ranges (struct comp_unit *unit, struct arange *arange,
        return false;
     }
 
-  ranges_ptr = unit->file->dwarf_ranges_buffer + offset;
-  if (ranges_ptr < unit->file->dwarf_ranges_buffer)
+  if (offset > unit->file->dwarf_ranges_size)
     return false;
+  ranges_ptr = unit->file->dwarf_ranges_buffer + offset;
   ranges_end = unit->file->dwarf_ranges_buffer + unit->file->dwarf_ranges_size;
-  if (ranges_ptr >= ranges_end)
-    return false;
 
   for (;;)
     {