forge_lint/sol/high/
mod.rs1use crate::sol::{EarlyLintPass, LateLintPass, 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 reentrancy;
12mod rtlo;
13mod unchecked_calls;
14mod unprotected_initializer;
15
16use arbitrary_send_erc20::{ARBITRARY_SEND_ERC20, ARBITRARY_SEND_ERC20_PERMIT};
17use arbitrary_send_eth::ARBITRARY_SEND_ETH;
18use controlled_delegatecall::CONTROLLED_DELEGATECALL;
19use encode_packed_collision::ENCODE_PACKED_COLLISION;
20use enumerable_loop_removal::ENUMERABLE_LOOP_REMOVAL;
21use function_selector_collision::FUNCTION_SELECTOR_COLLISION;
22use incorrect_exp::INCORRECT_EXP;
23use incorrect_shift::INCORRECT_SHIFT;
24use reentrancy::{REENTRANCY_ETH, REENTRANCY_NO_ETH};
25use rtlo::RTLO;
26use unchecked_calls::{ERC20_UNCHECKED_TRANSFER, UNCHECKED_CALL};
27use unprotected_initializer::UNPROTECTED_INITIALIZER;
28
29register_lints!(
30 (ArbitrarySendErc20, late, (ARBITRARY_SEND_ERC20, ARBITRARY_SEND_ERC20_PERMIT)),
31 (ArbitrarySendEth, late, (ARBITRARY_SEND_ETH)),
32 (ControlledDelegatecall, late, (CONTROLLED_DELEGATECALL)),
33 (EncodedPackedCollision, late, (ENCODE_PACKED_COLLISION)),
34 (EnumerableLoopRemoval, late, (ENUMERABLE_LOOP_REMOVAL)),
35 (FunctionSelectorCollision, late, (FUNCTION_SELECTOR_COLLISION)),
36 (IncorrectExp, late, (INCORRECT_EXP)),
37 (IncorrectShift, early, (INCORRECT_SHIFT)),
38 (ReentrancyEth, late, (REENTRANCY_ETH, REENTRANCY_NO_ETH)),
39 (UncheckedCall, early, (UNCHECKED_CALL)),
40 (UncheckedTransferERC20, late, (ERC20_UNCHECKED_TRANSFER)),
41 (UnprotectedInitializer, late, (UNPROTECTED_INITIALIZER)),
42 (Rtlo, early, (RTLO))
43);