[clang] Fix add nullptr check for s is template name (PR #162377)
Shafik Yaghmour via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 7 14:43:21 PDT 2025
https://github.com/shafik created https://github.com/llvm/llvm-project/pull/162377
None
>From b8b8b47a1b8996b8cf906e3ba0b3190fbf5c0151 Mon Sep 17 00:00:00 2001
From: Shafik Yaghmour <shafik.yaghmour at intel.com>
Date: Tue, 7 Oct 2025 14:17:31 -0700
Subject: [PATCH 1/2] [Clang][Sema] Add nullptr check in isTemplateName
Static analysis flagged that when calling ActOnTemplateName, S can be a nullptr
and we call isTemplateName which unconditionally dereferences the S argument at
some point. I added a nullptr check to assure we don't dereference S in
isTemplateName if it is a nullptr.
---
clang/lib/Sema/SemaTemplate.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 419f3e1ad30ed..3076dae9f927b 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -319,7 +319,7 @@ TemplateNameKind Sema::isTemplateName(Scope *S,
}
if (isPackProducingBuiltinTemplateName(Template) &&
- S->getTemplateParamParent() == nullptr)
+ S && S->getTemplateParamParent() == nullptr)
Diag(Name.getBeginLoc(), diag::err_builtin_pack_outside_template) << TName;
// Recover by returning the template, even though we would never be able to
// substitute it.
>From 13de0fd59355ad635be95fe1df828d2d74b7412c Mon Sep 17 00:00:00 2001
From: Shafik Yaghmour <shafik.yaghmour at intel.com>
Date: Tue, 7 Oct 2025 14:42:41 -0700
Subject: [PATCH 2/2] Applied clang-format
---
clang/lib/Sema/SemaTemplate.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 3076dae9f927b..3a6ff9910667d 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -318,8 +318,8 @@ TemplateNameKind Sema::isTemplateName(Scope *S,
}
}
- if (isPackProducingBuiltinTemplateName(Template) &&
- S && S->getTemplateParamParent() == nullptr)
+ if (isPackProducingBuiltinTemplateName(Template) && S &&
+ S->getTemplateParamParent() == nullptr)
Diag(Name.getBeginLoc(), diag::err_builtin_pack_outside_template) << TName;
// Recover by returning the template, even though we would never be able to
// substitute it.
More information about the cfe-commits
mailing list