]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PR 34353 objcopy: null-pointer dereference bfd/section.c:1433
authorAlan Modra <amodra@gmail.com>
Mon, 6 Jul 2026 01:56:24 +0000 (11:26 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 7 Jul 2026 00:49:31 +0000 (10:19 +0930)
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.

binutils/objcopy.c
binutils/testsuite/binutils-all/update-section.exp

index 89eb3f72dcd93a394bb896e5e9ff1771f01809ca..4ab7e8997b53d26ac71bc71dfdb0fa0da2b0ea37 100644 (file)
@@ -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);
index 273e1154ec926bef387b56acf3e1745f7b7ef092..3fd679b3cc7a16d5f1a96035d0ab861233217823 100644 (file)
@@ -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
 }