Skip to main content

Module reentrancy

Module reentrancy 

Source

StructsΒ§

Analyzer πŸ”’
BalanceForm πŸ”’
A supported additive source pattern on one path. An empty term list is balance-independent. At most two balance terms are retained: a stale/current comparison needs one of each. More terms are rejected rather than cancelled, since Solidity arithmetic may wrap or revert.
BalanceTerm πŸ”’
One signed balance read, retaining the calls across which it was cached.
BalanceValue πŸ”’
Balance-related facts about a value flowing into a local, parameter or return slot.
CallCollector πŸ”’
Collects the internal functions and modifiers a function invokes directly.
FlowState πŸ”’
Facts that hold along one execution path.
InlineCallKey πŸ”’

EnumsΒ§

Operand πŸ”’
A local variable or constant appearing in a predicate or lock expression.
PathPredicate πŸ”’
ReentrantCallKind πŸ”’

ConstantsΒ§

REENTRANCY_GAS_STIPEND πŸ”’
Gas stipend forwarded by transfer/send; a call capped at or below it cannot reenter.

StaticsΒ§

REENTRANCY_BALANCE
REENTRANCY_ETH
REENTRANCY_NO_ETH

FunctionsΒ§

balance_reentry_lock πŸ”’
The reentrancy-guard lock, if any, that protects every entry point of every deployable contract exposing entry.
branch_stops_current_path πŸ”’
break/continue or anything that exits the function, so the current path stops here.
call_option πŸ”’
call_options_allow_reentrancy πŸ”’
True unless a gas: option provably leaves the callee too little gas to reenter.
call_sends_eth πŸ”’
call_uses_delegate_context πŸ”’
delegatecall/callcode, which run the callee in the caller’s storage context.
callee_can_reenter πŸ”’
An external call that hands control to another contract: a low-level call/callcode/ delegatecall on an address, or a state-changing external function call.
cast_args πŸ”’
Arguments of a plain type conversion such as uint256(x) or address(x).
collect_internal_calls πŸ”’
common_path_predicates πŸ”’
const_value πŸ”’
Constant-folds expr over literals, constant variables, casts, ! and ==/!=; lock supplies the value of the lock variable.
constrain_boolean_outcome πŸ”’
Records in state that expr evaluated to outcome; returns false if that is impossible.
constrain_paths πŸ”’
Keeps the paths compatible with active, extended by the active predicates.
forget_path_predicates πŸ”’
Drops every path fact that mentions the (re)assigned local var_id.
guard_activation πŸ”’
The lock and value set by the last of stmts (directly or via an argument-less helper), if an earlier statement rejects that value.
guard_locks πŸ”’
Locks of the standard reentrancy guards among function’s modifiers.
guard_restoration πŸ”’
The lock and value restored by stmt (directly or via a single-statement helper).
is_entry_point πŸ”’
Non-view functions an external caller can invoke: public/external functions, fallback and receive.
is_uncapped_value_call πŸ”’
.call{value: v}(...) with a non-zero value and no gas cap other than gasleft().
is_view_or_pure πŸ”’
is_zero_value πŸ”’
join_branches πŸ”’
Replaces state with the union of the reachable branches, keeping only the path predicates all of them agree on. Returns whether any branch was reachable.
merge_maps πŸ”’
owned_by πŸ”’
The variables of func_id.
path_predicate πŸ”’
The boolean fact expr establishes when it evaluates to true: a local flag, its negation, or an ==/!= between locals and literals.
paths_compatible πŸ”’
predicate_operand πŸ”’
remap_return_paths πŸ”’
Rewrites the callee-local predicates in the returned values into the caller’s terms.
simple_internal_call πŸ”’
f(); naming exactly one function.
standard_reentrancy_guard_lock πŸ”’
The lock state variable of a standard reentrancy guard modifier: it rejects re-entry, sets the lock, runs _ exactly once and restores the lock right after.
state_lock_assignment πŸ”’
lock = <constant>; on a state variable.
static_internal_callee πŸ”’
Internal function statically named by callee: a bare identifier or super.f.
stmt_rejects_lock_value πŸ”’
True if stmt reverts whenever lock_var holds entered.

Type AliasesΒ§

ModifierContinuation πŸ”’
What to analyse when a modifier’s _ is reached: the remaining modifiers, the function body and the reentrancy-guard lock the current modifier holds.
PathAlternatives πŸ”’
PathPredicates πŸ”’