aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
diff options
context:
space:
mode:
authorBen Shi <2283975856@qq.com>2024-01-03 18:23:45 +0800
committerGitHub <noreply@github.com>2024-01-03 18:23:45 +0800
commit3db749afcb5079dac332942a3e0b258cdb629a02 (patch)
tree22ec237f837b8a4fbafc5c74c42e476713309709 /clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
parent665d1a0eb4e50cdc1b6f0f678a4c2b1e1875dc66 (diff)
downloadllvm-3db749afcb5079dac332942a3e0b258cdb629a02.zip
llvm-3db749afcb5079dac332942a3e0b258cdb629a02.tar.gz
llvm-3db749afcb5079dac332942a3e0b258cdb629a02.tar.bz2
[clang][analyzer] Improve 'errno' modeling of 'mkdtemp' (#76671)
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
index 6560fd2..2006865 100644
--- a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
@@ -2507,10 +2507,13 @@ void StdLibraryFunctionsChecker::initFunctionSummaries(
.ArgConstraint(NotNull(ArgNo(0))));
// char *mkdtemp(char *template);
- // FIXME: Improve for errno modeling.
addToFunctionSummaryMap(
"mkdtemp", Signature(ArgTypes{CharPtrTy}, RetType{CharPtrTy}),
- Summary(NoEvalCall).ArgConstraint(NotNull(ArgNo(0))));
+ Summary(NoEvalCall)
+ .Case({ReturnValueCondition(BO_EQ, ArgNo(0))},
+ ErrnoMustNotBeChecked, GenericSuccessMsg)
+ .Case({IsNull(Ret)}, ErrnoNEZeroIrrelevant, GenericFailureMsg)
+ .ArgConstraint(NotNull(ArgNo(0))));
// char *getcwd(char *buf, size_t size);
// FIXME: Improve for errno modeling.