diff options
author | Ben Shi <2283975856@qq.com> | 2024-01-03 18:23:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-03 18:23:45 +0800 |
commit | 3db749afcb5079dac332942a3e0b258cdb629a02 (patch) | |
tree | 22ec237f837b8a4fbafc5c74c42e476713309709 /clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp | |
parent | 665d1a0eb4e50cdc1b6f0f678a4c2b1e1875dc66 (diff) | |
download | llvm-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.cpp | 7 |
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. |