Section reloc_count is an unsigned int. Adding one for a NULL
terminator to an array of arelent pointers can wrap the count to
zero. Avoid that by doing the addition as longs.
* coffgen.c (coff_get_reloc_upper_bound): Don't overflow unsigned
int expression.
* elf.c (_bfd_elf_get_reloc_upper_bound): Likewise.
* elf64-sparc.c (elf64_sparc_get_reloc_upper_bound): Likewise.
* mach-o.c (bfd_mach_o_get_reloc_upper_bound): Likewise.
* vms-alpha.c (alpha_vms_get_reloc_upper_bound): Likewise.
return -1;
}
#endif
- return (asect->reloc_count + 1) * sizeof (arelent *);
+ return (asect->reloc_count + 1L) * sizeof (arelent *);
}
asymbol *
return -1;
}
#endif
- return (asect->reloc_count + 1) * sizeof (arelent *);
+ return (asect->reloc_count + 1L) * sizeof (arelent *);
}
/* Canonicalize the relocs. */
return -1;
}
#endif
- return (sec->reloc_count * 2 + 1) * sizeof (arelent *);
+ return (sec->reloc_count * 2L + 1) * sizeof (arelent *);
}
static long
return -1;
}
#endif
- return (asect->reloc_count + 1) * sizeof (arelent *);
+ return (asect->reloc_count + 1L) * sizeof (arelent *);
}
/* In addition to the need to byte-swap the symbol number, the bit positions
{
alpha_vms_slurp_relocs (abfd);
- return (section->reloc_count + 1) * sizeof (arelent *);
+ return (section->reloc_count + 1L) * sizeof (arelent *);
}
/* Convert relocations from VMS (external) form into BFD internal