bug-binutils
[Top][All Lists]
Advanced

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

[Bug binutils/24891] objdump memory leaks when parsing malformed archive


From: cvs-commit at gcc dot gnu.org
Subject: [Bug binutils/24891] objdump memory leaks when parsing malformed archive
Date: Wed, 28 Aug 2019 23:32:07 +0000

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

--- 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 <address@hidden>:

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

commit 83cf0d04dcdc9a4e7f105a517390e4c1af444340
Author: Alan Modra <address@hidden>
Date:   Wed Aug 28 16:34:34 2019 +0930

    PR24891, objdump memory leaks when parsing malformed archive

    BFD was leaking memory in bfd_check_format_matches.  As part of
    deciding the proper format of an archive, BFD looks at the format of
    the first file stored.  That file's bfd was left open for reasons
    given in a comment removed in git commit 0e71e4955cd1 that said:
                 /* We ought to close `first' here, but we can't, because
                    we have no way to remove it from the archive cache.
                    It's close to impossible to figure out when we can
                    release bfd_ardata.  FIXME.  */
    Well, things have changed since that comment was true and we now can
    remove files from the archive cache.  Closing the first file is good
    and cures some of the leaks.  Other leaks are caused by
    bfd_check_format_matches throwing away bfd tdata before trying a new
    match.  That lost the element cache set up when format checking the
    first element in the archive.  The easiest and cleanest fix is to
    simply disable the caching when checking the first element.

        PR 24891
        * bfd.c (struct bfd): Add no_element_cache.
        * archive.c (_bfd_get_elt_at_filepos): Don't add element to
        archive cache when no_element_cache.
        (bfd_generic_archive_p): Set no_element_cache when opening first
        element to check format.  Close first element too.
        (do_slurp_bsd_armap): Don't zero ardata->cache here.
        * bfd-in2.h: Regenerate.

-- 
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]