Blob Blame History Raw
--- binutils.orig/bfd/archive.c	2019-10-04 15:26:08.544327573 +0100
+++ binutils-2.30/bfd/archive.c	2019-10-04 16:58:45.088039134 +0100
@@ -734,6 +734,9 @@ _bfd_get_elt_at_filepos (bfd *archive, f
   /* Copy is_linker_input.  */
   n_bfd->is_linker_input = archive->is_linker_input;
 
+  /* Coverity does not realise that _bfd_add_bfd_to_archive_cache actually
+     stores the newly created bfd and so flags a resource leak.  */
+  /* coverity[noescape: FALSE] */
   if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_bfd))
     return n_bfd;
 
diff -rup binutils.orig/bfd/coffcode.h binutils-2.30/bfd/coffcode.h
--- binutils.orig/bfd/coffcode.h	2019-10-07 15:49:39.425618524 +0100
+++ binutils-2.30/bfd/coffcode.h	2019-10-07 15:53:18.335157361 +0100
@@ -3737,6 +3737,9 @@ coff_write_object_contents (bfd * abfd)
 
       internal_f.f_nscns++;
 
+      /* Coverity flags this strncpy as possibly creating a string
+	 that is not NUL terminated.  This is in fact OK.  */
+      /* coverity[buffer_size_warning: FALSE] */
       strncpy (section.s_name, current->name, SCNNMLEN);
 
 #ifdef COFF_LONG_SECTION_NAMES
@@ -3775,6 +3778,9 @@ coff_write_object_contents (bfd * abfd)
 		 buffer, just in case.  */
 	      sprintf (s_name_buf, "/%lu", (unsigned long) string_size);
 	      /* Then strncpy takes care of any padding for us.  */
+	      /* Coverity flags this strncpy as possibly creating a string
+		 that is not NUL terminated.  This is in fact OK.  */
+	      /* coverity[buffer_size_warning: FALSE] */
 	      strncpy (section.s_name, s_name_buf, SCNNMLEN);
 	      string_size += len + 1;
 	      long_section_names = TRUE;
diff -rup binutils.orig/bfd/coffgen.c binutils-2.30/bfd/coffgen.c
--- binutils.orig/bfd/coffgen.c	2019-10-07 15:49:37.845629069 +0100
+++ binutils-2.30/bfd/coffgen.c	2019-10-07 15:53:46.443969714 +0100
@@ -923,6 +923,9 @@ coff_fix_symbol_name (bfd *abfd,
     {
       if (name_length <= SYMNMLEN && !bfd_coff_force_symnames_in_strings (abfd))
 	/* This name will fit into the symbol neatly.  */
+	/* Coverity flags this strncpy as possibly creating a string
+	   that is not NUL terminated.  This is in fact OK.  */
+	/* coverity[buffer_size_warning: FALSE] */
 	strncpy (native->u.syment._n._n_name, symbol->name, SYMNMLEN);
 
       else if (!bfd_coff_symname_in_debug (abfd, &native->u.syment))
diff -rup binutils.orig/bfd/cofflink.c binutils-2.30/bfd/cofflink.c
--- binutils.orig/bfd/cofflink.c	2019-10-07 15:49:37.565630938 +0100
+++ binutils-2.30/bfd/cofflink.c	2019-10-07 15:54:21.177736099 +0100
@@ -2633,6 +2633,9 @@ _bfd_coff_write_global_sym (struct bfd_h
     }
 
   if (strlen (h->root.root.string) <= SYMNMLEN)
+    /* Coverity flags this strncpy as possibly creating a string
+       that is not NUL terminated.  This is in fact OK.  */
+    /* coverity[buffer_size_warning: FALSE] */
     strncpy (isym._n._n_name, h->root.root.string, SYMNMLEN);
   else
     {
diff -rup binutils.orig/bfd/elf64-x86-64.c binutils-2.30/bfd/elf64-x86-64.c
--- binutils.orig/bfd/elf64-x86-64.c	2019-10-07 15:49:38.144627073 +0100
+++ binutils-2.30/bfd/elf64-x86-64.c	2019-10-07 15:56:53.559674302 +0100
@@ -463,7 +463,13 @@ elf_x86_64_write_core_note (bfd *abfd, c
 	{
 	  prpsinfo32_t data;
 	  memset (&data, 0, sizeof (data));
+	  /* Coverity flags this strncpy as possibly creating a string
+	     that is not NUL terminated.  This is in fact OK.  */
+	  /* coverity[buffer_size_warning: FALSE] */
 	  strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
+	  /* Coverity flags this strncpy as possibly creating a string
+	     that is not NUL terminated.  This is in fact OK.  */
+	  /* coverity[buffer_size_warning: FALSE] */
 	  strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
 	  return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
 				     &data, sizeof (data));
@@ -472,7 +478,13 @@ elf_x86_64_write_core_note (bfd *abfd, c
 	{
 	  prpsinfo64_t data;
 	  memset (&data, 0, sizeof (data));
+	  /* Coverity flags this strncpy as possibly creating a string
+	     that is not NUL terminated.  This is in fact OK.  */
+	  /* coverity[buffer_size_warning: FALSE] */
 	  strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
+	  /* Coverity flags this strncpy as possibly creating a string
+	     that is not NUL terminated.  This is in fact OK.  */
+	  /* coverity[buffer_size_warning: FALSE] */
 	  strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
 	  return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
 				     &data, sizeof (data));
diff -rup binutils.orig/bfd/elf.c binutils-2.30/bfd/elf.c
--- binutils.orig/bfd/elf.c	2019-10-07 15:49:37.616630597 +0100
+++ binutils-2.30/bfd/elf.c	2019-10-07 15:56:16.776930603 +0100
@@ -10549,7 +10549,13 @@ elfcore_write_prpsinfo (bfd  *abfd,
 #endif
 
       memset (&data, 0, sizeof (data));
+      /* Coverity flags this strncpy as possibly creating a string
+	 that is not NUL terminated.  This is in fact OK.  */
+      /* coverity[buffer_size_warning: FALSE] */
       strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
+      /* Coverity flags this strncpy as possibly creating a string
+	 that is not NUL terminated.  This is in fact OK.  */
+      /* coverity[buffer_size_warning: FALSE] */
       strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
       return elfcore_write_note (abfd, buf, bufsiz,
 				 "CORE", note_type, &data, sizeof (data));
@@ -10566,7 +10572,13 @@ elfcore_write_prpsinfo (bfd  *abfd,
 #endif
 
       memset (&data, 0, sizeof (data));
+      /* Coverity flags this strncpy as possibly creating a string
+	 that is not NUL terminated.  This is in fact OK.  */
+      /* coverity[buffer_size_warning: FALSE] */
       strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
+      /* Coverity flags this strncpy as possibly creating a string
+	 that is not NUL terminated.  This is in fact OK.  */
+      /* coverity[buffer_size_warning: FALSE] */
       strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
       return elfcore_write_note (abfd, buf, bufsiz,
 				 "CORE", note_type, &data, sizeof (data));
diff -rup binutils.orig/bfd/elf-linux-core.h binutils-2.30/bfd/elf-linux-core.h
--- binutils.orig/bfd/elf-linux-core.h	2019-10-07 15:49:37.744629743 +0100
+++ binutils-2.30/bfd/elf-linux-core.h	2019-10-07 15:55:43.976159158 +0100
@@ -69,7 +69,13 @@ swap_linux_prpsinfo32_ugid32_out
   bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
   bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
   bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
 }
 
@@ -121,7 +127,13 @@ swap_linux_prpsinfo32_ugid16_out
   bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
   bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
   bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
 }
 
@@ -174,7 +186,13 @@ swap_linux_prpsinfo64_ugid32_out
   bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
   bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
   bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
 }
 
@@ -227,7 +245,13 @@ swap_linux_prpsinfo64_ugid16_out
   bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
   bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
   bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
+  /* Coverity flags this strncpy as possibly creating a string
+     that is not NUL terminated.  This is in fact OK.  */
+  /* coverity[buffer_size_warning: FALSE] */
   strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
 }
 
diff -rup binutils.orig/bfd/peXXigen.c binutils-2.30/bfd/peXXigen.c
--- binutils.orig/bfd/peXXigen.c	2019-10-07 15:49:37.695630070 +0100
+++ binutils-2.30/bfd/peXXigen.c	2019-10-07 16:02:02.117524278 +0100
@@ -385,7 +385,7 @@ _bfd_XXi_swap_aux_out (bfd *  abfd,
 	  H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset);
 	}
       else
-	memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
+	memcpy (ext->x_file.x_fname, in->x_file.x_fname, E_FILNMLEN);
 
       return AUXESZ;
 
diff -rup binutils.orig/ld/pe-dll.c binutils-2.30/ld/pe-dll.c
--- binutils.orig/ld/pe-dll.c	2019-10-07 15:48:49.851949423 +0100
+++ binutils-2.30/ld/pe-dll.c	2019-10-07 16:04:09.055639773 +0100
@@ -2929,7 +2929,7 @@ pe_find_cdecl_alias_match (struct bfd_li
 	  if (pe_details->underscored)
 	    lname[0] = '_';
 	  else
-	    strcpy (lname, lname + 1);
+	    memmove (lname, lname + 1, strlen (lname) + 1);
 	  key.key = lname;
 	  kv = bsearch (&key, udef_table, undef_count,
 			sizeof (struct key_value), undef_sort_cmp);
diff -rup binutils.orig/libiberty/sha1.c binutils-2.30/libiberty/sha1.c
--- binutils.orig/libiberty/sha1.c	2019-10-07 15:49:37.016634602 +0100
+++ binutils-2.30/libiberty/sha1.c	2019-10-07 16:04:41.788411691 +0100
@@ -258,7 +258,7 @@ sha1_process_bytes (const void *buffer,
 	{
 	  sha1_process_block (ctx->buffer, 64, ctx);
 	  left_over -= 64;
-	  memcpy (ctx->buffer, &ctx->buffer[16], left_over);
+	  memmove (ctx->buffer, &ctx->buffer[16], left_over);
 	}
       ctx->buflen = left_over;
     }
diff -rup binutils.orig/bfd/cofflink.c binutils-2.30/bfd/cofflink.c
--- binutils.orig/bfd/cofflink.c	2019-10-07 17:01:58.787679337 +0100
+++ binutils-2.30/bfd/cofflink.c	2019-10-07 17:02:20.641529805 +0100
@@ -1406,6 +1406,8 @@ mark_relocs (struct coff_final_link_info
       for (; irel < irelend; irel++)
 	if ((unsigned long) irel->r_symndx < obj_raw_syment_count (input_bfd))
 	  flaginfo->sym_indices[irel->r_symndx] = -1;
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 }
 
diff -rup binutils.orig/bfd/doc/chew.c binutils-2.30/bfd/doc/chew.c
--- binutils.orig/bfd/doc/chew.c	2019-10-07 17:01:58.796679276 +0100
+++ binutils-2.30/bfd/doc/chew.c	2019-10-07 17:04:21.265720634 +0100
@@ -1264,6 +1264,7 @@ free_words (void)
 	    if (ptr->code[i] == push_text
 		&& ptr->code[i + 1])
 	      {
+		/* coverity[fnptr_free: FALSE] */
 		free (ptr->code[i + 1] - 1);
 		++ i;
 	      }
@@ -1387,6 +1388,7 @@ compile (string)
 	  ptr = newentry (word);
 	  string = nextword (string, &word);
 	  
+	  /* coverity[use_after_free: FALSE] */
 	  while (word[0] != ';')
 	    {
 	      switch (word[0])
diff -rup binutils.orig/bfd/elflink.c binutils-2.30/bfd/elflink.c
--- binutils.orig/bfd/elflink.c	2019-10-07 17:01:58.779679392 +0100
+++ binutils-2.30/bfd/elflink.c	2019-10-07 17:04:57.025483171 +0100
@@ -10579,6 +10579,8 @@ elf_link_input_bfd (struct elf_final_lin
 			   "that references a non-existent global symbol"),
 			 input_bfd, rel->r_info, o);
 		      bfd_set_error (bfd_error_bad_value);
+		      /* There is a potential resource leak here, but it is not important.  */
+		      /* coverity[leaked_storage: FALSE] */
 		      return FALSE;
 		    }
 
diff -rup binutils.orig/bfd/peXXigen.c binutils-2.30/bfd/peXXigen.c
--- binutils.orig/bfd/peXXigen.c	2019-10-07 17:01:58.784679358 +0100
+++ binutils-2.30/bfd/peXXigen.c	2019-10-07 17:07:22.047520136 +0100
@@ -385,7 +385,9 @@ _bfd_XXi_swap_aux_out (bfd *  abfd,
 	  H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset);
 	}
       else
-	memcpy (ext->x_file.x_fname, in->x_file.x_fname, E_FILNMLEN);
+	/* Coverity gets confused about the size of these buffers.  */
+	/* coverity[buffer_size: FALSE] */
+	memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
 
       return AUXESZ;
 
@@ -4343,6 +4345,8 @@ rsrc_process_section (bfd * abfd,
   /* FIXME: Free the resource tree, if we have one.  */
   free (datastart);
   free (rsrc_sizes);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 /* Handle the .idata section and other things that need symbol table
diff -rup binutils.orig/bfd/plugin.c binutils-2.30/bfd/plugin.c
--- binutils.orig/bfd/plugin.c	2019-10-07 17:01:58.780679385 +0100
+++ binutils-2.30/bfd/plugin.c	2019-10-07 17:07:45.871361935 +0100
@@ -403,9 +403,13 @@ try_load_plugin (const char *pname, bfd
 
   abfd->plugin_format = bfd_plugin_yes;
 
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return 1;
 
  err:
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return 0;
 }
 
diff -rup binutils.orig/bfd/stabs.c binutils-2.30/bfd/stabs.c
--- binutils.orig/bfd/stabs.c	2019-10-07 17:01:58.778679399 +0100
+++ binutils-2.30/bfd/stabs.c	2019-10-07 17:08:14.655170795 +0100
@@ -377,6 +377,8 @@ _bfd_link_section_stabs (bfd *abfd,
 	  amt = sizeof *ne;
 	  ne = (struct stab_excl_list *) bfd_alloc (abfd, amt);
 	  if (ne == NULL)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    goto error_return;
 	  ne->offset = sym - stabbuf;
 	  ne->val = sum_chars;
diff -rup binutils.orig/binutils/ar.c binutils-2.30/binutils/ar.c
--- binutils.orig/binutils/ar.c	2019-10-07 17:01:57.998684736 +0100
+++ binutils-2.30/binutils/ar.c	2019-10-07 17:10:18.109350993 +0100
@@ -228,6 +228,8 @@ map_over_members (bfd *arch, void (*func
 	      filename = normalize (filename, arch);
 	    }
 
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  if (filename != NULL
 	      && !FILENAME_CMP (normalize (*files, arch), filename))
 	    {
@@ -237,6 +239,8 @@ map_over_members (bfd *arch, void (*func
 		{
 		  /* Counting, and didn't match on count; go on to the
                      next one.  */
+		  /* There is a potential resource leak here, but it is not important.  */
+		  /* coverity[leaked_storage: FALSE] */
 		  continue;
 		}
 
@@ -250,6 +254,8 @@ map_over_members (bfd *arch, void (*func
 		 to the ar command.  */
 	      break;
 	    }
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	}
 
       if (!found)
@@ -1268,6 +1274,8 @@ delete_members (bfd *arch, char **files_
       current_ptr_ptr = &(arch->archive_next);
       while (*current_ptr_ptr)
 	{
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  if (FILENAME_CMP (normalize (*files_to_delete, arch),
 			    (*current_ptr_ptr)->filename) == 0)
 	    {
@@ -1323,6 +1331,8 @@ move_members (bfd *arch, char **files_to
       while (*current_ptr_ptr)
 	{
 	  bfd *current_ptr = *current_ptr_ptr;
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  if (FILENAME_CMP (normalize (*files_to_move, arch),
 			    current_ptr->filename) == 0)
 	    {
@@ -1375,6 +1385,8 @@ replace_members (bfd *arch, char **files
 
 	      /* For compatibility with existing ar programs, we
 		 permit the same file to be added multiple times.  */
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      if (FILENAME_CMP (normalize (*files_to_move, arch),
 				normalize (current->filename, arch)) == 0
 		  && current->arelt_data != NULL)
diff -rup binutils.orig/binutils/arparse.c binutils-2.30/binutils/arparse.c
--- binutils.orig/binutils/arparse.c	2019-10-07 17:01:58.003684702 +0100
+++ binutils-2.30/binutils/arparse.c	2019-10-07 17:10:55.998099392 +0100
@@ -1193,6 +1193,8 @@ yyparse (void)
 #  undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
       }
 # endif
 #endif /* no yyoverflow */
diff -rup binutils.orig/binutils/arsup.c binutils-2.30/binutils/arsup.c
--- binutils.orig/binutils/arsup.c	2019-10-07 17:01:58.006684681 +0100
+++ binutils-2.30/binutils/arsup.c	2019-10-07 17:11:21.789928112 +0100
@@ -209,6 +209,8 @@ ar_open (char *name, int t)
       obfd->has_armap = 1;
       obfd->is_thin_archive = 0;
     }
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 static void
diff -rup binutils.orig/binutils/dwarf.c binutils-2.30/binutils/dwarf.c
--- binutils.orig/binutils/dwarf.c	2019-10-07 17:01:57.958685010 +0100
+++ binutils-2.30/binutils/dwarf.c	2019-10-07 17:13:31.950063779 +0100
@@ -4098,6 +4098,8 @@ display_debug_lines_decoded (struct dwar
 	      if (data == end)
 		{
 		  warn (_("Corrupt file name list\n"));
+		  /* There is a potential resource leak here, but it is not important.  */
+		  /* coverity[leaked_storage: FALSE] */
 		  break;
 		}
 
@@ -4234,6 +4236,8 @@ display_debug_lines_decoded (struct dwar
 		    {
 		      warn (_("file table ends unexpectedly\n"));
 		      n_files = 0;
+		      /* There is a potential resource leak here, but it is not important.  */
+		      /* coverity[leaked_storage: FALSE] */
 		      break;
 		    }
 
@@ -7231,6 +7235,8 @@ read_cie (unsigned char *start, unsigned
   if (start == end)
     {
       warn (_("No terminator for augmentation name\n"));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return start;
     }
 
@@ -7243,6 +7249,8 @@ read_cie (unsigned char *start, unsigned
       if (fc->ptr_size < 1 || fc->ptr_size > 8)
 	{
 	  warn (_("Invalid pointer size (%d) in CIE data\n"), fc->ptr_size);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return end;
 	}
 
@@ -7251,6 +7259,8 @@ read_cie (unsigned char *start, unsigned
       if (fc->segment_size > 8 || fc->segment_size + fc->ptr_size > 8)
 	{
 	  warn (_("Invalid segment size (%d) in CIE data\n"), fc->segment_size);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return end;
 	}
 
@@ -8305,6 +8315,8 @@ display_debug_frames (struct dwarf_secti
 
   printf ("\n");
 
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return 1;
 }
 
@@ -9733,6 +9745,8 @@ load_separate_debug_info (const char *
   if (debugfile == NULL)
     {
       warn (_("Out of memory"));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return NULL;
     }
 
diff -rup binutils.orig/binutils/elfedit.c binutils-2.30/binutils/elfedit.c
--- binutils.orig/binutils/elfedit.c	2019-10-07 17:01:58.000684722 +0100
+++ binutils-2.30/binutils/elfedit.c	2019-10-07 17:13:51.916931183 +0100
@@ -468,6 +468,8 @@ process_archive (const char * file_name,
         }
 
       free (qualified_name);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 
  out:
diff -rup binutils.orig/binutils/ieee.c binutils-2.30/binutils/ieee.c
--- binutils.orig/binutils/ieee.c	2019-10-07 17:01:57.963684975 +0100
+++ binutils-2.30/binutils/ieee.c	2019-10-07 17:18:54.442922250 +0100
@@ -1503,6 +1503,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	    bfd_boolean present;
 
 	    if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    if (! present)
 	      break;
@@ -1516,6 +1518,8 @@ parse_ieee_ty (struct ieee_info *info, c
 
 	    names[c] = savestring (name, namlen);
 	    if (names[c] == NULL)
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    ++c;
 	  }
@@ -1554,12 +1558,16 @@ parse_ieee_ty (struct ieee_info *info, c
 	    bfd_vma bitpos, bitsize;
 
 	    if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    if (! present)
 	      break;
 	    if (! ieee_read_type_index (info, pp, &ftype)
 		|| ! ieee_read_number (info, pp, &bitpos)
 		|| ! ieee_read_number (info, pp, &bitsize))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 
 	    if (c + 1 >= alloc)
@@ -1573,6 +1581,8 @@ parse_ieee_ty (struct ieee_info *info, c
 					  ftype, bitpos, bitsize,
 					  DEBUG_VISIBILITY_PUBLIC);
 	    if (fields[c] == NULL)
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    ++c;
 	  }
@@ -1604,10 +1614,14 @@ parse_ieee_ty (struct ieee_info *info, c
 	    bfd_vma val;
 
 	    if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    if (! present)
 	      break;
 	    if (! ieee_read_number (info, pp, &val))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 
 	    /* If the length of the name is zero, then the value is
@@ -1627,6 +1641,8 @@ parse_ieee_ty (struct ieee_info *info, c
 
 	    names[c] = savestring (name, namlen);
 	    if (names[c] == NULL)
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    vals[c] = (bfd_signed_vma) val;
 	    ++c;
@@ -1646,6 +1662,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	debug_type t;
 
 	if (! ieee_read_type_index (info, pp, &t))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	type = debug_make_pointer_type (dhandle, t);
       }
@@ -1660,6 +1678,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	    || ! ieee_read_number (info, pp, &high)
 	    || ! ieee_read_number (info, pp, &signedp)
 	    || ! ieee_read_number (info, pp, &size))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	type = debug_make_range_type (dhandle,
@@ -1679,6 +1699,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	unsigned int c;
 
 	if (! ieee_read_number (info, pp, &size))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	alloc = 10;
@@ -1695,11 +1717,15 @@ parse_ieee_ty (struct ieee_info *info, c
 	    bfd_vma bitsize;
 
 	    if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    if (! present)
 	      break;
 	    if (! ieee_read_number (info, pp, &tindx)
 		|| ! ieee_read_number (info, pp, &offset))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 
 	    if (tindx < 256)
@@ -1733,6 +1759,8 @@ parse_ieee_ty (struct ieee_info *info, c
 					  ftype, offset, bitsize,
 					  DEBUG_VISIBILITY_PUBLIC);
 	    if (fields[c] == NULL)
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    ++c;
 	  }
@@ -1747,6 +1775,8 @@ parse_ieee_ty (struct ieee_info *info, c
     case 'T':
       /* Typedef.  */
       if (! ieee_read_type_index (info, pp, &type))
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return FALSE;
       typdef = TRUE;
       break;
@@ -1766,6 +1796,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	if (! ieee_read_number (info, pp, &attr)
 	    || ! ieee_read_type_index (info, pp, &rtype)
 	    || ! ieee_read_number (info, pp, &nargs))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	do
 	  {
@@ -1773,6 +1805,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	    unsigned long namlen;
 
 	    if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	  }
 	while (present);
@@ -1810,6 +1844,8 @@ parse_ieee_ty (struct ieee_info *info, c
 
 	if (! ieee_read_type_index (info, pp, &etype)
 	    || ! ieee_read_number (info, pp, &high))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	type = debug_make_array_type (dhandle, etype,
@@ -1829,6 +1865,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	/* FIXME: I don't know what the name means.  */
 
 	if (! ieee_read_id (info, pp, &name, &namlen))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	type = debug_make_complex_type (dhandle, tc == 'c' ? 4 : 8);
@@ -1838,6 +1876,8 @@ parse_ieee_ty (struct ieee_info *info, c
     case 'f':
       /* Pascal file name.  FIXME.  */
       ieee_error (info, ty_code_start, _("Pascal file name not supported"));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
 
     case 'g':
@@ -1849,12 +1889,16 @@ parse_ieee_ty (struct ieee_info *info, c
 
 	if (! ieee_read_number (info, pp, &signedp)
 	    || ! ieee_read_number (info, pp, &bitsize))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	/* I think the documentation says that there is a type index,
            but some actual files do not have one.  */
 	hold = *pp;
 	if (! ieee_read_optional_number (info, pp, &dummy, &present))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	if (! present)
 	  {
@@ -1866,6 +1910,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	  {
 	    *pp = hold;
 	    if (! ieee_read_type_index (info, pp, &type))
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	  }
 	type_bitsize = bitsize;
@@ -1880,12 +1926,16 @@ parse_ieee_ty (struct ieee_info *info, c
 
 	if (! ieee_read_number (info, pp, &kind)
 	    || ! ieee_read_type_index (info, pp, &t))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	switch (kind)
 	  {
 	  default:
 	    ieee_error (info, ty_start, _("unsupported qualifier"));
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return FALSE;
 
 	  case 1:
@@ -1907,6 +1957,8 @@ parse_ieee_ty (struct ieee_info *info, c
 
 	if (! ieee_read_number (info, pp, &size)
 	    || ! ieee_read_type_index (info, pp, &etype))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	/* FIXME: We ignore the size.  */
@@ -1934,6 +1986,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	    || ! ieee_read_number (info, pp, &push_mask)
 	    || ! ieee_read_type_index (info, pp, &rtype)
 	    || ! ieee_read_number (info, pp, &nargs))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	if (nargs == (bfd_vma) -1)
 	  {
@@ -1948,6 +2002,8 @@ parse_ieee_ty (struct ieee_info *info, c
 			 xmalloc ((nargs + 1) * sizeof *arg_types));
 	    for (i = 0; i < nargs; i++)
 	      if (! ieee_read_type_index (info, pp, arg_types + i))
+		/* There is a potential resource leak here, but it is not important.  */
+		/* coverity[leaked_storage: FALSE] */
 		return FALSE;
 
 	    /* If the last type is pointer to void, this is really a
@@ -1995,6 +2051,8 @@ parse_ieee_ty (struct ieee_info *info, c
 	  }
 	if (! ieee_read_number (info, pp, &level)
 	    || ! ieee_read_optional_number (info, pp, &father, &present))
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	/* We can't distinguish between a global function and a static
diff -rup binutils.orig/binutils/objcopy.c binutils-2.30/binutils/objcopy.c
--- binutils.orig/binutils/objcopy.c	2019-10-07 17:01:58.036684476 +0100
+++ binutils-2.30/binutils/objcopy.c	2019-10-07 17:26:39.304812562 +0100
@@ -1142,6 +1142,8 @@ add_specific_symbols (const char *filena
       line = eol;
       line_count ++;
     }
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 /* See whether a symbol should be stripped or kept
@@ -1817,6 +1819,8 @@ add_redefine_syms_file (const char *file
     fatal (_("%s:%d: premature end of file"), filename, lineno);
 
   free (buf);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 /* Copy unknown object file IBFD onto OBFD.
@@ -2855,6 +2859,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 			     strerror (errno));
 		  free (contents);
 		  return FALSE;
+		  /* There is a potential resource leak here, but it is not important.  */
+		  /* coverity[leaked_storage: FALSE] */
 		}
 	    }
 	  else
@@ -3063,6 +3069,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 	    {
 	      status = 1;
 	      return FALSE;
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	    }
 	}
 
@@ -3097,6 +3105,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 					  0, padd->size))
 	    {
 	      bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    }
 	}
@@ -3115,6 +3125,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 					  0, pupdate->size))
 	    {
 	      bfd_nonfatal_message (NULL, obfd, osec, NULL);
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    }
 	}
@@ -3128,6 +3140,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 	  if (! bfd_set_section_contents (obfd, osec, merged_notes, 0, merged_size))
 	    {
 	      bfd_nonfatal_message (NULL, obfd, osec, _("error: failed to copy merged notes into output"));
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    }
 	}
@@ -3146,6 +3160,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 	  bfd_nonfatal_message (NULL, obfd, NULL,
 				_("cannot fill debug link section `%s'"),
 				gnu_debuglink_filename);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	}
     }
@@ -3184,6 +3200,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 						  off, now))
 		    {
 		      bfd_nonfatal_message (NULL, obfd, osections[i], NULL);
+		      /* There is a potential resource leak here, but it is not important.  */
+		      /* coverity[leaked_storage: FALSE] */
 		      return FALSE;
 		    }
 
@@ -3202,6 +3220,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
     {
       bfd_nonfatal_message (NULL, obfd, NULL,
 			    _("error copying private BFD data"));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
 
@@ -3224,6 +3244,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 	}
     }
 
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return TRUE;
 }
 
@@ -3302,6 +3324,7 @@ copy_archive (bfd *ibfd, bfd *obfd, cons
       /* If the file already exists, make another temp dir.  */
       if (stat (output_name, &buf) >= 0)
 	{
+	  free (output_name);
 	  output_name = make_tempdir (output_name);
 	  if (output_name == NULL)
 	    {
@@ -3435,6 +3458,7 @@ copy_archive (bfd *ibfd, bfd *obfd, cons
     }
 
   rmdir (dir);
+  free (dir);
 }
 
 static void
@@ -4310,6 +4334,8 @@ write_debugging_info (bfd *obfd, void *d
 	{
 	  bfd_nonfatal_message (NULL, obfd, NULL,
 				_("can't create debugging section"));
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	}
 
@@ -4323,6 +4349,8 @@ write_debugging_info (bfd *obfd, void *d
 	{
 	  bfd_nonfatal_message (NULL, obfd, NULL,
 				_("can't set debugging section contents"));
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	}
 
@@ -5569,6 +5597,8 @@ copy_main (int argc, char *argv[])
 	}
     }
 
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return 0;
 }
 
diff -rup binutils-2.30/binutils/ieee.c binutils.new/binutils/ieee.c
--- binutils-2.30/binutils/ieee.c	2019-10-08 10:20:47.186432611 +0100
+++ binutils.new/binutils/ieee.c	2019-10-08 10:20:33.515525367 +0100
@@ -2661,13 +2661,18 @@ ieee_read_cxx_class (struct ieee_info *i
       spec_start = *pp;
 
       if (! ieee_require_asn (info, pp, &id))
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return FALSE;
+
       --count;
 
       switch (id)
 	{
 	default:
 	  ieee_error (info, spec_start, _("unrecognized C++ object spec"));
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 
 	case 'b':
@@ -2704,6 +2709,8 @@ ieee_read_cxx_class (struct ieee_info *i
 	    if ((fieldlen == 0) == (cinline == 0))
 	      {
 		ieee_error (info, start, _("unsupported C++ object type"));
+		/* There is a potential resource leak here, but it is not important.  */
+		/* coverity[leaked_storage: FALSE] */
 		return FALSE;
 	      }
 
@@ -2887,12 +2894,16 @@ ieee_read_cxx_class (struct ieee_info *i
 		  }
 	      }
 	    if (ftype == DEBUG_TYPE_NULL)
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 
 	    switch (flags & CXXFLAGS_VISIBILITY)
 	      {
 	      default:
 		ieee_error (info, start, _("unknown C++ visibility"));
+		/* There is a potential resource leak here, but it is not important.  */
+		/* coverity[leaked_storage: FALSE] */
 		return FALSE;
 
 	      case CXXFLAGS_VISIBILITY_PUBLIC:
@@ -2927,6 +2938,8 @@ ieee_read_cxx_class (struct ieee_info *i
 		if (bitpos == (bfd_vma) -1 || bitsize == (bfd_vma) -1)
 		  {
 		    ieee_error (info, start, _("bad C++ field bit pos or size"));
+		    /* There is a potential resource leak here, but it is not important.  */
+		    /* coverity[leaked_storage: FALSE] */
 		    return FALSE;
 		  }
 		field = debug_make_field (dhandle, fieldcopy, ftype, bitpos,
@@ -3043,6 +3056,8 @@ ieee_read_cxx_class (struct ieee_info *i
 	      {
 	      default:
 		ieee_error (info, start, _("unknown C++ visibility"));
+		/* There is a potential resource leak here, but it is not important.  */
+		/* coverity[leaked_storage: FALSE] */
 		return FALSE;
 
 	      case CXXFLAGS_VISIBILITY_PUBLIC:
@@ -3229,6 +3244,8 @@ ieee_read_cxx_class (struct ieee_info *i
 	  dmethods[i] = debug_make_method (dhandle, namcopy,
 					   methods[i].variants);
 	  if (dmethods[i] == DEBUG_METHOD_NULL)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return FALSE;
 	}
       dmethods[i] = DEBUG_METHOD_NULL;
diff -rup binutils-2.30/binutils/objcopy.c binutils.new/binutils/objcopy.c
--- binutils-2.30/binutils/objcopy.c	2019-10-08 10:20:47.186432611 +0100
+++ binutils.new/binutils/objcopy.c	2019-10-08 10:20:33.513525381 +0100
@@ -2858,9 +2858,9 @@ copy_object (bfd *ibfd, bfd *obfd, const
 			     pdump->filename,
 			     strerror (errno));
 		  free (contents);
-		  return FALSE;
 		  /* There is a potential resource leak here, but it is not important.  */
 		  /* coverity[leaked_storage: FALSE] */
+		  return FALSE;
 		}
 	    }
 	  else
@@ -3068,9 +3068,9 @@ copy_object (bfd *ibfd, bfd *obfd, const
 	  if (bfd_get_error () != bfd_error_no_error)
 	    {
 	      status = 1;
-	      return FALSE;
 	      /* There is a potential resource leak here, but it is not important.  */
 	      /* coverity[leaked_storage: FALSE] */
+	      return FALSE;
 	    }
 	}
 
@@ -3083,6 +3083,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
       if (! write_debugging_info (obfd, dhandle, &symcount, &osympp))
 	{
 	  status = 1;
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	}
     }
@@ -3210,6 +3212,8 @@ copy_object (bfd *ibfd, bfd *obfd, const
 		}
 	    }
 	}
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 
   /* Allow the BFD backend to copy any private data it understands
@@ -3324,8 +3328,10 @@ copy_archive (bfd *ibfd, bfd *obfd, cons
       /* If the file already exists, make another temp dir.  */
       if (stat (output_name, &buf) >= 0)
 	{
+	  char * on;
+	  on = make_tempdir (output_name);
 	  free (output_name);
-	  output_name = make_tempdir (output_name);
+	  output_name = on;
 	  if (output_name == NULL)
 	    {
 	      non_fatal (_("cannot create tempdir for archive copying (error: %s)"),
diff -rup binutils-2.30/binutils/rdcoff.c binutils.new/binutils/rdcoff.c
--- binutils-2.30/binutils/rdcoff.c	2018-01-13 13:31:15.000000000 +0000
+++ binutils.new/binutils/rdcoff.c	2019-10-08 10:20:33.512525387 +0100
@@ -409,6 +409,8 @@ parse_coff_struct_type (bfd *abfd, struc
 	{
 	  non_fatal (_("bfd_coff_get_syment failed: %s"),
 		     bfd_errmsg (bfd_get_error ()));
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return DEBUG_TYPE_NULL;
 	}
 
@@ -425,6 +427,8 @@ parse_coff_struct_type (bfd *abfd, struc
 	    {
 	      non_fatal (_("bfd_coff_get_auxent failed: %s"),
 			 bfd_errmsg (bfd_get_error ()));
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return DEBUG_TYPE_NULL;
 	    }
 	  psubaux = &auxent;
@@ -514,6 +518,8 @@ parse_coff_enum_type (bfd *abfd, struct
 	{
 	  non_fatal (_("bfd_coff_get_syment failed: %s"),
 		     bfd_errmsg (bfd_get_error ()));
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return DEBUG_TYPE_NULL;
 	}
 
diff -rup binutils-2.30/binutils/readelf.c binutils.new/binutils/readelf.c
--- binutils-2.30/binutils/readelf.c	2019-10-08 10:20:47.161432781 +0100
+++ binutils.new/binutils/readelf.c	2019-10-08 10:20:33.507525422 +0100
@@ -5304,6 +5304,8 @@ get_32bit_section_headers (Filedata * fi
     {
       if (!probe)
 	error (_("Out of memory reading %u section headers\n"), num);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
 
@@ -5370,6 +5372,8 @@ get_64bit_section_headers (Filedata * fi
     {
       if (! probe)
 	error (_("Out of memory reading %u section headers\n"), num);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
 
@@ -5456,6 +5460,7 @@ get_32bit_elf_symbols (Filedata *
     for (entry = symtab_shndx_list; entry != NULL; entry = entry->next)
       if (entry->hdr->sh_link == (unsigned long) (section - filedata->section_headers))
 	{
+	  free (shndx);
 	  shndx = (Elf_External_Sym_Shndx *) get_data (NULL, filedata,
 						       entry->hdr->sh_offset,
 						       1, entry->hdr->sh_size,
@@ -5569,6 +5574,7 @@ get_64bit_elf_symbols (Filedata *
     for (entry = symtab_shndx_list; entry != NULL; entry = entry->next)
       if (entry->hdr->sh_link == (unsigned long) (section - filedata->section_headers))
 	{
+	  free (shndx);
 	  shndx = (Elf_External_Sym_Shndx *) get_data (NULL, filedata,
 						       entry->hdr->sh_offset,
 						       1, entry->hdr->sh_size,
@@ -9647,6 +9653,7 @@ process_dynamic_section (Filedata * file
 	    section.sh_entsize = sizeof (Elf64_External_Sym);
 	  section.sh_name = filedata->string_table_length;
 
+	  free (dynamic_symbols);
 	  dynamic_symbols = GET_ELF_SYMBOLS (filedata, &section, & num_dynamic_syms);
 	  if (num_dynamic_syms < 1)
 	    {
@@ -11500,6 +11507,8 @@ process_symbol_table (Filedata * filedat
 	if (gnubuckets[i] != 0)
 	  {
 	    if (gnubuckets[i] < gnusymidx)
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 
 	    if (maxchain == 0xffffffff || gnubuckets[i] > maxchain)
@@ -12950,6 +12959,8 @@ apply_relocations (Filedata *
       symsec = filedata->section_headers + relsec->sh_link;
       if (symsec->sh_type != SHT_SYMTAB
 	  && symsec->sh_type != SHT_DYNSYM)
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return FALSE;
       symtab = GET_ELF_SYMBOLS (filedata, symsec, & num_syms);
 
@@ -16096,6 +16107,8 @@ process_mips_specific (Filedata * fileda
 	}
       else
 	res = FALSE;
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 
   if (conflicts_offset != 0 && conflictsno != 0)
@@ -16133,6 +16146,8 @@ process_mips_specific (Filedata * fileda
               get_data (NULL, filedata, conflicts_offset, conflictsno,
                         sizeof (* econf32), _("conflict"));
 	  if (!econf32)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return FALSE;
 
 	  for (cnt = 0; cnt < conflictsno; ++cnt)
@@ -16148,6 +16163,8 @@ process_mips_specific (Filedata * fileda
               get_data (NULL, filedata, conflicts_offset, conflictsno,
                         sizeof (* econf64), _("conflict"));
 	  if (!econf64)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return FALSE;
 
 	  for (cnt = 0; cnt < conflictsno; ++cnt)
@@ -16350,6 +16367,8 @@ process_mips_specific (Filedata * fileda
       data = (unsigned char *) get_data (NULL, filedata, offset, end - mips_pltgot,
                                          1, _("Procedure Linkage Table data"));
       if (data == NULL)
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return FALSE;
 
       printf ("\nPLT GOT:\n\n");
@@ -16434,6 +16453,8 @@ process_nds32_specific (Filedata * filed
 	  printf ("(VEC_SIZE):\treserved\n");
 	  break;
 	}
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 
   return TRUE;
@@ -17488,9 +17509,9 @@ get_symbol_for_build_attribute (Filedata
 				const char **    pname)
 {
   static Filedata *         saved_filedata = NULL;
-  static char *             strtab;
+  static char *             strtab = NULL;
   static unsigned long      strtablen;
-  static Elf_Internal_Sym * symtab;
+  static Elf_Internal_Sym * symtab = NULL;
   static unsigned long      nsyms;
   Elf_Internal_Sym *        saved_sym = NULL;
   Elf_Internal_Sym *        sym;
@@ -17507,12 +17528,14 @@ get_symbol_for_build_attribute (Filedata
 	{
 	  if (symsec->sh_type == SHT_SYMTAB)
 	    {
+	      free (symtab);
 	      symtab = GET_ELF_SYMBOLS (filedata, symsec, & nsyms);
 
 	      if (symsec->sh_link < filedata->file_header.e_shnum)
 		{
 		  Elf_Internal_Shdr * strtab_sec = filedata->section_headers + symsec->sh_link;
 
+		  free (strtab);
 		  strtab = (char *) get_data (NULL, filedata, strtab_sec->sh_offset,
 					      1, strtab_sec->sh_size,
 					      _("string table"));
@@ -18095,6 +18118,8 @@ process_notes_at (Filedata *           f
     {
       warn (_("Corrupt note: alignment %ld, expecting 4 or 8\n"),
 	    (long) align);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
 
diff -rup binutils.orig/binutils/ieee.c binutils-2.30/binutils/ieee.c
--- binutils.orig/binutils/ieee.c	2019-10-08 11:33:02.620958088 +0100
+++ binutils-2.30/binutils/ieee.c	2019-10-08 11:34:44.609294479 +0100
@@ -2838,6 +2838,8 @@ ieee_read_cxx_class (struct ieee_info *i
 		if (structfields == NULL)
 		  {
 		    ieee_error (info, start, _("C++ object has no fields"));
+		    /* There is a potential resource leak here, but it is not important.  */
+		    /* coverity[leaked_storage: FALSE] */
 		    return FALSE;
 		  }
 
diff -rup binutils.orig/binutils/rddbg.c binutils-2.30/binutils/rddbg.c
--- binutils.orig/binutils/rddbg.c	2019-10-08 11:33:02.619958094 +0100
+++ binutils-2.30/binutils/rddbg.c	2019-10-08 11:34:35.169355901 +0100
@@ -86,6 +86,8 @@ read_debugging_info (bfd *abfd, asymbol
       if (! no_messages)
 	non_fatal (_("%s: no recognized debugging information"),
 		   bfd_get_filename (abfd));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return NULL;
     }
 
@@ -300,6 +302,8 @@ read_symbol_stabs_debugging_info (bfd *a
 
 	  s = i.name;
 	  if (s == NULL || strlen (s) < 1)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return FALSE;
 	  f = NULL;
 
diff -rup binutils.orig/binutils/stabs.c binutils-2.30/binutils/stabs.c
--- binutils.orig/binutils/stabs.c	2019-10-08 11:33:02.607958173 +0100
+++ binutils-2.30/binutils/stabs.c	2019-10-08 11:34:25.489418884 +0100
@@ -758,6 +758,8 @@ parse_stab_string (void *dhandle, struct
       if (*p != '=')
 	{
 	  bad_stab (string);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	}
       ++p;
@@ -791,6 +793,8 @@ parse_stab_string (void *dhandle, struct
 	  if (*p != ',')
 	    {
 	      bad_stab (string);
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    }
 	  if (! debug_record_typed_const (dhandle, name, dtype, atoi (p)))
@@ -798,6 +802,8 @@ parse_stab_string (void *dhandle, struct
 	  break;
 	default:
 	  bad_stab (string);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return FALSE;
 	}
 
@@ -810,6 +816,8 @@ parse_stab_string (void *dhandle, struct
       if (dtype == DEBUG_TYPE_NULL)
 	return FALSE;
       if (! debug_record_label (dhandle, name, dtype, value))
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return FALSE;
       break;
 
@@ -1114,6 +1122,8 @@ parse_stab_string (void *dhandle, struct
 	  while (*p != ';')
 	    ++p;
 	  ++p;
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return TRUE;
 	}
       /* TODO SUNPro C++ support:
@@ -1127,12 +1137,16 @@ parse_stab_string (void *dhandle, struct
 
     default:
       bad_stab (string);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
 
   /* FIXME: gdb converts structure values to structure pointers in a
      couple of cases, depending upon the target.  */
 
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return TRUE;
 }
 
@@ -1499,6 +1513,8 @@ parse_stab_type (void *dhandle, struct s
 	      if (**pp != ',')
 		{
 		  bad_stab (orig);
+		  /* There is a potential resource leak here, but it is not important.  */
+		  /* coverity[leaked_storage: FALSE] */
 		  return DEBUG_TYPE_NULL;
 		}
 	      ++*pp;
@@ -1513,6 +1529,8 @@ parse_stab_type (void *dhandle, struct s
 	      args[n] = parse_stab_type (dhandle, info, (const char *) NULL,
 					 pp, (debug_type **) NULL);
 	      if (args[n] == DEBUG_TYPE_NULL)
+		/* There is a potential resource leak here, but it is not important.  */
+		/* coverity[leaked_storage: FALSE] */
 		return DEBUG_TYPE_NULL;
 	      ++n;
 	    }
@@ -2290,6 +2308,8 @@ parse_stab_struct_fields (void *dhandle,
 
       if (! parse_stab_one_struct_field (dhandle, info, pp, p, fields + c,
 					 staticsp))
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return FALSE;
 
       ++c;
@@ -2365,6 +2385,8 @@ parse_stab_cpp_abbrev (void *dhandle, st
   if (**pp != ':')
     {
       bad_stab (orig);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
   ++*pp;
@@ -2374,6 +2396,8 @@ parse_stab_cpp_abbrev (void *dhandle, st
   if (**pp != ',')
     {
       bad_stab (orig);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
   ++*pp;
@@ -2382,6 +2406,8 @@ parse_stab_cpp_abbrev (void *dhandle, st
   if (**pp != ';')
     {
       bad_stab (orig);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return FALSE;
     }
   ++*pp;
@@ -2787,6 +2813,8 @@ parse_stab_members (void *dhandle, struc
 	      if (return_type == DEBUG_TYPE_NULL)
 		{
 		  bad_stab (orig);
+		  /* There is a potential resource leak here, but it is not important.  */
+		  /* coverity[leaked_storage: FALSE] */
 		  goto fail;
 		}
 	      type = parse_stab_argtypes (dhandle, info, class_type, name,
@@ -3104,6 +3132,8 @@ parse_stab_array_type (void *dhandle, st
   if (**pp != ';')
     {
       bad_stab (orig);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return DEBUG_TYPE_NULL;
     }
   ++*pp;
@@ -3120,6 +3150,8 @@ parse_stab_array_type (void *dhandle, st
   if (**pp != ';')
     {
       bad_stab (orig);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return DEBUG_TYPE_NULL;
     }
   ++*pp;
@@ -3134,6 +3166,8 @@ parse_stab_array_type (void *dhandle, st
   if (**pp != ';')
     {
       bad_stab (orig);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return DEBUG_TYPE_NULL;
     }
   ++*pp;
@@ -3141,6 +3175,8 @@ parse_stab_array_type (void *dhandle, st
   element_type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
 				  (debug_type **) NULL);
   if (element_type == DEBUG_TYPE_NULL)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return DEBUG_TYPE_NULL;
 
   if (adjustable)
@@ -5366,6 +5402,8 @@ stab_demangle_v3_arg (void *dhandle, str
 					  dc->u.s_binary.right,
 					  &varargs);
 	if (pargs == NULL)
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return NULL;
 
 	return debug_make_function_type (dhandle, dt, pargs, varargs);
diff -rup binutils.orig/gas/as.c binutils-2.30/gas/as.c
--- binutils.orig/gas/as.c	2019-10-08 11:33:02.834956696 +0100
+++ binutils-2.30/gas/as.c	2019-10-08 11:34:17.073473644 +0100
@@ -934,6 +934,8 @@ This program has absolutely no warranty.
  	case OPTION_AL:
 	  listing |= LISTING_LISTING;
 	  if (optarg)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    listing_filename = xstrdup (optarg);
 	  break;
 
@@ -988,6 +990,8 @@ This program has absolutely no warranty.
 		      listing |= LISTING_SYMBOLS;
 		      break;
 		    case '=':
+		      /* There is a potential resource leak here, but it is not important.  */
+		      /* coverity[leaked_storage: FALSE] */
 		      listing_filename = xstrdup (optarg + 1);
 		      optarg += strlen (listing_filename);
 		      break;
@@ -1021,6 +1025,8 @@ This program has absolutely no warranty.
 	  }
 
 	case 'o':
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  out_file_name = xstrdup (optarg);
 	  break;
 
diff -rup binutils.orig/gas/config/obj-elf.c binutils-2.30/gas/config/obj-elf.c
--- binutils.orig/gas/config/obj-elf.c	2019-10-08 11:33:02.848956604 +0100
+++ binutils-2.30/gas/config/obj-elf.c	2019-10-08 11:34:09.473523094 +0100
@@ -1028,6 +1028,8 @@ obj_elf_attach_to_group (int dummy ATTRI
 
   elf_group_name (now_seg) = xstrdup (gname);
   elf_section_flags (now_seg) |= SHF_GROUP;
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 void
@@ -1103,6 +1105,8 @@ obj_elf_section (int push)
 	  if (beg == NULL)
 	    {
 	      ignore_rest_of_line ();
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return;
 	    }
 	  attr |= obj_elf_parse_section_letters (beg, strlen (beg), &is_clone);
@@ -1233,6 +1237,8 @@ obj_elf_section (int push)
 		{
 		  as_bad (_("character following name is not '#'"));
 		  ignore_rest_of_line ();
+		  /* There is a potential resource leak here, but it is not important.  */
+		  /* coverity[leaked_storage: FALSE] */
 		  return;
 		}
 	      ++input_line_pointer;
diff -rup binutils.orig/gas/dwarf2dbg.c binutils-2.30/gas/dwarf2dbg.c
--- binutils.orig/gas/dwarf2dbg.c	2019-10-08 11:33:02.839956663 +0100
+++ binutils-2.30/gas/dwarf2dbg.c	2019-10-08 11:34:00.913578791 +0100
@@ -1701,6 +1701,8 @@ out_file_list (void)
 
   /* Terminate filename list.  */
   out_byte (0);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 /* Switch to SEC and output a header length field.  Return the size of
@@ -2115,6 +2117,8 @@ out_debug_str (segT str_seg, symbolS **n
   len = strlen (producer) + 1;
   p = frag_more (len);
   memcpy (p, producer, len);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 void
diff -rup binutils.orig/gas/read.c binutils-2.30/gas/read.c
--- binutils.orig/gas/read.c	2019-10-08 11:33:02.852956578 +0100
+++ binutils-2.30/gas/read.c	2019-10-08 11:33:51.537639797 +0100
@@ -1714,6 +1714,8 @@ read_symbol_name (void)
     {
       as_bad (_("expected symbol name"));
       ignore_rest_of_line ();
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return NULL;
     }
 
diff -rup binutils.orig/gas/write.c binutils-2.30/gas/write.c
--- binutils.orig/gas/write.c	2019-10-08 11:33:02.833956702 +0100
+++ binutils-2.30/gas/write.c	2019-10-08 11:33:36.033740679 +0100
@@ -1366,6 +1366,8 @@ write_relocs (bfd *abfd, asection *sec,
       }
   }
 #endif
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 static int
@@ -1868,6 +1870,8 @@ create_note_reloc (segT           sec,
   if (reloc->u.b.r.howto == NULL)
     {
       as_bad (_("unable to create reloc for build note"));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return;
     }
 
diff -rup binutils.orig/gas/as.c binutils-2.30/gas/as.c
--- binutils.orig/gas/as.c	2019-10-08 13:45:17.382428420 +0100
+++ binutils-2.30/gas/as.c	2019-10-08 13:46:01.613135558 +0100
@@ -935,7 +935,7 @@ This program has absolutely no warranty.
 	  listing |= LISTING_LISTING;
 	  if (optarg)
 	    /* There is a potential resource leak here, but it is not important.  */
-	    /* coverity[leaked_storage: FALSE] */
+	    /* coverity[overwrite_var: FALSE] */
 	    listing_filename = xstrdup (optarg);
 	  break;
 
@@ -991,7 +991,7 @@ This program has absolutely no warranty.
 		      break;
 		    case '=':
 		      /* There is a potential resource leak here, but it is not important.  */
-		      /* coverity[leaked_storage: FALSE] */
+		      /* coverity[overwrite_var: FALSE] */
 		      listing_filename = xstrdup (optarg + 1);
 		      optarg += strlen (listing_filename);
 		      break;
@@ -1026,7 +1026,7 @@ This program has absolutely no warranty.
 
 	case 'o':
 	  /* There is a potential resource leak here, but it is not important.  */
-	  /* coverity[leaked_storage: FALSE] */
+	  /* coverity[overwrite_var: FALSE] */
 	  out_file_name = xstrdup (optarg);
 	  break;
 
diff -rup binutils.orig/gas/config/obj-elf.c binutils-2.30/gas/config/obj-elf.c
--- binutils.orig/gas/config/obj-elf.c	2019-10-08 13:45:17.371428492 +0100
+++ binutils-2.30/gas/config/obj-elf.c	2019-10-08 13:46:49.916815725 +0100
@@ -1023,6 +1023,8 @@ obj_elf_attach_to_group (int dummy ATTRI
   if (elf_group_name (now_seg))
     {
       as_warn ("already has a group");
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return;
     }
 
diff -rup binutils.orig/gas/dwarf2dbg.c binutils-2.30/gas/dwarf2dbg.c
--- binutils.orig/gas/dwarf2dbg.c	2019-10-08 13:45:17.384428407 +0100
+++ binutils-2.30/gas/dwarf2dbg.c	2019-10-08 13:47:29.198555634 +0100
@@ -1664,6 +1664,8 @@ out_file_list (void)
   /* Emit directory list.  */
   for (i = 1; i < dirs_in_use; ++i)
     {
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[overwrite_var: FALSE] */
       dir = remap_debug_filename (dirs[i]);
       size = strlen (dir) + 1;
       cp = frag_more (size);
diff -rup binutils.orig/gold/cref.cc binutils-2.30/gold/cref.cc
--- binutils.orig/gold/cref.cc	2019-10-08 13:45:17.653426626 +0100
+++ binutils-2.30/gold/cref.cc	2019-10-08 13:47:46.669439951 +0100
@@ -391,6 +391,8 @@ Cref::print_symbol_counts(const Symbol_t
 	}
       if (f != NULL)
 	this->inputs_->print_symbol_counts(symtab, f);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 }
 
diff -rup binutils.orig/gold/dwarf_reader.cc binutils-2.30/gold/dwarf_reader.cc
--- binutils.orig/gold/dwarf_reader.cc	2019-10-08 13:45:17.654426619 +0100
+++ binutils-2.30/gold/dwarf_reader.cc	2019-10-08 13:48:03.292329889 +0100
@@ -265,12 +265,16 @@ Dwarf_abbrev_table::do_get_abbrev(unsign
 	{
 	  // Read the attribute.
 	  if (this->buffer_pos_ >= this->buffer_end_)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return NULL;
 	  uint64_t attr = read_unsigned_LEB_128(this->buffer_pos_, &len);
 	  this->buffer_pos_ += len;
 
 	  // Read the form.
 	  if (this->buffer_pos_ >= this->buffer_end_)
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return NULL;
 	  uint64_t form = read_unsigned_LEB_128(this->buffer_pos_, &len);
 	  this->buffer_pos_ += len;
diff -rup binutils.orig/gold/dwp.cc binutils-2.30/gold/dwp.cc
--- binutils.orig/gold/dwp.cc	2019-10-08 13:45:17.656426606 +0100
+++ binutils-2.30/gold/dwp.cc	2019-10-08 13:48:12.317270132 +0100
@@ -803,6 +803,8 @@ Sized_relobj_dwo<size, big_endian>::setu
 	  pshdrs, this->shnum(), names, section_names_size, this, true);
   if (compressed_sections != NULL && !compressed_sections->empty())
     this->set_compressed_sections(compressed_sections);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 // Return a view of the contents of a section.
@@ -1163,6 +1165,8 @@ Dwo_file::sized_read_unit_index(unsigned
       elfcpp::Swap_unaligned<32, big_endian>::readval(contents
 						      + 2 * sizeof(uint32_t));
   if (ncols == 0 || nused == 0)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return;
 
   gold_assert(info_shndx > 0);
@@ -1305,6 +1309,8 @@ Dwo_file::sized_verify_dwo_list(unsigned
       elfcpp::Swap_unaligned<32, big_endian>::readval(contents
 						      + 2 * sizeof(uint32_t));
   if (ncols == 0 || nused == 0)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return true;
 
   unsigned int nslots =
diff -rup binutils.orig/gold/ehframe.cc binutils-2.30/gold/ehframe.cc
--- binutils.orig/gold/ehframe.cc	2019-10-08 13:45:17.653426626 +0100
+++ binutils-2.30/gold/ehframe.cc	2019-10-08 13:48:21.580208800 +0100
@@ -1187,6 +1187,8 @@ Eh_frame::remove_ehframe_for_plt(Output_
 
   if (this->mappings_are_done_)
     this->final_data_size_ -= align_address(fde_length + 8, this->addralign());
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 // Return the number of FDEs.
diff -rup binutils.orig/gold/fileread.cc binutils-2.30/gold/fileread.cc
--- binutils.orig/gold/fileread.cc	2019-10-08 13:45:17.657426599 +0100
+++ binutils-2.30/gold/fileread.cc	2019-10-08 13:48:33.645128913 +0100
@@ -873,6 +873,8 @@ File_view::~File_view()
 Input_file::Input_file(const char* name)
   : found_name_(), file_(), is_in_sysroot_(false), format_(FORMAT_NONE)
 {
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[ctor_dtor_leak: FALSE] */
   this->input_argument_ =
     new Input_file_argument(name, Input_file_argument::INPUT_FILE_TYPE_FILE,
 			    "", false, Position_dependent_options());
@@ -884,6 +886,8 @@ Input_file::Input_file(const Task* task,
 		       const unsigned char* contents, off_t size)
   : file_()
 {
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[ctor_dtor_leak: FALSE] */
   this->input_argument_ =
     new Input_file_argument(name, Input_file_argument::INPUT_FILE_TYPE_FILE,
 			    "", false, Position_dependent_options());
diff -rup binutils.orig/gold/gdb-index.cc binutils-2.30/gold/gdb-index.cc
--- binutils.orig/gold/gdb-index.cc	2019-10-08 13:45:17.656426606 +0100
+++ binutils-2.30/gold/gdb-index.cc	2019-10-08 13:48:46.061046705 +0100
@@ -1043,6 +1043,8 @@ Gdb_index::map_pubtable_to_dies(unsigned
 
   map->clear();
   if (!table->read_section(object, symbols, symbols_size))
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return NULL;
 
   while (table->read_header(section_offset))
diff -rup binutils.orig/gold/gold.cc binutils-2.30/gold/gold.cc
--- binutils.orig/gold/gold.cc	2019-10-08 13:45:17.656426606 +0100
+++ binutils-2.30/gold/gold.cc	2019-10-08 13:48:57.387971709 +0100
@@ -349,6 +349,8 @@ process_incremental_input(Incremental_bi
       // Incremental_binary::check_inputs should have cancelled the
       // incremental update if the script has changed.
       gold_assert(!ibase->file_has_changed(input_file_index));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return new Check_script(layout, ibase, input_file_index, input_reader,
 			      this_blocker, next_blocker);
     }
@@ -362,6 +364,8 @@ process_incremental_input(Incremental_bi
 	{
 	  // Queue a task to check that no references have been added to any
 	  // of the library's unused symbols.
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return new Check_library(symtab, layout, ibase, input_file_index,
 				   input_reader, this_blocker, next_blocker);
 	}
@@ -384,6 +388,8 @@ process_incremental_input(Incremental_bi
 	{
 	  if (ibase->file_has_changed(lib->input_file_index()))
 	    {
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return new Read_member(input_objects, symtab, layout, mapfile,
 				     input_reader, this_blocker, next_blocker);
 	    }
diff -rup binutils.orig/gold/layout.cc binutils-2.30/gold/layout.cc
--- binutils.orig/gold/layout.cc	2019-10-08 13:45:17.654426619 +0100
+++ binutils-2.30/gold/layout.cc	2019-10-08 13:49:09.579890984 +0100
@@ -487,6 +487,8 @@ Layout::Layout(int number_of_input_files
 
   // Initialize structure needed for an incremental build.
   if (parameters->incremental())
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[ctor_dtor_leak: FALSE] */
     this->incremental_inputs_ = new Incremental_inputs;
 
   // The section name pool is worth optimizing in all cases, because
@@ -3239,6 +3241,8 @@ Layout::create_note(const char* name, in
 						   flags, false, order, false,
 						   false, true);
   if (os == NULL)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return NULL;
 
   Output_section_data* posd = new Output_data_const_buffer(buffer, notehdrsz,
@@ -3301,6 +3305,8 @@ Layout::create_gnu_properties_note()
     }
   Output_section_data* posd = new Output_data_const(desc, descsz, 4);
   os->add_output_section_data(posd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 // For an executable or shared library, create a note to record the
@@ -4790,6 +4796,8 @@ Layout::create_dynamic_symtab(const Inpu
 
 	  if (odyn != NULL)
 	    odyn->add_section_address(elfcpp::DT_GNU_HASH, hashsec);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	}
     }
 
@@ -4824,6 +4832,8 @@ Layout::create_dynamic_symtab(const Inpu
 
       if (odyn != NULL)
 	odyn->add_section_address(elfcpp::DT_HASH, hashsec);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 }
 
@@ -5030,6 +5040,8 @@ Layout::create_interp(const Target* targ
 						     false, false, false);
   if (osec != NULL)
     osec->add_output_section_data(odata);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 // Add dynamic tags for the PLT and the dynamic relocs.  This is
diff -rup binutils.orig/gold/object.cc binutils-2.30/gold/object.cc
--- binutils.orig/gold/object.cc	2019-10-08 13:45:17.669426519 +0100
+++ binutils-2.30/gold/object.cc	2019-10-08 13:49:36.027715869 +0100
@@ -896,6 +896,8 @@ Sized_relobj_file<size, big_endian>::bas
   if (strtab_shndx >= this->shnum())
     {
       this->error(_("invalid symbol table name index: %u"), strtab_shndx);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return;
     }
   typename This::Shdr strtabshdr(pshdrs + strtab_shndx * This::shdr_size);
@@ -903,6 +905,8 @@ Sized_relobj_file<size, big_endian>::bas
     {
       this->error(_("symbol table name section has wrong type: %u"),
 		  static_cast<unsigned int>(strtabshdr.get_sh_type()));
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return;
     }
 
diff -rup binutils.orig/gold/output.cc binutils-2.30/gold/output.cc
--- binutils.orig/gold/output.cc	2019-10-08 13:45:17.655426612 +0100
+++ binutils-2.30/gold/output.cc	2019-10-08 13:49:48.571632811 +0100
@@ -2392,6 +2392,8 @@ Output_section::Output_section(const cha
     extra_segment_flags_(0),
     segment_alignment_(0),
     checkpoint_(NULL),
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[ctor_dtor_leak: FALSE] */
     lookup_maps_(new Output_section_lookup_maps),
     free_list_(),
     free_space_fill_(NULL),
diff -rup binutils.orig/gold/plugin.cc binutils-2.30/gold/plugin.cc
--- binutils.orig/gold/plugin.cc	2019-10-08 13:45:17.669426519 +0100
+++ binutils-2.30/gold/plugin.cc	2019-10-08 13:49:58.427567551 +0100
@@ -1919,6 +1919,8 @@ unique_segment_for_sections(const char*
       Object* obj = parameters->options().plugins()->get_elf_object(
           section_list[i].handle);
       if (obj == NULL || obj->is_dynamic())
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return LDPS_BAD_HANDLE;
       unsigned int shndx = section_list[i].shndx;
       Const_section_id secn_id(static_cast<Relobj*>(obj), shndx);
diff -rup binutils.orig/gold/readsyms.cc binutils-2.30/gold/readsyms.cc
--- binutils.orig/gold/readsyms.cc	2019-10-08 13:45:17.656426606 +0100
+++ binutils-2.30/gold/readsyms.cc	2019-10-08 13:50:09.964491164 +0100
@@ -274,6 +274,8 @@ Read_symbols::do_read_symbols(Workqueue*
 
   Input_file* input_file = new Input_file(&this->input_argument_->file());
   if (!input_file->open(*this->dirpath_, this, &this->dirindex_))
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return false;
 
   // Read enough of the file to pick up the entire ELF header.
diff -rup binutils.orig/gold/script.cc binutils-2.30/gold/script.cc
--- binutils.orig/gold/script.cc	2019-10-08 13:45:17.652426632 +0100
+++ binutils-2.30/gold/script.cc	2019-10-08 13:50:19.708426645 +0100
@@ -2844,6 +2844,8 @@ script_parse_option(void* closurev, cons
       // The General_options class will quite possibly store a pointer
       // into mutable_option, so we can't free it.  In cases the class
       // does not store such a pointer, this is a memory leak.  Alas. :(
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
   closure->clear_skip_on_incompatible_target();
 }
diff -rup binutils.orig/gold/workqueue.cc binutils-2.30/gold/workqueue.cc
--- binutils.orig/gold/workqueue.cc	2019-10-08 13:45:17.655426612 +0100
+++ binutils-2.30/gold/workqueue.cc	2019-10-08 13:50:28.076371238 +0100
@@ -130,6 +130,8 @@ Workqueue::Workqueue(const General_optio
   threads = false;
 #endif
   if (!threads)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[ctor_dtor_leak: FALSE] */
     this->threader_ = new Workqueue_threader_single(this);
   else
     {
diff -rup binutils.orig/gprof/cg_print.c binutils-2.30/gprof/cg_print.c
--- binutils.orig/gprof/cg_print.c	2019-10-08 13:45:17.127430108 +0100
+++ binutils-2.30/gprof/cg_print.c	2019-10-08 13:50:40.732287437 +0100
@@ -1287,4 +1287,6 @@ cg_print_file_ordering (void)
 	printf ("%s\n", symbol_map[sym_index].file_name);
       last = symbol_map[sym_index].file_name;
     }
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
diff -rup binutils.orig/gold/gold.cc binutils-2.30/gold/gold.cc
--- binutils.orig/gold/gold.cc	2019-10-08 14:45:28.076504486 +0100
+++ binutils-2.30/gold/gold.cc	2019-10-08 14:45:47.877373236 +0100
@@ -221,6 +221,8 @@ queue_initial_tasks(const General_option
 	  else
 	    gold_fallback(_("restart link with --incremental-full"));
 	}
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 
   // Read the input files.  We have to add the symbols to the symbol
diff -rup binutils.orig/gprof/gmon_io.c binutils-2.30/gprof/gmon_io.c
--- binutils.orig/gprof/gmon_io.c	2019-10-08 14:45:27.582507760 +0100
+++ binutils-2.30/gprof/gmon_io.c	2019-10-08 14:46:22.454144044 +0100
@@ -749,4 +749,6 @@ gmon_out_write (const char *filename)
 	       whoami, file_format);
       done (1);
     }
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
diff -rup binutils.orig/gprof/source.c binutils-2.30/gprof/source.c
--- binutils.orig/gprof/source.c	2019-10-08 14:45:27.583507753 +0100
+++ binutils-2.30/gprof/source.c	2019-10-08 14:46:33.925068010 +0100
@@ -216,6 +216,8 @@ annotate_source (Source_File *sf, unsign
       if (!ofp)
 	{
 	  perror (fname);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return 0;
 	}
     }
diff -rup binutils.orig/ld/emultempl/elf32.em binutils-2.30/ld/emultempl/elf32.em
--- binutils.orig/ld/emultempl/elf32.em	2019-10-08 14:45:27.638507389 +0100
+++ binutils-2.30/ld/emultempl/elf32.em	2019-10-08 14:47:40.916623958 +0100
@@ -1776,6 +1776,9 @@ gld${EMULATION_NAME}_before_allocation (
 		if (cp != NULL && *cp != '\0')
 		  gld${EMULATION_NAME}_append_to_separated_string (&depaudit, cp);
 
+		/* There is a potential resource leak here, but it is not important.  */
+		/* coverity[overwrite_var: FALSE] */
+		/* coverity[leaked_storage: FALSE] */
 		cp = more ? ++cp2 : NULL;
 	      }
 	    while (cp != NULL);
diff -rup binutils.orig/ld/emultempl/pe.em binutils-2.30/ld/emultempl/pe.em
--- binutils.orig/ld/emultempl/pe.em	2019-10-08 14:45:27.637507396 +0100
+++ binutils-2.30/ld/emultempl/pe.em	2019-10-08 14:48:22.133350756 +0100
@@ -1371,6 +1371,8 @@ write_build_id (bfd *abfd)
     return 0;
 
   if (bfd_bwrite (contents, size, abfd) != size)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return 0;
 
   /* Construct the CodeView record.  */
diff -rup binutils.orig/ld/emultempl/pep.em binutils-2.30/ld/emultempl/pep.em
--- binutils.orig/ld/emultempl/pep.em	2019-10-08 14:45:27.638507389 +0100
+++ binutils-2.30/ld/emultempl/pep.em	2019-10-08 14:48:42.356216712 +0100
@@ -1338,6 +1338,8 @@ write_build_id (bfd *abfd)
     return 0;
 
   if (bfd_bwrite (contents, size, abfd) != size)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return 0;
 
   /* Construct the CodeView record.  */
diff -rup binutils.orig/ld/ldfile.c binutils-2.30/ld/ldfile.c
--- binutils.orig/ld/ldfile.c	2019-10-08 14:45:27.635507409 +0100
+++ binutils-2.30/ld/ldfile.c	2019-10-08 14:49:24.851935030 +0100
@@ -563,6 +563,8 @@ ldfile_find_command_file (const char *na
 	  ldfile_add_library_path (script_dir, TRUE);
 	  search_tail_ptr = save_tail_ptr;
 	}
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 
   /* Temporarily append script_search to the path list so that the
diff -rup binutils.orig/ld/ldlang.c binutils-2.30/ld/ldlang.c
--- binutils.orig/ld/ldlang.c	2019-10-08 14:45:27.638507389 +0100
+++ binutils-2.30/ld/ldlang.c	2019-10-08 14:49:37.283852627 +0100
@@ -9272,6 +9272,8 @@ cmdline_fopen_temp (const char *path, co
   fd = open (tmpname, O_RDWR | O_CREAT | O_EXCL, 0600);
 #endif
   if (fd == -1)
+    /* There is a potential resource leak here, but it is not important.  */
+    /* coverity[leaked_storage: FALSE] */
     return NULL;
   return bfd_fopen (tmpname, target, mode, fd);
 }
diff -rup binutils.orig/ld/ldmain.c binutils-2.30/ld/ldmain.c
--- binutils.orig/ld/ldmain.c	2019-10-08 14:45:27.650507310 +0100
+++ binutils-2.30/ld/ldmain.c	2019-10-08 14:52:26.130733447 +0100
@@ -802,6 +802,8 @@ add_archive_element (struct bfd_link_inf
 		info_msg ("%I: no new IR symbols to claimi\n",
 			  &orig_input);
 	      input->flags.claimed = 0;
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return FALSE;
 	    }
 	  input->flags.claim_archive = TRUE;
@@ -855,6 +857,8 @@ add_archive_element (struct bfd_link_inf
 	  header_printed = TRUE;
 	}
 
+      /* Coverity incorrectly believes that abfd might be NULL at this point.  */
+      /* coverity[deref_after_free: FALSE] */
       if (abfd->my_archive == NULL
 	  || bfd_is_thin_archive (abfd->my_archive))
 	{
diff -rup binutils.orig/ld/ldwrite.c binutils-2.30/ld/ldwrite.c
--- binutils.orig/ld/ldwrite.c	2019-10-08 14:45:27.635507409 +0100
+++ binutils-2.30/ld/ldwrite.c	2019-10-08 14:53:32.850291467 +0100
@@ -367,6 +367,8 @@ clone_section (bfd *abfd, asection *s, c
 	{
 	  einfo (_ ("%F%P: cannot create split section name for %s\n"), name);
 	  /* Silence gcc warnings.  einfo exits, so we never reach here.  */
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return NULL;
 	}
       tname[5] = 0;
@@ -379,6 +381,8 @@ clone_section (bfd *abfd, asection *s, c
     {
       einfo (_("%F%P: clone section failed: %E\n"));
       /* Silence gcc warnings.  einfo exits, so we never reach here.  */
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
       return NULL;
     }
   free (tname);
diff -rup binutils.orig/ld/pe-dll.c binutils-2.30/ld/pe-dll.c
--- binutils.orig/ld/pe-dll.c	2019-10-08 14:45:27.650507310 +0100
+++ binutils-2.30/ld/pe-dll.c	2019-10-08 14:54:58.385725320 +0100
@@ -1397,6 +1397,8 @@ generate_reloc (bfd *abfd, struct bfd_li
 	  if (!bfd_generic_link_read_symbols (b))
 	    {
 	      einfo (_("%B%F: could not read symbols: %E\n"), b);
+	      /* There is a potential resource leak here, but it is not important.  */
+	      /* coverity[leaked_storage: FALSE] */
 	      return;
 	    }
 
@@ -1585,6 +1587,8 @@ generate_reloc (bfd *abfd, struct bfd_li
 
   while (reloc_sz < reloc_s->size)
     reloc_d[reloc_sz++] = 0;
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
 }
 
 /* Given the exiting def_file structure, print out a .DEF file that
@@ -2043,6 +2047,8 @@ make_tail (bfd *parent)
   bfd_set_section_contents (abfd, id7, d7, 0, len);
 
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
@@ -2323,6 +2329,8 @@ make_one (def_file_export *exp, bfd *par
     bfd_set_section_contents (abfd, id6, d6, 0, len);
 
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
@@ -2364,6 +2372,8 @@ make_singleton_name_imp (const char *imp
   bfd_set_section_contents (abfd, id5, d5, 0, PE_IDATA4_SIZE * 2);
 
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
@@ -2406,6 +2416,8 @@ make_singleton_name_thunk (const char *i
   bfd_set_section_contents (abfd, id4, d4, 0, PE_IDATA4_SIZE * 2);
 
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
@@ -2491,6 +2503,8 @@ make_import_fixup_entry (const char *nam
   bfd_set_section_contents (abfd, id2, d2, 0, 20);
 
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
diff -rup binutils.orig/ld/pe-dll.c binutils-2.30/ld/pe-dll.c
--- binutils.orig/ld/pe-dll.c	2019-10-08 15:28:31.546363527 +0100
+++ binutils-2.30/ld/pe-dll.c	2019-10-08 15:28:46.677262539 +0100
@@ -1977,6 +1977,8 @@ make_head (bfd *parent)
     }
 
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
@@ -2590,6 +2592,8 @@ make_runtime_pseudo_reloc (const char *n
       bfd_set_section_contents (abfd, rt_rel, rt_rel_d, 0, 8);
    }
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
@@ -2634,6 +2638,8 @@ pe_create_runtime_relocator_reference (b
   bfd_set_section_contents (abfd, extern_rt_rel, extern_rt_rel_d, 0, PE_IDATA5_SIZE);
 
   bfd_make_readable (abfd);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   return abfd;
 }
 
diff -rup binutils.orig/ld/plugin.c binutils-2.30/ld/plugin.c
--- binutils.orig/ld/plugin.c	2019-10-08 15:28:31.560363434 +0100
+++ binutils-2.30/ld/plugin.c	2019-10-08 15:29:32.579956181 +0100
@@ -314,6 +314,8 @@ plugin_get_ir_dummy_bfd (const char *nam
 
   bfd_use_reserved_id = 1;
   bfd_plugin_target = bfd_plugin_target_p (srctemplate->xvec);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   abfd = bfd_create (concat (name, IRONLY_SUFFIX, (const char *) NULL),
 		     bfd_plugin_target ? link_info.output_bfd : srctemplate);
   if (abfd != NULL)
@@ -503,6 +505,8 @@ add_symbols (void *handle, int nsyms, co
       symptrs[n] = bfdsym;
       rv = asymbol_from_plugin_symbol (abfd, bfdsym, syms + n);
       if (rv != LDPS_OK)
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return rv;
     }
   bfd_set_symtab (abfd, symptrs, nsyms);
@@ -842,6 +846,8 @@ static enum ld_plugin_status
 set_extra_library_path (const char *path)
 {
   ASSERT (called_plugin);
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[leaked_storage: FALSE] */
   ldfile_add_library_path (xstrdup (path), FALSE);
   return LDPS_OK;
 }
diff -rup binutils.orig/ld/testplug2.c binutils-2.30/ld/testplug2.c
--- binutils.orig/ld/testplug2.c	2019-10-08 15:28:31.547363520 +0100
+++ binutils-2.30/ld/testplug2.c	2019-10-08 15:31:08.483316106 +0100
@@ -242,7 +242,7 @@ parse_symdefstr (const char *str, struct
     sym->version = NULL;
   if (colon5 && colon5[1])
     {
-      sym->comdat_key = malloc (strlen (colon5 + 1) + 1);
+      sym->comdat_key = malloc (strlen (colon5) + 1 + 1);
       if (!sym->comdat_key)
 	return LDPS_ERR;
       strcpy (sym->comdat_key, colon5 + 1);
diff -rup binutils.orig/ld/testplug3.c binutils-2.30/ld/testplug3.c
--- binutils.orig/ld/testplug3.c	2019-10-08 15:28:31.561363427 +0100
+++ binutils-2.30/ld/testplug3.c	2019-10-08 15:31:28.351183504 +0100
@@ -241,7 +241,7 @@ parse_symdefstr (const char *str, struct
     sym->version = NULL;
   if (colon5 && colon5[1])
     {
-      sym->comdat_key = malloc (strlen (colon5 + 1) + 1);
+      sym->comdat_key = malloc (strlen (colon5) + 1 + 1);
       if (!sym->comdat_key)
 	return LDPS_ERR;
       strcpy (sym->comdat_key, colon5 + 1);
diff -rup binutils.orig/ld/testplug4.c binutils-2.30/ld/testplug4.c
--- binutils.orig/ld/testplug4.c	2019-10-08 15:28:31.547363520 +0100
+++ binutils-2.30/ld/testplug4.c	2019-10-08 15:31:38.739114175 +0100
@@ -242,7 +242,7 @@ parse_symdefstr (const char *str, struct
     sym->version = NULL;
   if (colon5 && colon5[1])
     {
-      sym->comdat_key = malloc (strlen (colon5 + 1) + 1);
+      sym->comdat_key = malloc (strlen (colon5) + 1 + 1);
       if (!sym->comdat_key)
 	return LDPS_ERR;
       strcpy (sym->comdat_key, colon5 + 1);
diff -rup binutils.orig/ld/testplug.c binutils-2.30/ld/testplug.c
--- binutils.orig/ld/testplug.c	2019-10-08 15:28:31.560363434 +0100
+++ binutils-2.30/ld/testplug.c	2019-10-08 15:30:37.140525299 +0100
@@ -263,7 +263,7 @@ parse_symdefstr (const char *str, struct
     sym->version = NULL;
   if (colon5 && colon5[1])
     {
-      sym->comdat_key = malloc (strlen (colon5 + 1) + 1);
+      sym->comdat_key = malloc (strlen (colon5) + 1 + 1);
       if (!sym->comdat_key)
 	return LDPS_ERR;
       strcpy (sym->comdat_key, colon5 + 1);
@@ -564,6 +564,8 @@ onclaim_file (const struct ld_plugin_inp
       if (buffer == NULL)
         return LDPS_ERR;
       if (read (file->fd, buffer, bytes_to_read_before_claim) < 0)
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
         return LDPS_ERR;
       free (buffer);
     }
diff -rup binutils.orig/libiberty/argv.c binutils-2.30/libiberty/argv.c
--- binutils.orig/libiberty/argv.c	2019-10-08 15:28:32.008360444 +0100
+++ binutils-2.30/libiberty/argv.c	2019-10-08 15:32:06.258930502 +0100
@@ -477,6 +477,8 @@ expandargv (int *argcp, char ***argvp)
     error:
       /* We're all done with the file now.  */
       fclose (f);
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[leaked_storage: FALSE] */
     }
 }
 
diff -rup binutils.orig/libiberty/regex.c binutils-2.30/libiberty/regex.c
--- binutils.orig/libiberty/regex.c	2019-10-08 15:28:32.009360437 +0100
+++ binutils-2.30/libiberty/regex.c	2019-10-08 15:33:10.899499081 +0100
@@ -2453,6 +2453,8 @@ PREFIX(regex_compile) (const char *ARG_P
   /* Loop through the uncompiled pattern until we're at the end.  */
   while (p != pend)
     {
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[memleak: FALSE] */
       PATFETCH (c);
 
       switch (c)
diff -rup binutils.orig/libiberty/simple-object-elf.c binutils-2.30/libiberty/simple-object-elf.c
--- binutils.orig/libiberty/simple-object-elf.c	2019-10-08 15:28:32.011360423 +0100
+++ binutils-2.30/libiberty/simple-object-elf.c	2019-10-08 15:33:40.483301634 +0100
@@ -1151,6 +1151,8 @@ simple_object_elf_copy_lto_debug_section
 	  *err = 0;
 	  XDELETEVEC (names);
 	  XDELETEVEC (shdrs);
+	  /* There is a potential resource leak here, but it is not important.  */
+	  /* coverity[leaked_storage: FALSE] */
 	  return "ELF section name out of range";
 	}
 
diff -rup binutils.orig/libiberty/simple-object-mach-o.c binutils-2.30/libiberty/simple-object-mach-o.c
--- binutils.orig/libiberty/simple-object-mach-o.c	2019-10-08 15:28:32.008360444 +0100
+++ binutils-2.30/libiberty/simple-object-mach-o.c	2019-10-08 15:34:16.530061049 +0100
@@ -1139,6 +1139,8 @@ simple_object_mach_o_write_segment (simp
 	    write = sizeof zeroes;
 	  if (!simple_object_internal_write (descriptor, offset, zeroes, write,
 					     errmsg, err))
+	    /* There is a potential resource leak here, but it is not important.  */
+	    /* coverity[leaked_storage: FALSE] */
 	    return 0;
 	  offset += write;
 	}
@@ -1245,6 +1247,8 @@ simple_object_mach_o_write_segment (simp
       if (!simple_object_internal_write (descriptor, offset,
 					 (const unsigned char *) snames,
 					 name_offset, errmsg, err))
+	/* There is a potential resource leak here, but it is not important.  */
+	/* coverity[leaked_storage: FALSE] */
 	return 0;
 
       sechdr_offset += sechdrsize;
diff -rup binutils.orig/libiberty/vprintf-support.c binutils-2.30/libiberty/vprintf-support.c
--- binutils.orig/libiberty/vprintf-support.c	2019-10-08 15:28:32.008360444 +0100
+++ binutils-2.30/libiberty/vprintf-support.c	2019-10-08 15:35:10.785698942 +0100
@@ -49,6 +49,8 @@ libiberty_vprintf_buffer_size (const cha
 #ifdef va_copy
   va_copy (ap, args);
 #else
+  /* There is a potential resource leak here, but it is not important.  */
+  /* coverity[va_list_usedBeforeStarted: FALSE] */
   memcpy ((PTR) &ap, (PTR) &args, sizeof (va_list));
 #endif
 
diff -rup binutils.orig/libiberty/regex.c binutils-2.30/libiberty/regex.c
--- binutils.orig/libiberty/regex.c	2019-10-08 16:19:10.299014643 +0100
+++ binutils-2.30/libiberty/regex.c	2019-10-08 16:20:19.168553441 +0100
@@ -2454,7 +2454,7 @@ PREFIX(regex_compile) (const char *ARG_P
   while (p != pend)
     {
       /* There is a potential resource leak here, but it is not important.  */
-      /* coverity[memleak: FALSE] */
+      /* coverity[error[memleak]: FALSE] */
       PATFETCH (c);
 
       switch (c)
diff -rup binutils.orig/libiberty/vprintf-support.c binutils-2.30/libiberty/vprintf-support.c
--- binutils.orig/libiberty/vprintf-support.c	2019-10-08 16:19:10.299014643 +0100
+++ binutils-2.30/libiberty/vprintf-support.c	2019-10-08 16:24:37.917821604 +0100
@@ -49,8 +49,8 @@ libiberty_vprintf_buffer_size (const cha
 #ifdef va_copy
   va_copy (ap, args);
 #else
-  /* There is a potential resource leak here, but it is not important.  */
-  /* coverity[va_list_usedBeforeStarted: FALSE] */
+  /* Coverity insists on va_start being used.  */
+  va_start (ap);
   memcpy ((PTR) &ap, (PTR) &args, sizeof (va_list));
 #endif
 
diff -rup binutils.orig/zlib/gzlib.c binutils-2.30/zlib/gzlib.c
--- binutils.orig/zlib/gzlib.c	2019-10-08 16:19:10.304014609 +0100
+++ binutils-2.30/zlib/gzlib.c	2019-10-08 16:23:11.678398812 +0100
@@ -291,7 +291,9 @@ gzFile ZEXPORT gzdopen(fd, mode)
     gzFile gz;
 
     if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL)
-        return NULL;
+      /* There is a potential resource leak here, but it is not important.  */
+      /* coverity[Memory Leak: FALSE] */
+      return NULL;
 #if !defined(NO_snprintf) && !defined(NO_vsnprintf)
     (void)snprintf(path, 7 + 3 * sizeof(int), "<fd:%d>", fd);
 #else
diff -rup binutils.orig/libiberty/regex.c binutils-2.30/libiberty/regex.c
--- binutils.orig/libiberty/regex.c	2019-10-08 17:18:32.431500412 +0100
+++ binutils-2.30/libiberty/regex.c	2019-10-08 17:26:31.013117409 +0100
@@ -2453,8 +2453,13 @@ PREFIX(regex_compile) (const char *ARG_P
   /* Loop through the uncompiled pattern until we're at the end.  */
   while (p != pend)
     {
-      /* There is a potential resource leak here, but it is not important.  */
-      /* coverity[error[memleak]: FALSE] */
+      if (p == pend)
+	{
+	  /* This free is to silence coverity.  */
+	  free (compile_stack.stack);
+	  compile_stack.stack = NULL;
+	  compile_stack.avail = 0;
+	}
       PATFETCH (c);
 
       switch (c)
diff -rup binutils.orig/zlib/gzlib.c binutils-2.30/zlib/gzlib.c
--- binutils.orig/zlib/gzlib.c	2019-10-08 17:18:32.435500384 +0100
+++ binutils-2.30/zlib/gzlib.c	2019-10-08 17:20:23.718713753 +0100
@@ -287,13 +287,15 @@ gzFile ZEXPORT gzdopen(fd, mode)
     int fd;
     const char *mode;
 {
-    char *path;         /* identifier for error messages */
+    char *path = NULL;         /* identifier for error messages */
     gzFile gz;
 
     if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL)
-      /* There is a potential resource leak here, but it is not important.  */
-      /* coverity[Memory Leak: FALSE] */
-      return NULL;
+      {
+	/* This free is to silence coverity.  */
+	free (path);
+	return NULL;
+      }
 #if !defined(NO_snprintf) && !defined(NO_vsnprintf)
     (void)snprintf(path, 7 + 3 * sizeof(int), "<fd:%d>", fd);
 #else