[clang] [clang][analyzer] Improve modeling of 'fseeko' and 'ftello' in StdLibraryFunctionsChecker (PR #77902)
Balázs Kéri via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 12 07:24:57 PST 2024
================
@@ -2859,13 +2859,19 @@ void StdLibraryFunctionsChecker::initFunctionSummaries(
"fseeko",
Signature(ArgTypes{FilePtrTy, Off_tTy, IntTy}, RetType{IntTy}),
Summary(NoEvalCall)
- .Case(ReturnsZeroOrMinusOne, ErrnoIrrelevant)
- .ArgConstraint(NotNull(ArgNo(0))));
+ .Case(ReturnsZero, ErrnoMustNotBeChecked, GenericSuccessMsg)
+ .Case(ReturnsMinusOne, ErrnoNEZeroIrrelevant, GenericFailureMsg)
+ .ArgConstraint(NotNull(ArgNo(0)))
+ .ArgConstraint(ArgumentCondition(2, WithinRange, {{0, 2}})));
// off_t ftello(FILE *stream);
addToFunctionSummaryMap(
"ftello", Signature(ArgTypes{FilePtrTy}, RetType{Off_tTy}),
- Summary(NoEvalCall).ArgConstraint(NotNull(ArgNo(0))));
+ Summary(NoEvalCall)
+ .Case({ReturnValueCondition(WithinRange, Range(0, LongMax))},
+ ErrnoUnchanged, GenericSuccessMsg)
----------------
balazske wrote:
```suggestion
ErrnoMustNotBeChecked, GenericSuccessMsg)
```
`ftello` may change `errno` if successful, contrary to `ftell.`
https://github.com/llvm/llvm-project/pull/77902
More information about the cfe-commits
mailing list