Skip to main content

forge_lint/sol/high/
mod.rs

1use 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);