OrderBook

First Flight #43
Beginner FriendlySolidity
100 EXP
View results
Submission Details
Impact: low
Likelihood: low
Invalid

### [L-4] Missing Balance Check in ```OrderBook::emergencyWithdrawERC20```

[L-4] Missing Balance Check in OrderBook::emergencyWithdrawERC20

Description

The emergencyWithdrawERC20 function allows the contract owner to withdraw any non-core ERC20 token from the contract. However, it does not validate that the contract has a sufficient balance before attempting the transfer. This violates defensive programming practices.

Impact:

1.Poor developer experience during debugging.

2.Wasted gas on failed transactions.

3.Potentially confusing behavior during emergency recovery situations.

Proof of Concept

1.Owner tries to withdraw more amount then contract balance.
​
2.Transaction reverts with inefficient balance.
​
3.Gas wastages,poor experience.
​

Recommended Mitigation

​
function emergencyWithdrawERC20(
address _tokenAddress,
uint256 _amount,
address _to
) external onlyOwner {
if (
_tokenAddress == address(iWETH) ||
_tokenAddress == address(iWBTC) ||
_tokenAddress == address(iWSOL) ||
_tokenAddress == address(iUSDC)
) {
revert(
"Cannot withdraw core order book tokens via emergency function"
);
}
if (_to == address(0)) {
revert InvalidAddress();
}
​
IERC20 token = IERC20(_tokenAddress);
+ uint balance=token.balanceOf(address(this));
​
+ if(_amount>balance){
+ revert insufficientbalance();
+ }
​
token.safeTransfer(_to, _amount);
​
emit EmergencyWithdrawal(_tokenAddress, _amount, _to);
}
​
Updates

Lead Judging Commences

yeahchibyke Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!