Christmas Dinner

First Flight #31
Beginner FriendlyFoundrySolidity
100 EXP
View results
Submission Details
Severity: high
Valid

withdraw() function fails to handle ETH withdrawals

Summary

The contract contains issues with withdrawal mechanisms, allowing incomplete asset handling during withdrawals.

Vulnerability Details

  1. Incomplete Asset Withdrawal

  • withdraw() function fails to handle ETH withdrawals

  • Host can't withdraw all assets from contract

Impact

  1. Withdrawal Impact:

  • ETH can get stuck in contract

  • Host needs separate mechanism to recover ETH

  • Partial asset recovery only

Tools Used

Manual Review

Recommendations

function withdraw() external onlyHost {
address _host = getHost();
// Handle ERC20 tokens
i_WETH.safeTransfer(_host, i_WETH.balanceOf(address(this)));
i_WBTC.safeTransfer(_host, i_WBTC.balanceOf(address(this)));
i_USDC.safeTransfer(_host, i_USDC.balanceOf(address(this)));
// Handle ETH balance
uint256 ethBalance = address(this).balance;
if(ethBalance > 0) {
(bool success, ) = _host.call{value: ethBalance}("");
require(success, "ETH transfer failed");
}
}
Updates

Lead Judging Commences

0xtimefliez Lead Judge 10 months ago
Submission Judgement Published
Validated
Assigned finding tags:

withdraw function lacks functionality to send ether

0xtimefliez Lead Judge 10 months ago
Submission Judgement Published
Validated
Assigned finding tags:

withdraw function lacks functionality to send ether

Support

FAQs

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