solidity/libsolidity/formal
Martin Blicha b0419da654 [SMTChecker] Remember verification targets from trusted external calls
Previously, we did not remember trusted external calls for later phase
when we compute possible verification targets for each function.
This led to false negative in cases where verification target can be
violated, but not by calling a public function directly, but only when
it is called as an external function from other function.

The added test cases witnesses this behaviour. The underflow in
`dec` cannot happen in any other way except what the `dec` is called
from `f`.

The same problem did not occur when the functions are called internally,
because for such cases, we have already been remembering these calls in
the callgraph in the CHC engine.
2023-05-26 13:03:44 +02:00
..
ArraySlicePredicate.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
ArraySlicePredicate.h Support array slices 2020-10-01 11:52:02 +02:00
BMC.cpp Fix encoding of side-effects inside if and conditional statements in the BMC engine 2023-05-11 16:44:09 +02:00
BMC.h group unsupported warnings 2023-03-15 17:06:06 +01:00
CHC.cpp [SMTChecker] Remember verification targets from trusted external calls 2023-05-26 13:03:44 +02:00
CHC.h group unsupported warnings 2023-03-15 17:06:06 +01:00
EncodingContext.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
EncodingContext.h Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
ExpressionFormatter.cpp Add ExpressionFormatter which translates an smtutil::Expression into a Solidity-like expression string 2021-10-26 11:30:30 +02:00
ExpressionFormatter.h Add ExpressionFormatter which translates an smtutil::Expression into a Solidity-like expression string 2021-10-26 11:30:30 +02:00
Invariants.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
Invariants.h Add Invariants which traverses the proof and collects invariants for the given predicates 2021-10-26 11:30:30 +02:00
ModelChecker.cpp group unsupported warnings 2023-03-15 17:06:06 +01:00
ModelChecker.h group unsupported warnings 2023-03-15 17:06:06 +01:00
ModelCheckerSettings.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
ModelCheckerSettings.h group unsupported warnings 2023-03-15 17:06:06 +01:00
Predicate.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
Predicate.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
PredicateInstance.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
PredicateInstance.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
PredicateSort.cpp [SMTChecker] Detect errors caused by reentrancy 2020-12-28 14:32:53 +01:00
PredicateSort.h [SMTChecker] Detect errors caused by reentrancy 2020-12-28 14:32:53 +01:00
SMTEncoder.cpp group unsupported warnings 2023-03-15 17:06:06 +01:00
SMTEncoder.h group unsupported warnings 2023-03-15 17:06:06 +01:00
SSAVariable.cpp Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
SSAVariable.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
SymbolicState.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicState.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicTypes.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicTypes.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicVariables.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
SymbolicVariables.h Replace TypePointer with Type const* 2021-03-23 11:47:19 +01:00
VariableUsage.cpp [SMTChecker] Correctly resolve current scope contract in VariableUsage. 2021-03-15 13:55:14 +01:00
VariableUsage.h [SMTChecker] Correctly resolve current scope contract in VariableUsage. 2021-03-15 13:55:14 +01:00