[z/OS] Fix z/OS ASAN test failure#197547
Conversation
|
@llvm/pr-subscribers-llvm-binary-utilities Author: Uyiosa Iyekekpolor (uyoyo0) ChangesFix test failure when running AddressSanitizer detected a heap-buffer-overflow in Original PR: #187110 Full diff: https://github.com/llvm/llvm-project/pull/197547.diff 1 Files Affected:
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp
index d95f9103747aa..ae54338bb9a71 100644
--- a/llvm/lib/Object/Archive.cpp
+++ b/llvm/lib/Object/Archive.cpp
@@ -390,6 +390,10 @@ ZOSArchiveMemberHeader::ZOSArchiveMemberHeader(const Archive *Parent,
uint64_t Size, Error *Err)
: ArchiveMemberHeader(Parent, RawHeaderPtr, Size, Err) {
ErrorAsOutParameter ErrAsOutParam(Err);
+ // If the base class constructor already detected an error
+ // do not attempt to read header fields
+ if (Err && *Err)
+ return;
setMemberHeaderStrings(Err, Size);
}
|
|
uyoyo0 Could you please set your GitHub to use a public email address, per https://llvm.org/docs/DeveloperPolicy.html#email-addresses? Thanks! |
Fix test failure when running `zos-archive-read.test` under asan. AddressSanitizer detected a heap-buffer-overflow in `ebcdicFieldToASCII()` when reading z/OS archive headers. The issue occurred because `ZOSArchiveMemberHeader::setMemberHeaderStrings` was called even when the base `ArchiveMemberHeader` constructor had already set an error, causing reads past the end of fixed-size EBCDIC fields. Fixed by checking for constructor errors before calling `setMemberHeaderStrings`. Original PR: llvm#187110
Fix test failure when running
zos-archive-read.testunder asan.AddressSanitizer detected a heap-buffer-overflow in
ebcdicFieldToASCII()when reading z/OS archive headers. The issue occurred becauseZOSArchiveMemberHeader::setMemberHeaderStringswas called even when the baseArchiveMemberHeaderconstructor had already set an error, causing reads past the end of fixed-size EBCDIC fields. Fixed by checking for constructor errors before callingsetMemberHeaderStrings.Original PR: #187110