From 1b6b411291b4d7cfd830d43609eaddc65b0f2c56 Mon Sep 17 00:00:00 2001 From: "Manna, Soumi" Date: Thu, 21 Nov 2024 07:25:11 -0800 Subject: [PATCH 1/2] [Clang] Prevent potential null pointer dereferences --- clang/lib/AST/ASTContext.cpp | 2 +- clang/lib/Sema/SemaFunctionEffects.cpp | 2 +- clang/lib/Sema/SemaHLSL.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 14fbadbc35ae5..23df7878a3bf2 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -3558,7 +3558,7 @@ ASTContext::adjustType(QualType Orig, llvm::function_ref Adjust) const { switch (Orig->getTypeClass()) { case Type::Attributed: { - const auto *AT = dyn_cast(Orig); + const auto *AT = cast(Orig); return getAttributedType(AT->getAttrKind(), adjustType(AT->getModifiedType(), Adjust), adjustType(AT->getEquivalentType(), Adjust), diff --git a/clang/lib/Sema/SemaFunctionEffects.cpp b/clang/lib/Sema/SemaFunctionEffects.cpp index 6fe4d2353a228..c5c1e3fb41a2f 100644 --- a/clang/lib/Sema/SemaFunctionEffects.cpp +++ b/clang/lib/Sema/SemaFunctionEffects.cpp @@ -627,7 +627,7 @@ class Analyzer { IsNoexcept = isNoexcept(FD); } else if (auto *BD = dyn_cast(D)) { if (auto *TSI = BD->getSignatureAsWritten()) { - auto *FPT = TSI->getType()->getAs(); + auto *FPT = TSI->getType()->castAs(); IsNoexcept = FPT->isNothrow() || BD->hasAttr(); } } diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index f4fc0f2ddc27a..a1adc66ddb9ce 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -1908,9 +1908,9 @@ bool SemaHLSL::CheckBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { return true; // ensure both args have 3 elements int NumElementsArg1 = - TheCall->getArg(0)->getType()->getAs()->getNumElements(); + TheCall->getArg(0)->getType()->casAs()->getNumElements(); int NumElementsArg2 = - TheCall->getArg(1)->getType()->getAs()->getNumElements(); + TheCall->getArg(1)->getType()->castAs()->getNumElements(); if (NumElementsArg1 != 3) { int LessOrMore = NumElementsArg1 > 3 ? 1 : 0; From dd7c34b8309e744e329b10ec5270444bb455a00c Mon Sep 17 00:00:00 2001 From: "Manna, Soumi" Date: Thu, 21 Nov 2024 07:38:00 -0800 Subject: [PATCH 2/2] Address review comments --- clang/lib/Sema/SemaHLSL.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index a1adc66ddb9ce..0c70d4e5cff25 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -1908,7 +1908,7 @@ bool SemaHLSL::CheckBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) { return true; // ensure both args have 3 elements int NumElementsArg1 = - TheCall->getArg(0)->getType()->casAs()->getNumElements(); + TheCall->getArg(0)->getType()->castAs()->getNumElements(); int NumElementsArg2 = TheCall->getArg(1)->getType()->castAs()->getNumElements();