Boost _ Lido_ Mellow Vault 34756 - [Smart Contract - Insight] Missing calldata forwarding in Vaultde
Last updated
Was this helpful?
Was this helpful?
function test_deposit_custom_validator_gets_no_calldata() external {
Vault vault = new Vault("Mellow LRT Vault", "mLRT", admin);
vm.startPrank(admin);
vault.grantRole(vault.ADMIN_DELEGATE_ROLE(), admin);
vault.grantRole(vault.OPERATOR(), operator);
ManagedValidator validator = new ManagedValidator(admin);
VaultConfigurator configurator = VaultConfigurator(
address(vault.configurator())
);
configurator.stageValidator(address(validator));
configurator.commitValidator();
validator.setCustomValidator(address(vault), address(new NoZeroAddressDepositValidator()));
_setUp(vault);
vm.stopPrank();
_initialDeposit(vault);
}
contract NoZeroAddressDepositValidator is IValidator {
function validate(address from, address to, bytes calldata data) external view {
console.log("calldata (size=%s):", data.length);
console.logBytes(data);
(address beneficiary,,,,) = abi.decode(data[4:], (address, uint256[], uint256, uint256, uint256));
require(beneficiary != address(0), "deposit beneficiary cannot be address(0)");
}
}$ forge test -vvv --fork-url $RPC_URL --fork-block-number 19845261 --match-test test_deposit_custom_validator_gets_no_calldata