diff options
author | Nick Clifton <nickc@redhat.com> | 2020-01-03 14:41:02 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-01-03 14:41:02 +0000 |
commit | 7a0fb7be96e0ce79e1ae429bc1ba913e5244d537 (patch) | |
tree | 2cd6d1c387030ff641bee30455eee384d516d7a9 /bfd/mach-o.c | |
parent | a2322019f5669e80444cdf6a8222f94a45301b3a (diff) | |
download | gdb-7a0fb7be96e0ce79e1ae429bc1ba913e5244d537.zip gdb-7a0fb7be96e0ce79e1ae429bc1ba913e5244d537.tar.gz gdb-7a0fb7be96e0ce79e1ae429bc1ba913e5244d537.tar.bz2 |
Fix potential illegal memory access failures in the BFD library by ensuring that the return value from bfd_malloc() is checked before it is used.
PR 25308
* elf-properties.c (_bfd_elf_convert_gnu_properties): Check the
return value from bfd_malloc.
* elf32-arm.c (bfd_elf32_arm_vfp11_fix_veneer_locations): Likewise.
(bfd_elf32_arm_stm32l4xx_fix_veneer_locations): Likewise.
(elf32_arm_filter_cmse_symbols): Likewise.
(elf32_arm_write_section): Likewise.
* mach-o.c (bfd_mach_o_core_fetch_environment): Likewise.
(bfd_mach_o_follow_dsym): Likewise.
* pef.c (bfd_pef_print_loader_section): Likewise.
(bfd_pef_scan_start_address): Likewise.
(bfd_pef_parse_function_stubs): Likewise.
(bfd_pef_parse_symbols): Likewise.
Diffstat (limited to 'bfd/mach-o.c')
-rw-r--r-- | bfd/mach-o.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/bfd/mach-o.c b/bfd/mach-o.c index b494a77..3b6fbb5 100644 --- a/bfd/mach-o.c +++ b/bfd/mach-o.c @@ -5752,6 +5752,8 @@ bfd_mach_o_core_fetch_environment (bfd *abfd, unsigned char *buf = bfd_malloc (1024); unsigned long size = 1024; + if (buf == NULL) + return -1; for (;;) { bfd_size_type nread = 0; @@ -5797,6 +5799,8 @@ bfd_mach_o_core_fetch_environment (bfd *abfd, bottom = seg->fileoff + seg->filesize - offset; top = seg->fileoff + seg->filesize - 4; *rbuf = bfd_malloc (top - bottom); + if (*rbuf == NULL) + return -1; *rlen = top - bottom; memcpy (*rbuf, buf + size - *rlen, *rlen); @@ -5941,6 +5945,9 @@ bfd_mach_o_follow_dsym (bfd *abfd) dsym_filename = (char *)bfd_malloc (strlen (base_bfd->filename) + strlen (dsym_subdir) + 1 + strlen (base_basename) + 1); + if (dsym_filename == NULL) + return NULL; + sprintf (dsym_filename, "%s%s/%s", base_bfd->filename, dsym_subdir, base_basename); |