forge_lint/sol/high/
mod.rs1use crate::sol::SolLint;
2
3mod arbitrary_send_erc20;
4mod arbitrary_send_eth;
5mod controlled_delegatecall;
6mod encode_packed_collision;
7mod enumerable_loop_removal;
8mod function_selector_collision;
9mod incorrect_exp;
10mod incorrect_shift;
11mod protected_vars;
12mod reentrancy;
13mod rtlo;
14mod unchecked_calls;
15mod unprotected_initializer;
16
17use arbitrary_send_erc20::{ARBITRARY_SEND_ERC20, ARBITRARY_SEND_ERC20_PERMIT};
18use arbitrary_send_eth::ARBITRARY_SEND_ETH;
19use controlled_delegatecall::CONTROLLED_DELEGATECALL;
20use encode_packed_collision::ENCODE_PACKED_COLLISION;
21use enumerable_loop_removal::ENUMERABLE_LOOP_REMOVAL;
22use function_selector_collision::FUNCTION_SELECTOR_COLLISION;
23use incorrect_exp::INCORRECT_EXP;
24use incorrect_shift::INCORRECT_SHIFT;
25use protected_vars::PROTECTED_VARS;
26use reentrancy::{REENTRANCY_BALANCE, REENTRANCY_ETH, REENTRANCY_NO_ETH};
27use rtlo::RTLO;
28use unchecked_calls::{ERC20_UNCHECKED_TRANSFER, UNCHECKED_CALL};
29use unprotected_initializer::UNPROTECTED_INITIALIZER;
30
31register_lints!(
32 (ArbitrarySendErc20, late, (ARBITRARY_SEND_ERC20, ARBITRARY_SEND_ERC20_PERMIT)),
33 (ArbitrarySendEth, late, (ARBITRARY_SEND_ETH)),
34 (ControlledDelegatecall, late, (CONTROLLED_DELEGATECALL)),
35 (EncodedPackedCollision, late, (ENCODE_PACKED_COLLISION)),
36 (EnumerableLoopRemoval, late, (ENUMERABLE_LOOP_REMOVAL)),
37 (FunctionSelectorCollision, late, (FUNCTION_SELECTOR_COLLISION)),
38 (IncorrectExp, late, (INCORRECT_EXP)),
39 (IncorrectShift, early, (INCORRECT_SHIFT)),
40 (ProtectedVars, late, (PROTECTED_VARS)),
41 (ReentrancyEth, late, (REENTRANCY_BALANCE, REENTRANCY_ETH, REENTRANCY_NO_ETH)),
42 (UncheckedCall, early, (UNCHECKED_CALL)),
43 (UncheckedTransferERC20, late, (ERC20_UNCHECKED_TRANSFER)),
44 (UnprotectedInitializer, late, (UNPROTECTED_INITIALIZER)),
45 (Rtlo, early, (RTLO))
46);