Normally, participationFeeAddress should always be a valid, nonzero address that securely receives participation fees deducted from user deposits.
However, the contract never validates this address during construction or when fees are transferred in deposit(). If the deployer mistakenly passes a zero address or an incorrect destination, the fee transfer will either revert (for zero address) or send tokens to an unintended wallet, resulting in lost funds.
Likelihood:
Occurs whenever the deployer mistakenly provides a zero or invalid _participationFeeAddress.
Also possible if the project later upgrades or integrates external fee logic without proper verification of the existing address.
Impact:
Impact 1: If set to the zero address, fee transfers in deposit() will revert, blocking all deposits.
Impact 2: If set to an incorrect or compromised address, participation fees could be permanently lost or misappropriated.
Observed Effect:
Deposits revert or send tokens to unintended addresses, depending on the constructor parameter.
**Explanation: **This check ensures participationFeeAddress is a valid address during deployment, preventing funds from being misdirected or lost due to configuration errors.
This is owner action and the owner is assumed to be trusted and to provide correct input arguments.
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.