[Object] Prevent null pointer dereference in BigArchiveMemberHeader
authorVictor Campos <victor.campos@arm.com>
Fri, 7 Oct 2022 14:37:42 +0000 (15:37 +0100)
committerVictor Campos <victor.campos@arm.com>
Fri, 28 Oct 2022 12:14:52 +0000 (13:14 +0100)
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

llvm/lib/Object/Archive.cpp

index 1dffe00..9c0f643 100644 (file)
@@ -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