PR 34353 objcopy: null-pointer dereference bfd/section.c:1433

Alan Modra <[email protected]>
Newsgroups gmane.comp.gnu.binutils
Message-ID <[email protected]>
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 --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
 }
 

-- 
Alan Modra
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.