PR26418 UBSAN: cache.c:386 null pointer fwrite
authorAlan Modra <amodra@gmail.com>
Fri, 28 Aug 2020 13:36:47 +0000 (23:06 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 28 Aug 2020 13:45:20 +0000 (23:15 +0930)
And some more.

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

bfd/ChangeLog
bfd/ecofflink.c

index 805d1568b1c35ea5991720778f61e5c33b528855..33cc1c474e1d12abef161bfc22f200f2787315bd 100644 (file)
@@ -1,3 +1,9 @@
+2020-08-28  Alan Modra  <amodra@gmail.com>
+
+       PR 26418
+       * ecofflink.c (bfd_ecoff_write_accumulated_debug): Don't write
+       zero size buffers.
+
 2020-08-28  Alan Modra  <amodra@gmail.com>
 
        PR 26418
index e8c3f9f188ef3e41378d8a8ad31710bb25ad687a..111ffdbc37984e596212cd278605a8e943e5fd46 100644 (file)
@@ -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);