[clang] [compiler-rt] [UBSAN] add null and alignment checks for aggregates (PR #164548)
Hubert Tong via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 2 09:39:25 PST 2025
================
@@ -2249,6 +2249,24 @@ void CodeGenFunction::EmitAggregateCopy(LValue Dest, LValue Src, QualType Ty,
bool isVolatile) {
assert(!Ty->isAnyComplexType() && "Shouldn't happen for complex");
+ // Sanitizer checks to verify source and destination pointers are
+ // non-null and properly aligned before copying.
+ // Without these checks, undefined behavior from invalid pointers goes undetected.
+ if (SanOpts.hasOneOf(SanitizerKind::Null | SanitizerKind::Alignment)) {
+ Address SrcAddr = Src.getAddress();
+ Address DestAddr = Dest.getAddress();
+
+ // Check source pointer for null and alignment violations
+ EmitTypeCheck(TCK_Load, SourceLocation(),
----------------
hubert-reinterpretcast wrote:
@vasu-the-sharma, can you post the PR with the tests? The idea is that the tests land first (checking for the behaviour before this PR) and then this PR will update the tests (thus demonstrating the change caused by the functional changes in this PR to each of the test cases).
https://github.com/llvm/llvm-project/pull/164548
More information about the llvm-commits
mailing list