89bdc77 PR24955, libbfd terminating program on out of memory

Authored and Committed by Alan Modra 4 years ago
    PR24955, libbfd terminating program on out of memory
    
    This patch fixes the worst of the cases where libbfd might terminate
    a program due to calling xstrdup or xmalloc.  I've also fixed some
    error paths that didn't clean up properly.
    
    	PR 24955
    	* libbfd-in.h (bfd_strdup): New inline function.
    	* archive.c (_bfd_get_elt_at_filepos): Use bfd_strdup.  Close
    	bfd on error.
    	* elfcode.h (_bfd_elf_bfd_from_remote_memory): Use bfd_strdup.
    	* opncls.c (bfd_fopen): Use bfd_strdup.  Close fd and stream
    	on error.
    	(bfd_openstreamr): Use bfd_strdup.
    	(bfd_openr_iovec, bfd_openw, bfd_create): Likewise.
    	* plugin.c (try_load_plugin): Use bfd_malloc.
    	* libbfd.h: Regenerate.
    
        
file modified
+14 -0
file modified
+5 -1
file modified
+10 -1
file modified
+9 -0
file modified
+9 -0
file modified
+35 -6
file modified
+3 -1