]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
libdw: check offset dwarf_formstring in all cases
authorAleksei Vetrov <vvvvvv@google.com>
Thu, 16 Nov 2023 21:29:22 +0000 (21:29 +0000)
committerMark Wielaard <mark@klomp.org>
Fri, 17 Nov 2023 15:30:01 +0000 (16:30 +0100)
This check was initially added to test if offset overflows the safe
prefix where any string will be null-terminated. However the check
was placed in a wrong place and didn't cover all `attrp->form` cases.

    * libdw/dwarf_formstring.c (dwarf_formstring): Move offset check
      right before returning the result.

Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
libdw/dwarf_formstring.c

index 0ee42411b44ee0d24cacda789c2dbdd5d37f9c70..65f03a5e234dee3e9880aea6d8a83585f3c2064b 100644 (file)
@@ -173,11 +173,11 @@ dwarf_formstring (Dwarf_Attribute *attrp)
        off = read_4ubyte_unaligned (dbg, datap);
       else
        off = read_8ubyte_unaligned (dbg, datap);
-
-      if (off >= data_size)
-       goto invalid_offset;
     }
 
+  if (off >= data_size)
+    goto invalid_offset;
+
   return (const char *) data->d_buf + off;
 }
 INTDEF(dwarf_formstring)