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

Reply via email to