From: Alan Modra Date: Fri, 10 Feb 2023 00:24:32 +0000 (+1030) Subject: objcopy of mach-o indirect symbols X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7027a373b2422eb682df69639308134283edd0b8;p=binutils-gdb.git objcopy of mach-o indirect symbols Anti-fuzzer measure. I'm not sure what the correct fix is for objcopy. Probably the BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS, BFD_MACH_O_S_LAZY_SYMBOL_POINTERS and BFD_MACH_O_S_SYMBOL_STUBS contents should be read. * mach-o.c (bfd_mach_o_section_get_nbr_indirect): Omit sections with NULL sec->indirect_syms. --- diff --git a/bfd/mach-o.c b/bfd/mach-o.c index 15da219ba57..a910e1146ea 100644 --- a/bfd/mach-o.c +++ b/bfd/mach-o.c @@ -526,6 +526,15 @@ bfd_mach_o_section_get_nbr_indirect (bfd *abfd, bfd_mach_o_section *sec) { unsigned int elsz; + /* FIXME: This array is set by the assembler but does not seem to be + set anywhere for objcopy. Since bfd_mach_o_build_dysymtab will + not fill in output bfd_mach_o_dysymtab_command indirect_syms when + this array is NULL we may as well return zero for the size. + This is enough to stop objcopy allocating huge amounts of memory + for indirect symbols in fuzzed object files. */ + if (sec->indirect_syms == NULL) + return 0; + elsz = bfd_mach_o_section_get_entry_size (abfd, sec); if (elsz == 0) return 0;