asan: alpha-vms: mmember access within null pointer

Alan Modra amodra@gmail.com
Wed Aug 26 13:45:42 GMT 2020


	* bfdio.c (bfd_get_file_size): Don't segv on NULL adata.

diff --git a/bfd/bfdio.c b/bfd/bfdio.c
index 5f144bc7f3..86b696bba9 100644
--- a/bfd/bfdio.c
+++ b/bfd/bfdio.c
@@ -493,13 +493,17 @@ bfd_get_file_size (bfd *abfd)
       && !bfd_is_thin_archive (abfd->my_archive))
     {
       struct areltdata *adata = (struct areltdata *) abfd->arelt_data;
-      archive_size = adata->parsed_size;
-      /* If the archive is compressed we can't compare against file size.  */
-      if (adata->arch_header != NULL
-	  && memcmp (((struct ar_hdr *) adata->arch_header)->ar_fmag,
-		     "Z\012", 2) == 0)
-	return archive_size;
-      abfd = abfd->my_archive;
+      if (adata != NULL)
+	{
+	  archive_size = adata->parsed_size;
+	  /* If the archive is compressed we can't compare against
+	     file size.  */
+	  if (adata->arch_header != NULL
+	      && memcmp (((struct ar_hdr *) adata->arch_header)->ar_fmag,
+			 "Z\012", 2) == 0)
+	    return archive_size;
+	  abfd = abfd->my_archive;
+	}
     }
 
   file_size = bfd_get_size (abfd);

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list