[binutils-gdb] PR 34353 objcopy: null-pointer dereference bfd/section.c:1433
Alan Modra via Binutils-cvs <[email protected]> Tue, 7 Jul 2026 01:13:01 +0000 (GMT)
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=64ca9aa24218cee8b31c4dc47694369da67b1acd commit 64ca9aa24218cee8b31c4dc47694369da67b1acd Author: Alan Modra <[email protected]> Date: Mon Jul 6 11:26:24 2026 +0930 PR 34353 objcopy: null-pointer dereference bfd/section.c:1433 objcopy --update-section specifying a SHT_GROUP section hits a case where output_section is NULL. * objcopy.c (copy_object): Don't segfault when update_sections output_section is NULL. Remove the "not found" part of existing error so this message can be used. * testsuite/binutils-all/update-section.exp: Update to suit. Diff: --- binutils/objcopy.c | 6 +++--- binutils/testsuite/binutils-all/update-section.exp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 89eb3f72dcd..4ab7e8997b5 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -3072,13 +3072,13 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch) pupdate = pupdate->next) { pupdate->section = bfd_get_section_by_name (ibfd, pupdate->name); - if (pupdate->section == NULL) + if (pupdate->section == NULL + || (osec = pupdate->section->output_section) == NULL) { - non_fatal (_("error: %s not found, can't be updated"), pupdate->name); + non_fatal (_("error: %s can't be updated"), pupdate->name); return false; } - osec = pupdate->section->output_section; if (!bfd_set_section_size (osec, pupdate->size)) { bfd_nonfatal_message (NULL, obfd, osec, NULL); diff --git a/binutils/testsuite/binutils-all/update-section.exp b/binutils/testsuite/binutils-all/update-section.exp index 273e1154ec9..3fd679b3cc7 100644 --- a/binutils/testsuite/binutils-all/update-section.exp +++ b/binutils/testsuite/binutils-all/update-section.exp @@ -111,7 +111,7 @@ do_compare update-1.o update-4.o # Check that --update-section on an unknown section will fail. if { ![do_objcopy update-2.o \ "--update-section .bar=tmpdir/dumped-contents" \ - "error: .bar not found, can't be updated"] } then { + "error: .bar can't be updated"] } then { return }