Vault :: InitVault() is used approve its corresponding management contract to handle tokens. vaultInitialize protect against multiple initialization.
The InitVault()
function is not properly follows checks effects pattern . This allows an attacker to call InitVault()
multiple times.
function initVault(ILoveToken loveToken, address managerContract) public {
if (vaultInitialize) revert Vault__AlreadyInitialized();
@audit-issue : Lack of CEI.
loveToken.initVault(managerContract);
vaultInitialize = true;
}
The impact is that vault can be initialized multiple times.
Manual check
Try to write this function like this.
function initVault(ILoveToken loveToken, address managerContract) public {
if (vaultInitialize) revert Vault__AlreadyInitialized();
vaultInitialize = true;
loveToken.initVault(managerContract);
}
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.