Omniscia Ultra Yield Audit
BaseControlledAsyncRedeem Static Analysis Findings
BaseControlledAsyncRedeem Static Analysis Findings
BCA-01S: Inexistent Sanitization of Input Address
| Type | Severity | Location |
|---|---|---|
| Input Sanitization | ![]() | BaseControlledAsyncRedeem.sol:L83-L101 |
Description:
The linked function accepts an address argument yet does not properly sanitize it.
Impact:
The presence of zero-value addresses, especially in constructor implementations, can cause the contract to be permanently inoperable. These checks are advised as zero-value inputs are a common side-effect of off-chain software related bugs.
Example:
src/vaults/BaseControlledAsyncRedeem.sol
83function initialize(84 BaseControlledAsyncRedeemInitParams memory params85) public virtual onlyInitializing {86 require(params.asset != address(0), ZeroAssetAddress());87
88 // Init OZ contracts89 __AccessControl_init();90 __AccessControlDefaultAdminRules_init(0, params.owner);91 __Pausable_init();92 __ERC20_init(params.name, params.symbol);93 __ERC4626_init(IERC20(params.asset));94
95 // Init self96 _getBaseAsyncRedeemStorage().rateProvider = IUltraVaultRateProvider(params.rateProvider);97
98 // Grant roles to owner99 _grantRole(OPERATOR_ROLE, params.owner);100 _grantRole(PAUSER_ROLE, params.owner);101}Recommendation:
We advise some basic sanitization to be put in place by ensuring that the address specified is non-zero.
Alleviation (28f27853965de07fb79f4f2b5fed696d35120032):
The input params.rateProvider address argument of the BaseControlledAsyncRedeem::initialize function is adequately sanitized as non-zero in the latest in-scope revision of the codebase, addressing this exhibit.
