Skip to content
This repository has been archived by the owner on Jul 2, 2024. It is now read-only.

Commit

Permalink
Resolve L-06: Revoke spend allowance from previous router
Browse files Browse the repository at this point in the history
  • Loading branch information
kphed committed Jan 15, 2024
1 parent 7c8a9c6 commit c502d55
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
8 changes: 7 additions & 1 deletion src/BrrETH.sol
Original file line number Diff line number Diff line change
Expand Up @@ -286,10 +286,16 @@ contract BrrETH is Ownable, ERC4626 {
function setRouter(address _router) external onlyOwner {
if (_router == address(0)) revert InvalidRouter();

ICometRewards.RewardConfig memory rewardConfig = cometRewards
.rewardConfig(_COMET);

// Revoke the spend allowance from the soon-to-be changed router.
rewardConfig.token.safeApproveWithRetry(address(router), 0);

router = IRouter(_router);

// Enable the new router to swap reward tokens into more WETH.
approveTokens();
rewardConfig.token.safeApproveWithRetry(_router, type(uint256).max);

emit SetRouter(_router);
}
Expand Down
9 changes: 7 additions & 2 deletions test/BrrETH.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -657,8 +657,12 @@ contract BrrETHTest is Helper {
ERC20 rewardToken = ERC20(rewardConfig.token);
address router = address(0xbeef);

assertTrue(router != address(vault.router()));
assertTrue(router != _ROUTER);
assertEq(0, rewardToken.allowance(address(vault), router));
assertEq(
type(uint256).max,
rewardToken.allowance(address(vault), _ROUTER)
);

vm.expectEmit(true, true, true, true, address(vault));

Expand All @@ -671,10 +675,11 @@ contract BrrETHTest is Helper {
type(uint256).max,
rewardToken.allowance(address(vault), router)
);
assertEq(0, rewardToken.allowance(address(vault), _ROUTER));
}

function testSetRouterFuzz(address router) external {
vm.assume(router != address(0));
vm.assume(router != address(0) && router != _ROUTER);

ICometRewards.RewardConfig memory rewardConfig = _COMET_REWARDS
.rewardConfig(_COMET);
Expand Down

0 comments on commit c502d55

Please sign in to comment.