PR26418 UBSAN: cache.c:386 null pointer fwrite

Alan Modra amodra@gmail.com
Fri Aug 28 13:43:52 GMT 2020


And some more.

	PR 26418
	* ecofflink.c (bfd_ecoff_write_accumulated_debug): Don't write
	zero size buffers.

diff --git a/bfd/ecofflink.c b/bfd/ecofflink.c
index e8c3f9f188..111ffdbc37 100644
--- a/bfd/ecofflink.c
+++ b/bfd/ecofflink.c
@@ -1652,7 +1652,7 @@ bfd_ecoff_write_accumulated_debug (void * handle,
   /* The external strings and symbol are not converted over to using
      shuffles.  FIXME: They probably should be.  */
   amt = debug->symbolic_header.issExtMax;
-  if (bfd_bwrite (debug->ssext, amt, abfd) != amt)
+  if (amt != 0 && bfd_bwrite (debug->ssext, amt, abfd) != amt)
     goto error_return;
   if ((debug->symbolic_header.issExtMax & (swap->debug_align - 1)) != 0)
     {
@@ -1682,7 +1682,7 @@ bfd_ecoff_write_accumulated_debug (void * handle,
 		  == (bfd_vma) bfd_tell (abfd)));
 
   amt = debug->symbolic_header.iextMax * swap->external_ext_size;
-  if (bfd_bwrite (debug->external_ext, amt, abfd) != amt)
+  if (amt != 0 && bfd_bwrite (debug->external_ext, amt, abfd) != amt)
     goto error_return;
 
   free (space);

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list