https://sourceware.org/bugzilla/show_bug.cgi?id=22210

            Bug ID: 22210
           Summary: large loop in read_formatted_entries in dwarf2.c in
                    binutils 2.30(HEAD)
           Product: binutils
           Version: 2.30 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: luanjunchao at 163 dot com
  Target Milestone: ---

Created attachment 10484
  --> https://sourceware.org/bugzilla/attachment.cgi?id=10484&action=edit
poc of large loop

I wonder if it's normal or not. When I run "nm: -A -a -l -S -s --special-syms
--synthetic --with-symbol-versions hang.elf", it stops for a long time and call
realloc persistently.

I look into the problem and find the point, here is the snippet of function
read_formatted_entries:

  data_count = _bfd_safe_read_leb128 (abfd, buf, &bytes_read, FALSE, buf_end);
  buf += bytes_read;
  for (datai = 0; datai < data_count; datai++)
    {
      bfd_byte *format = format_header_data;
      struct fileinfo fe;

      ......

      if (!callback (table, fe.name, fe.dir, fe.time, fe.size))
        return FALSE;
    }

data_count is unsigned long, and callback is function
line_info_add_include_dir_stub, and then I debug it with gdb:

(gdb)ptype data_count
unsigned long
(gdb)p/x data_count
0xfffbfff
(gdb)p/x datai
0x01

I'm not sure if there is lack of verifcation or not, it seems abnormal.
The poc is attached here.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to