The MAIN()
macro in the HorseStore.huff
, which serves as the entry point for various functions, is by default payable. However, as there is no functionality to withdraw Ether from the contract, the contract should not accept Ether.
The vulnerability lies in the original implementation of the MAIN()
macro, which allowed the contract to receive Ether despite not having any functionality to handle or withdraw it. This could potentially result in unintended Ether accumulation within the contract.
There is no withdrawal mechanism for Ether in the contract. So ETH can get stuck in contract forever.
Manual review.
It is recommended to explicitly handle Ether transactions in a manner appropriate for the contract's intended functionality. Since there is no Ether withdrawal mechanism, making the MAIN()
macro non-payable will be a better choice.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.