bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/29370] dwarf.c: infinite loop in display_debug_abbrev


From: cvs-commit at gcc dot gnu.org
Subject: [Bug binutils/29370] dwarf.c: infinite loop in display_debug_abbrev
Date: Thu, 21 Jul 2022 04:15:55 +0000

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

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Alan Modra <amodra@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=695c6dfe7e85006b98c8b746f3fd5f913c94ebff

commit 695c6dfe7e85006b98c8b746f3fd5f913c94ebff
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Jul 21 09:56:15 2022 +0930

    PR29370, infinite loop in display_debug_abbrev

    The PR29370 testcase is a fuzzed object file with multiple
    .trace_abbrev sections.  Multiple .trace_abbrev or .debug_abbrev
    sections are not a violation of the DWARF standard.  The DWARF5
    standard even gives an example of multiple .debug_abbrev sections
    contained in groups.  Caching and lookup of processed abbrevs thus
    needs to be done by section and offset rather than base and offset.
    (Why base anyway?)  Or, since section contents are kept, by a pointer
    into the contents.

            PR 29370
            * dwarf.c (struct abbrev_list): Replace abbrev_base and
            abbrev_offset with raw field.
            (find_abbrev_list_by_abbrev_offset): Delete.
            (find_abbrev_list_by_raw_abbrev): New function.
            (process_abbrev_set): Set list->raw and list->next.
            (find_and_process_abbrev_set): Replace abbrev list lookup with
            new function.  Don't set list abbrev_base, abbrev_offset or next.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]