[llvm] 56f967d - [Object] Prevent null pointer dereference in BigArchiveMemberHeader

Victor Campos via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 28 05:15:02 PDT 2022


Author: Victor Campos
Date: 2022-10-28T13:14:52+01:00
New Revision: 56f967db51fb3ba025bc00e7c3513549cf909da7

URL: https://github.com/llvm/llvm-project/commit/56f967db51fb3ba025bc00e7c3513549cf909da7
DIFF: https://github.com/llvm/llvm-project/commit/56f967db51fb3ba025bc00e7c3513549cf909da7.diff

LOG: [Object] Prevent null pointer dereference in BigArchiveMemberHeader

The pointer argument Err from BigArchiveMemberHeader's constructor can
be null. This pointer was dereferenced without any null checks.

This patch adds a check to avoid a null dereference.

Reviewed By: brenoguim

Differential Revision: https://reviews.llvm.org/D135449

Added: 
    

Modified: 
    llvm/lib/Object/Archive.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp
index 1dffe007b9a9f..9c0f64346bb88 100644
--- a/llvm/lib/Object/Archive.cpp
+++ b/llvm/lib/Object/Archive.cpp
@@ -136,8 +136,11 @@ BigArchiveMemberHeader::BigArchiveMemberHeader(const Archive *Parent,
     return;
   ErrorAsOutParameter ErrAsOutParam(Err);
 
-  if (Size < getSizeOf())
-    *Err = createMemberHeaderParseError(this, RawHeaderPtr, Size);
+  if (Size < getSizeOf()) {
+    Error SubErr = createMemberHeaderParseError(this, RawHeaderPtr, Size);
+    if (Err)
+      *Err = std::move(SubErr);
+  }
 }
 
 // This gets the raw name from the ArMemHdr->Name field and checks that it is


        


More information about the llvm-commits mailing list