* readelf.c (display_debug_lines): Fix section length check
authorRichard Henderson <rth@redhat.com>
Fri, 17 Nov 2000 08:28:59 +0000 (08:28 +0000)
committerRichard Henderson <rth@redhat.com>
Fri, 17 Nov 2000 08:28:59 +0000 (08:28 +0000)
        and end_of_sequence computation.

binutils/ChangeLog
binutils/readelf.c

index 7587886..bda8ab8 100644 (file)
@@ -1,3 +1,8 @@
+2000-11-17  Richard Henderson  <rth@redhat.com>
+
+       * readelf.c (display_debug_lines): Fix section length check
+       and end_of_sequence computation.
+
 2000-11-06  Nick Clifton  <nickc@redhat.com>
 
        * binutils.texi: Add GNU Free Documentation License.
index f9c4273..f823815 100644 (file)
@@ -5005,7 +5005,7 @@ display_debug_lines (section, start, file)
 
       /* Check the length of the block.  */
       info.li_length = BYTE_GET (external->li_length);
-      if (info.li_length > section->sh_size)
+      if (info.li_length + 4 > section->sh_size)
        {
          warn
            (_("The line info appears to be corrupt - the section is too small\n"));
@@ -5040,7 +5040,7 @@ display_debug_lines (section, start, file)
       printf (_("  Line Range:                  %d\n"), info.li_line_range);
       printf (_("  Opcode Base:                 %d\n"), info.li_opcode_base);
 
-      end_of_sequence = data + info.li_length + sizeof (info.li_length);
+      end_of_sequence = data + info.li_length + 4;
 
       reset_state_machine (info.li_default_is_stmt);