[clang] [clang][ssaf] Validate plugin path before in `loadPlugins` (PR #195992)
via cfe-commits
cfe-commits at lists.llvm.org
Tue May 5 20:46:32 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-static-analyzer-1
Author: Aviral Goel (aviralg)
<details>
<summary>Changes</summary>
This change validates that plugin paths exist before loading them, producing a clean error message instead of relying on dlopen failure behavior. This fixes test failure on HWSan (aarch64-linux) where dlopen of a nonexistent `.so` triggers a sanitizer crash before the error message is written.
---
Full diff: https://github.com/llvm/llvm-project/pull/195992.diff
2 Files Affected:
- (modified) clang/lib/ScalableStaticAnalysisFramework/Tool/Utils.cpp (+4)
- (modified) clang/test/Analysis/Scalable/ssaf-analyzer/cli-errors.test (+1-1)
``````````diff
diff --git a/clang/lib/ScalableStaticAnalysisFramework/Tool/Utils.cpp b/clang/lib/ScalableStaticAnalysisFramework/Tool/Utils.cpp
index 6a78620b757e6..f14f34eb3bbb0 100644
--- a/clang/lib/ScalableStaticAnalysisFramework/Tool/Utils.cpp
+++ b/clang/lib/ScalableStaticAnalysisFramework/Tool/Utils.cpp
@@ -136,6 +136,10 @@ llvm::StringRef clang::ssaf::getToolName() { return ToolName; }
void clang::ssaf::loadPlugins(llvm::ArrayRef<std::string> Paths) {
for (const std::string &PluginPath : Paths) {
+ if (!fs::exists(PluginPath)) {
+ fail(ErrorMessages::FailedToLoadPlugin, PluginPath,
+ ErrorMessages::PathDoesNotExist);
+ }
std::string ErrMsg;
if (llvm::sys::DynamicLibrary::LoadLibraryPermanently(PluginPath.c_str(),
&ErrMsg)) {
diff --git a/clang/test/Analysis/Scalable/ssaf-analyzer/cli-errors.test b/clang/test/Analysis/Scalable/ssaf-analyzer/cli-errors.test
index 3f3abeef63643..0367ba8b8c484 100644
--- a/clang/test/Analysis/Scalable/ssaf-analyzer/cli-errors.test
+++ b/clang/test/Analysis/Scalable/ssaf-analyzer/cli-errors.test
@@ -26,7 +26,7 @@
// RUN: not clang-ssaf-analyzer --load /nonexistent/path/plugin.so \
// RUN: %S/Inputs/lu.json -o %t/plugin-err.json 2>&1 \
// RUN: | FileCheck %s --check-prefix=BAD-PLUGIN
-// BAD-PLUGIN: clang-ssaf-analyzer: error: failed to load plugin '/nonexistent/path/plugin.so':
+// BAD-PLUGIN: clang-ssaf-analyzer: error: failed to load plugin '/nonexistent/path/plugin.so': Path does not exist
// ============================================================================
// Error: empty analysis name
``````````
</details>
https://github.com/llvm/llvm-project/pull/195992
More information about the cfe-commits
mailing list