https://github.com/balazske updated https://github.com/llvm/llvm-project/pull/175794
From 393a073fec7df8351d6801e381b7fbec8fc218fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20K=C3=A9ri?= <[email protected]> Date: Tue, 13 Jan 2026 16:46:03 +0100 Subject: [PATCH 1/2] [clang][analyzer] StdLibraryFunctionsChecker getcwd fix --- ...td-c-library-functions-char-uchar-conv.cpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 clang/test/Analysis/std-c-library-functions-char-uchar-conv.cpp diff --git a/clang/test/Analysis/std-c-library-functions-char-uchar-conv.cpp b/clang/test/Analysis/std-c-library-functions-char-uchar-conv.cpp new file mode 100644 index 0000000000000..dcb233e072af4 --- /dev/null +++ b/clang/test/Analysis/std-c-library-functions-char-uchar-conv.cpp @@ -0,0 +1,28 @@ +// RUN: %clang_analyze_cc1 \ +// RUN: -analyzer-checker=core,unix.StdCLibraryFunctions,unix.Errno \ +// RUN: -analyzer-config unix.StdCLibraryFunctions:ModelPOSIX=true \ +// RUN: -verify %s +// +// expected-no-diagnostics + +#include "Inputs/system-header-simulator-cxx.h" +#include "Inputs/errno_var.h" + +char *getcwd(char *buf, size_t size); + +int main(int argc, char *argv[]) { + std::vector<char> charbuf; + if (!getcwd(charbuf.data(), charbuf.size() - 1)) { + if (errno == 2) { + return 1; + } + } + + std::vector<unsigned char> ucharbuf; + if (!getcwd((char*)ucharbuf.data(), ucharbuf.size() - 1)) { + if (errno == 2) { // no (false) warning from unix.Errno on this line + return 1; + } + } + return 0; +} From bef9a5247a309ed3b97a85cab1ecbd2b6a5c015b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20K=C3=A9ri?= <[email protected]> Date: Tue, 13 Jan 2026 17:46:54 +0100 Subject: [PATCH 2/2] added missing changes --- .../lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp | 2 +- clang/test/Analysis/Inputs/system-header-simulator-cxx.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp index 844447f59f7f6..09202f513b9e8 100644 --- a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp @@ -2657,7 +2657,7 @@ void StdLibraryFunctionsChecker::initFunctionSummaries( Summary(NoEvalCall) .Case({NotNull(0), ArgumentCondition(1, WithinRange, Range(1, SizeMax)), - ReturnValueCondition(BO_EQ, ArgNo(0))}, + ReturnValueCondition(BO_EQ, ArgNo(0)), NotNull(Ret)}, ErrnoMustNotBeChecked, GenericSuccessMsg) .Case({NotNull(0), ArgumentCondition(1, WithinRange, SingleValue(0)), diff --git a/clang/test/Analysis/Inputs/system-header-simulator-cxx.h b/clang/test/Analysis/Inputs/system-header-simulator-cxx.h index c5aeb0af9d578..32568a38bd3eb 100644 --- a/clang/test/Analysis/Inputs/system-header-simulator-cxx.h +++ b/clang/test/Analysis/Inputs/system-header-simulator-cxx.h @@ -321,6 +321,8 @@ namespace std { void emplace_back(Args&&... args); void pop_back(); + T *data(); + iterator insert(const_iterator position, const value_type &val); iterator insert(const_iterator position, size_type n, const value_type &val); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
