elf_begin.c: Use relative offset in archive size check
Before creating an elf descriptor for an archive member, dup_elf
verifies that the size of an archive is large enough to contain the
member. This check uses the member's offset relative to the map_address
of the top-level archive containing the member.
This check can incorrectly fail when an archive contains another
archive as a member. For members of the inner archive, their offset
relative to the outer archive might be significantly larger than
the max_size of the inner archive. This appears as if the offset and
max_size values are inconsistent and the creation of the member's elf
descriptor is stopped unnecessarily.
Fix this by accounting for the inner archive's non-zero start_offset
when judging whether the member can fit within it.
Also perform this size check before creating a copy of the member's
Elf_Arhdr to prevent leaking the header's ar_name and ar_rawname if
the size check fails.