diff options
author | Victor Campos <victor.campos@arm.com> | 2022-10-07 15:37:42 +0100 |
---|---|---|
committer | Victor Campos <victor.campos@arm.com> | 2022-10-28 13:14:52 +0100 |
commit | 56f967db51fb3ba025bc00e7c3513549cf909da7 (patch) | |
tree | 23ef5d75e4986ae068d0128093e3ea3641862ca2 /llvm/lib/Object/Archive.cpp | |
parent | 3ac17449cf988bfcde804a4cc532420ed1657595 (diff) | |
download | llvm-56f967db51fb3ba025bc00e7c3513549cf909da7.zip llvm-56f967db51fb3ba025bc00e7c3513549cf909da7.tar.gz llvm-56f967db51fb3ba025bc00e7c3513549cf909da7.tar.bz2 |
[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
Diffstat (limited to 'llvm/lib/Object/Archive.cpp')
-rw-r--r-- | llvm/lib/Object/Archive.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp index 1dffe00..9c0f643 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 |