Summary
Missing zero checks in the constructor before assignment can cause the LoveToken contract interact with a null address
Vulnerability Details
Proof of Code:
constructor(
ISoulmate _soulmateContract,
address _airdropVault,
address _stakingVault
) ERC20("LoveToken", "<3", 18) {
soulmateContract = _soulmateContract;
airdropVault = _airdropVault;
stakingVault = _stakingVault;
}
Impact
Unexpected behaviour in contract code
Tools Used
Foundry
Manual Code Review
Recommendations
constructor(
ISoulmate _soulmateContract,
address _airdropVault,
address _stakingVault
) ERC20("LoveToken", "<3", 18) {
+ require(_airdropVault != address(0) || _stakingVault != address(0));
soulmateContract = _soulmateContract;
airdropVault = _airdropVault;
stakingVault = _stakingVault;
}