chore: Misc improvements:

- Don't use payable(receiver).transfer(amount) and use OpenZeppelin's Address.sendValue instead
- In Univ4Executor send funds to the poolManager and not msg.sender
- In OneTransferFromOnly:
  - rename method name
  - don't pass the sender but hardcode it to caller() (msg.sender)
  - Move marking the transfer as done up (before we actually transfer) to prevent reentrancy attacks

Took 18 minutes
This commit is contained in:
Diana Carvalho
2025-05-16 10:49:49 +01:00
parent 99d5df4f77
commit fcd85c047f
6 changed files with 23 additions and 29 deletions

View File

@@ -140,7 +140,7 @@ contract TychoRouter is
bytes calldata swaps
) public payable whenNotPaused nonReentrant returns (uint256 amountOut) {
uint256 initialBalanceTokenOut = _balanceOf(tokenOut, receiver);
tstoreTransferFromInfo(tokenIn, amountIn, false, msg.sender);
_tstoreTransferFromInfo(tokenIn, amountIn, false);
if (transferFromNeeded) {
_transfer(address(this));
}
@@ -205,7 +205,7 @@ contract TychoRouter is
if (tokenIn != address(0)) {
permit2.permit(msg.sender, permitSingle, signature);
}
tstoreTransferFromInfo(tokenIn, amountIn, true, msg.sender);
_tstoreTransferFromInfo(tokenIn, amountIn, true);
if (transferFromNeeded) {
_transfer(address(this));
}
@@ -262,7 +262,7 @@ contract TychoRouter is
bytes calldata swaps
) public payable whenNotPaused nonReentrant returns (uint256 amountOut) {
uint256 initialBalanceTokenOut = _balanceOf(tokenOut, receiver);
tstoreTransferFromInfo(tokenIn, amountIn, false, msg.sender);
_tstoreTransferFromInfo(tokenIn, amountIn, false);
if (transferFromNeeded) {
_transfer(tokenInReceiver);
}
@@ -325,7 +325,7 @@ contract TychoRouter is
permit2.permit(msg.sender, permitSingle, signature);
}
tstoreTransferFromInfo(tokenIn, amountIn, true, msg.sender);
_tstoreTransferFromInfo(tokenIn, amountIn, true);
if (transferFromNeeded) {
_transfer(tokenInReceiver);
}
@@ -377,7 +377,7 @@ contract TychoRouter is
bytes calldata swapData
) public payable whenNotPaused nonReentrant returns (uint256 amountOut) {
uint256 initialBalanceTokenOut = _balanceOf(tokenOut, receiver);
tstoreTransferFromInfo(tokenIn, amountIn, false, msg.sender);
_tstoreTransferFromInfo(tokenIn, amountIn, false);
if (transferFromNeeded) {
_transfer(tokenInReceiver);
}
@@ -439,7 +439,7 @@ contract TychoRouter is
if (tokenIn != address(0)) {
permit2.permit(msg.sender, permitSingle, signature);
}
tstoreTransferFromInfo(tokenIn, amountIn, true, msg.sender);
_tstoreTransferFromInfo(tokenIn, amountIn, true);
if (transferFromNeeded) {
_transfer(tokenInReceiver);
}