[clang] [clang][analyzer] Improve 'errno' modeling of 'mkdtemp' (PR #76671)

Balázs Kéri via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 3 01:03:18 PST 2024


================
@@ -2511,10 +2511,12 @@ 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({NotNull(Ret)}, ErrnoMustNotBeChecked, GenericSuccessMsg)
----------------
balazske wrote:

It should work in this way (returned value is the same as "template").
```suggestion
            .Case({ReturnValueCondition(BO_EQ, ArgNo(0))},
                  ErrnoMustNotBeChecked, GenericSuccessMsg)
```

https://github.com/llvm/llvm-project/pull/76671


More information about the cfe-commits mailing list