The BaseAccount.sol
contract includes a function entryPoint()
which is intended to be overridden according to the documentation comments. However, the function is not marked as virtual
, preventing it from being overridden in derived contracts.
The entryPoint
function in BaseAccount.sol
is meant to return the address of the EntryPoint contract. The comments indicate that this function can be overridden to return a different address if needed. However, the function is not marked as virtual
, which is necessary for a function to be overridden in derived contracts.
Limitation on Customization: Derived contracts cannot override the entryPoint
function to return a different EntryPoint address, limiting flexibility.
Inconsistent Documentation: The comments suggest that the function can be overridden, which may mislead developers.
Mark the entryPoint
function as virtual
to allow it to be overridden in derived contracts.
This change will allow derived contracts to override the entryPoint
function, aligning with the comments and providing greater flexibility.
Valid low, since `_ENTRYPOINT` is defined by deployer within the `Nexus.sol` [contract](https://github.com/Cyfrin/2024-07-biconomy/blob/9590f25cd63f7ad2c54feb618036984774f3879d/contracts/Nexus.sol#L76), so even if unchanged the account could still be used. The only current supported entry point contract would be [here](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/core/EntryPoint.sol#L605). Additionally `Nexus.sol` is an upgradeable contract, so entrypoint can be changed, so one can argue the severity of this issue could be downgraded lower.
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.