fix: (TychoRouter) Revert if empty swaps

- This is for security purposes. Max uncovered a vulnerability where funds could be stolen if we don't ether the while loop (i.e. if we have empty swaps).
This commit is contained in:
TAMARA LIPOWSKI
2025-02-10 23:49:01 -05:00
parent 12b6ba0743
commit 37efe52c10
2 changed files with 12 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ import {LibSwap} from "../lib/LibSwap.sol";
error TychoRouter__WithdrawalFailed();
error TychoRouter__AddressZero();
error TychoRouter__EmptySwaps();
error TychoRouter__NegativeSlippage(uint256 amount, uint256 minAmount);
error TychoRouter__AmountInNotFullySpent(uint256 leftoverAmount);
error TychoRouter__MessageValueMismatch(uint256 value, uint256 amount);
@@ -191,6 +192,10 @@ contract TychoRouter is
internal
returns (uint256)
{
if (swaps_.length == 0) {
revert TychoRouter__EmptySwaps();
}
uint256 currentAmountIn;
uint256 currentAmountOut;
uint8 tokenInIndex = 0;

View File

@@ -672,6 +672,13 @@ contract TychoRouterTest is TychoRouterTestSetup {
assertGe(finalBalance, expAmountOut);
}
function testEmptySwapsRevert() public {
uint256 amountIn = 10 ** 18;
bytes memory swaps = "";
vm.expectRevert(TychoRouter__EmptySwaps.selector);
tychoRouter.exposedSwap(amountIn, 2, swaps);
}
function testSingleSwapIntegration() public {
// Test created with calldata from our router encoder, replacing the executor
// address with the USV2 executor address.