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

            Bug ID: 22216
           Summary: infinite loop in process_symbol_table in readelf.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 10489
  --> https://sourceware.org/bugzilla/attachment.cgi?id=10489&action=edit
poc of infinite loop

When I run "readelf -a -g -t --dyn-syms -n -u -c -D -I loop3.elf", it just
print information persistenly. I look into the problem and find that the
problem is in the function process_symbol_table. Here is part of its snippet:

11446           for (hn = 0; hn < nbuckets; hn++)
11447             {
11448               if (! buckets[hn])
11449                 continue;
11450 
11451               for (si = buckets[hn]; si < nchains && si > 0; si =
chains[si])
11452                 print_dynamic_symbol (si, hn);
11453             }
11454         }
11455 

When infinite loop happens, var si=1, while chains[1]=1, so the for loop in
line 11452 will never stop.
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