[binutils-gdb] asan: alpha-vms: mmember access within null pointer

Alan Modra amodra@sourceware.org
Wed Aug 26 13:54:25 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c01de193638c9022411ae0542a457b9d68723013

commit c01de193638c9022411ae0542a457b9d68723013
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Aug 26 11:32:51 2020 +0930

    asan: alpha-vms: mmember access within null pointer
    
            * bfdio.c (bfd_get_file_size): Don't segv on NULL adata.

Diff:
---
 bfd/ChangeLog |  4 ++++
 bfd/bfdio.c   | 18 +++++++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index fe440e89c6b..c296f6d89a3 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	* bfdio.c (bfd_get_file_size): Don't segv on NULL adata.
+
 2020-08-26  Alan Modra  <amodra@gmail.com>
 
 	PR 26415
diff --git a/bfd/bfdio.c b/bfd/bfdio.c
index 5f144bc7f3f..86b696bba9c 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);


More information about the Binutils-cvs mailing list