bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/25993] Bug in bfd causes crashes with DXVK


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/25993] Bug in bfd causes crashes with DXVK
Date: Wed, 20 May 2020 02:17:29 +0000

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

--- Comment #10 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=7b958a48e1322880f23cdb0a1c35643dd27d3ddb

commit 7b958a48e1322880f23cdb0a1c35643dd27d3ddb
Author: Alan Modra <address@hidden>
Date:   Tue May 19 12:58:59 2020 +0930

    PR25993, read of freed memory

    ldmain.c:add_archive_element copies file name pointers from the bfd to
    a lang_input_statement_type.
      input->filename = abfd->filename;
      input->local_sym_name = abfd->filename;
    This results in stale pointers when twiddling the bfd filename in
    places like the pe ld after_open.  So don't free the bfd filename,
    and make copies using bfd_alloc memory that won't result in small
    memory leaks that annoy memory checkers.

            PR 25993
    bfd/
            * archive.c (_bfd_get_elt_at_filepos): Don't strdup filename,
            use bfd_set_filename.
            * elfcode.h (_bfd_elf_bfd_from_remote_memory): Likewise.
            * mach-o.c (bfd_mach_o_fat_member_init): Likewise.
            * opncls.c (bfd_fopen, bfd_openstreamr, bfd_openr_iovec,
bfd_openw),
            (bfd_create): Likewise.
            (_bfd_delete_bfd): Don't free filename.
            (bfd_set_filename): Copy filename param to bfd_alloc'd memory,
            return pointer to the copy or NULL on alloc fail.
            * vms-lib.c (_bfd_vms_lib_get_module): Free newname and test
            result of bfd_set_filename.
            * bfd-in2.h: Regenerate.
    gdb/
            * solib-darwin.c (darwin_bfd_open): Don't strdup pathname for
            bfd_set_filename.
            * solib-aix.c (solib_aix_bfd_open): Use std::string for name
            passed to bfd_set_filename.
            * symfile-mem.c (add_vsyscall_page): Likewise for string
            passed to symbol_file_add_from_memory.
            (symbol_file_add_from_memory): Make name param a const char* and
            don't strdup.
    ld/
            * emultempl/pe.em (gld_${EMULATION_NAME}_after_open): Don't copy
            other_bfd_filename for bfd_set_filename, and test result of
            bfd_set_filename call.  Don't create a new is->filename, simply
            copy from bfd filename.  Free new_name after bfd_set_filename.
            * emultempl/pep.em (gld_${EMULATION_NAME}_after_open): Likewise.

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