aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-01-01 13:52:38 +1030
committerAlan Modra <amodra@gmail.com>2022-01-01 14:22:11 +1030
commitad3d14c47e872fcd13d83c9a255266c7027c8e16 (patch)
tree15b0215ba2c33bc32cb160ef2ca1e6bf3cabca8d /bfd
parentaebb3d543da4d411d3d767912193c3849f59ff99 (diff)
downloadbinutils-ad3d14c47e872fcd13d83c9a255266c7027c8e16.zip
binutils-ad3d14c47e872fcd13d83c9a255266c7027c8e16.tar.gz
binutils-ad3d14c47e872fcd13d83c9a255266c7027c8e16.tar.bz2
asan: Null-dereference in _bfd_xcoff_copy_private_bfd_data
sec->output_section will be NULL when objcopy removes sections. * coff-rs6000.c (_bfd_xcoff_copy_private_bfd_data): Protect against objcopy removing sections.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/coff-rs6000.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 1cc2162..20b6074 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -386,7 +386,7 @@ _bfd_xcoff_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
else
{
sec = coff_section_from_bfd_index (ibfd, ix->sntoc);
- if (sec == NULL)
+ if (sec == NULL || sec->output_section == NULL)
ox->sntoc = 0;
else
ox->sntoc = sec->output_section->target_index;
@@ -396,7 +396,7 @@ _bfd_xcoff_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
else
{
sec = coff_section_from_bfd_index (ibfd, ix->snentry);
- if (sec == NULL)
+ if (sec == NULL || sec->output_section == NULL)
ox->snentry = 0;
else
ox->snentry = sec->output_section->target_index;