bfd: Set error to bfd_error_malformed_archive only if unset

When reading an archive member, set error to bfd_error_malformed_archive
on open_nested_file failure only if the error is unset.

	PR ld/28138
	* archive.c (_bfd_get_elt_at_filepos): Don't set error to
	bfd_error_malformed_archive if it has been set.
This commit is contained in:
H.J. Lu
2021-07-26 05:37:57 -07:00
parent 4b41648fff
commit 5b37a5ca1d

View File

@ -713,8 +713,9 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
/* It's not an element of a nested archive;
open the external file as a bfd. */
bfd_set_error (bfd_error_no_error);
n_bfd = open_nested_file (filename, archive);
if (n_bfd == NULL)
if (n_bfd == NULL && bfd_get_error () == bfd_error_no_error)
bfd_set_error (bfd_error_malformed_archive);
}
else