From 35565dda21c0c94dae649bf95b857fe8205f12f0 Mon Sep 17 00:00:00 2001 From: Ryan Collins Date: Wed, 24 Sep 2025 13:05:57 -0400 Subject: [PATCH] fix: match destinationSettler to counterpart --- contracts/src/7683/T1ERC7683.sol | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/contracts/src/7683/T1ERC7683.sol b/contracts/src/7683/T1ERC7683.sol index 88284ed3..66d78c12 100644 --- a/contracts/src/7683/T1ERC7683.sol +++ b/contracts/src/7683/T1ERC7683.sol @@ -27,6 +27,8 @@ import { IT1XChainReader } from "../libraries/xChain/IT1XChainReader.sol"; contract T1ERC7683 is IT1ERC7683, T1Permit2, AccessControlUpgradeable, EIP712 { using SafeERC20 for IERC20; + error InvalidDestinationSettler(bytes32 provided, bytes32 expected); + /// @notice Role for pausing/unpausing open operations bytes32 public constant OPEN_PAUSER_ROLE = keccak256("OPEN_PAUSER_ROLE"); /// @notice Role for pausing/unpausing settlement operations @@ -246,6 +248,12 @@ contract T1ERC7683 is IT1ERC7683, T1Permit2, AccessControlUpgradeable, EIP712 { if (orderData.originDomain != localDomain) revert InvalidOriginDomain(orderData.originDomain); + // Ensure destinationSettler matches counterpart + bytes32 expectedSettler = TypeCasts.addressToBytes32(counterpart); + if (orderData.destinationSettler != expectedSettler) { + revert InvalidDestinationSettler(orderData.destinationSettler, expectedSettler); + } + // enforce fillDeadline into orderData orderData.fillDeadline = _fillDeadline; // enforce sender into orderData