Platform: Code4rena
Start Date: 27/04/2023
Pot Size: $90,500 USDC
Total HM: 4
Participants: 43
Period: 7 days
Judge: GalloDaSballo
Id: 233
League: ETH
Rank: 22/43
Findings: 2
Award: $606.39
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: ABA
Also found by: 0xWaitress, 8olidity, ABA, MiloTruck, ToonVH, bughunter007, bytes032, juancito, rvierdiiev
534.7892 USDC - $534.79
completeQueuedWithdrawal can face a denial of service when a strategy is paused
Manual Review
add an indexToSkip like the function slashQueuedWithdrawal
Invalid Validation
#0 - c4-pre-sort
2023-05-09T13:39:14Z
0xSorryNotSorry marked the issue as duplicate of #132
#1 - c4-judge
2023-06-08T12:26:37Z
GalloDaSballo marked the issue as satisfactory
🌟 Selected for report: volodya
Also found by: 0xWaitress, 0xnev, ABA, Aymen0909, Cyfrin, QiuhaoLi, RaymondFam, btk, bughunter007, ihtishamsudo, juancito, libratus, niser93, sashik_eth
71.6048 USDC - $71.60
right now the input is not guaranteed to be the same length, it's better to make them in a struct so length checks are not needed
function completeQueuedWithdrawals( QueuedWithdrawal[] calldata queuedWithdrawals, IERC20[][] calldata tokens, uint256[] calldata middlewareTimesIndexes, bool[] calldata receiveAsTokens ) external
Recommendation
struct Input { QueuedWithdrawal a; IERC20[] b; uint256 c; bool d; } function completeQueuedWithdrawals(Input[] calldata intputs) { }
-------- \n
-------- \n
StrategyBase.sol
function deposit(IERC20 token, uint256 amount) external virtual override onlyWhenNotPaused(PAUSED_DEPOSITS) onlyStrategyManager returns (uint256 newShares) { require(token == underlyingToken, "StrategyBase.deposit: Can only deposit underlyingToken");
function withdraw(address depositor, IERC20 token, uint256 amountShares) external virtual override onlyWhenNotPaused(PAUSED_WITHDRAWALS) onlyStrategyManager { require(token == underlyingToken, "StrategyBase.withdraw: Can only withdraw the strategy token");
-------- \n
DelayedWithdrawalRouter.sol
However there are 2 doc/comments that still use "immediately withdrawable", which is mis-leading.
https://github.com/code-423n4/2023-04-eigenlayer/blob/main/src/contracts/pods/EigenPod.sol#L374
https://github.com/code-423n4/2023-04-eigenlayer/blob/main/src/contracts/pods/EigenPod.sol#L389
#0 - GalloDaSballo
2023-06-02T09:18:51Z
DelayedWithdrawalRouter.sol
NC3R 1NC
#1 - c4-judge
2023-06-02T09:38:48Z
GalloDaSballo marked the issue as grade-b