Skip to main content Module controlled_delegatecall Copy item path Source use super::ControlledDelegatecall ; ๐ use crate::linter::LateLintPass ; ๐ use crate::linter::LintContext ; ๐ use crate::sol::Severity ; ๐ use crate::sol::SolLint ; ๐ use crate::sol::analysis::arg_for_param ; ๐ use crate::sol::analysis::branch_always_exits ; ๐ use crate::sol::analysis::count_placeholders ; ๐ use crate::sol::analysis::do_while_user_stmts ; ๐ use crate::sol::analysis::has_side_effect ; ๐ use crate::sol::analysis::is_address_like_cast ; ๐ use crate::sol::analysis::is_loop_termination_if ; ๐ use crate::sol::analysis::is_require_or_assert ; ๐ use crate::sol::analysis::loop_update ; ๐ use crate::sol::analysis::stmts_before_placeholder ; ๐ use crate::sol::analysis::stmts_break_or_continue ; ๐ use crate::sol::analysis::tuple_elems ; ๐ use crate::sol::analysis::var_is_address_like ; ๐ use solar::ast::BinOpKind; ๐ use solar::ast::LitKind; ๐ use solar::ast::UnOpKind; ๐ use solar::interface::Span; ๐ use solar::interface::sym; ๐ use solar::sema::Gcx; ๐ use solar::sema::builtins::Builtin; ๐ use solar::sema::hir; ๐ use solar::sema::hir::ElementaryType; ๐ use solar::sema::hir::Expr; ๐ use solar::sema::hir::ExprKind; ๐ use solar::sema::hir::FunctionKind; ๐ use solar::sema::hir::ItemId; ๐ use solar::sema::hir::LoopSource; ๐ use solar::sema::hir::Res; ๐ use solar::sema::hir::Stmt; ๐ use solar::sema::hir::StmtKind; ๐ use solar::sema::hir::TypeKind; ๐ use solar::sema::hir::VariableId; ๐ use solar::sema::hir::Visit; ๐ use std::collections::HashSet ; ๐ use std::ops::ControlFlow ; ๐ Analyzer ๐ Flow-sensitive walk tracking which local address variables provably hold a trusted target. HELPER_DEPTH ๐ How many levels of no-argument helper functions are inlined when checking a target. CONTROLLED_DELEGATECALL intersect ๐ is_cast ๐ address(..), IFoo(..), uintN(..), intN(..) or bytes(..) cast head.modifier_safe_vars ๐ Caller variables proven trusted by the statements a modifier runs before _: a parameter that
is bound to the variable, never reassigned in the prefix, and safe when _ is reached. no_arg_helper_return ๐ The expression returned by a non-virtual, non-overriding, parameterless helper whose body is a
single return <expr>; or <ret> = <expr>; (optionally followed by a bare return;). underlying_var ๐ The variable a bare identifier refers to, looking through parens, payable(...) and
address-like casts or integer casts preserving all 160 address bits.