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

            Bug ID: 29617
           Summary: Ld segfaults when bfd_close() fails
           Product: binutils
           Version: 2.26
            Status: UNCONFIRMED
          Severity: minor
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: nishikawa.k at nec dot com
  Target Milestone: ---

When the ld linker fails to close an output file (ex. the file on NFS is
removed from another machine), it refers the memory area of the variable for
the output file that is illegally deallocated for outputing message.

This problem occurs in the ld code below.

<ld/ldmain.c>
 465       if (! bfd_close (link_info.output_bfd))
 466         einfo (_("%F%B: final close failed: %E\n"), link_info.output_bfd);

The "bfd_close" function calls "bclose"(bfd/opncls.c:line 740) to close the
output file pointed to by the argument link_info.output_bfd.
If the file close fails, the "bfd_close" function returns false and the memory
area of the argument "link_info.output_bfd" is deallocated.
And then, when calling the function "einfo" on line 466 of ld/ldmain.c, the
deallocated link_info.output_bfd is referred to and it causes a segmentation
fault.

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

Reply via email to