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.