diff --git a/audit/auditLog.json b/audit/auditLog.json index 2405449a3..27131b81a 100644 --- a/audit/auditLog.json +++ b/audit/auditLog.json @@ -160,6 +160,13 @@ "auditorGitHandle": "sujithsomraaj", "auditReportPath": "./audit/reports/2025.01.17_LiFiDexAggregator(v1.4.0).pdf", "auditCommitHash": "n/a (one deployed contract instance was audited)" + }, + "audit20250220": { + "auditCompletedOn": "20.02.2025", + "auditedBy": "Sujith Somraaj (individual security researcher)", + "auditorGitHandle": "sujithsomraaj", + "auditReportPath": "./audit/reports/2025.02.20_CalldataVerificationFacet(v1.3.0).pdf", + "auditCommitHash": "48427d21160585f276d206f0e103ce6bd42c4c03" } }, "auditedContracts": { @@ -172,7 +179,8 @@ "1.2.0": ["audit20241206"] }, "CalldataVerificationFacet": { - "1.2.0": ["audit20240902"] + "1.2.0": ["audit20240902"], + "1.3.0": ["audit20250220"] }, "DeBridgeDlnFacet": { "1.0.0": ["audit20241205"] diff --git a/audit/reports/2025.02.20_CalldataVerificationFacet(v1.3.0).pdf b/audit/reports/2025.02.20_CalldataVerificationFacet(v1.3.0).pdf new file mode 100644 index 000000000..e6cf688a1 Binary files /dev/null and b/audit/reports/2025.02.20_CalldataVerificationFacet(v1.3.0).pdf differ diff --git a/src/Facets/CalldataVerificationFacet.sol b/src/Facets/CalldataVerificationFacet.sol index b664ed231..f54c1bd79 100644 --- a/src/Facets/CalldataVerificationFacet.sol +++ b/src/Facets/CalldataVerificationFacet.sol @@ -3,13 +3,9 @@ pragma solidity ^0.8.17; import { ILiFi } from "../Interfaces/ILiFi.sol"; import { LibSwap } from "../Libraries/LibSwap.sol"; -import { AmarokFacet } from "./AmarokFacet.sol"; import { AcrossFacetV3 } from "./AcrossFacetV3.sol"; import { StargateFacetV2 } from "./StargateFacetV2.sol"; -import { StargateFacet } from "./StargateFacet.sol"; -import { AcrossFacetV3 } from "./AcrossFacetV3.sol"; import { CelerIMFacetBase, CelerIM } from "lifi/Helpers/CelerIMFacetBase.sol"; -import { StandardizedCallFacet } from "lifi/Facets/StandardizedCallFacet.sol"; import { LibBytes } from "../Libraries/LibBytes.sol"; import { GenericSwapFacetV3 } from "lifi/Facets/GenericSwapFacetV3.sol"; import { InvalidCallData } from "../Errors/GenericErrors.sol"; @@ -17,7 +13,7 @@ import { InvalidCallData } from "../Errors/GenericErrors.sol"; /// @title CalldataVerificationFacet /// @author LI.FI (https://li.fi) /// @notice Provides functionality for verifying calldata -/// @custom:version 1.2.0 +/// @custom:version 1.3.0 contract CalldataVerificationFacet { using LibBytes for bytes; @@ -111,16 +107,7 @@ contract CalldataVerificationFacet { function extractNonEVMAddress( bytes calldata data ) external pure returns (bytes32 nonEVMAddress) { - bytes memory callData; - - if ( - bytes4(data[:4]) == StandardizedCallFacet.standardizedCall.selector - ) { - // standardizedCall - callData = abi.decode(data[4:], (bytes)); - } else { - callData = data; - } + bytes memory callData = data; // Non-EVM address is always the first parameter of bridge specific data if (_extractBridgeData(data).hasSourceSwaps) { @@ -169,22 +156,8 @@ contract CalldataVerificationFacet { } LibSwap.SwapData[] memory swapData; - bytes memory callData; bytes4 functionSelector = bytes4(data[:4]); - // check if this is a call via StandardizedCallFacet - if ( - functionSelector == StandardizedCallFacet.standardizedCall.selector - ) { - // extract nested function selector and calldata - // will always start at position 68 - functionSelector = bytes4(data[68:72]); - callData = data[68:]; - // callData = abi.decode(data[4:], (bytes)); // this one is also valid, even though the calldata differs slightly (add. padding) - } else { - callData = data; - } - if ( functionSelector == GenericSwapFacetV3.swapTokensSingleV3ERC20ToERC20.selector || @@ -198,13 +171,13 @@ contract CalldataVerificationFacet { // extract parameters from calldata (, , , receiver, receivingAmount, swapData[0]) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], (bytes32, string, string, address, uint256, LibSwap.SwapData) ); } else { // multi swap or GenericSwap V1 call (, , , receiver, receivingAmount, swapData) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], (bytes32, string, string, address, uint256, LibSwap.SwapData[]) ); } @@ -273,68 +246,7 @@ contract CalldataVerificationFacet { bytes calldata callTo, bytes calldata dstCalldata ) external pure returns (bool isValid) { - bytes memory callData = data; - - // Handle standardizedCall - if ( - bytes4(data[:4]) == StandardizedCallFacet.standardizedCall.selector - ) { - callData = abi.decode(data[4:], (bytes)); - } - - bytes4 selector = abi.decode(callData, (bytes4)); - - // --------------------------------------- - // Case: Amarok - if (selector == AmarokFacet.startBridgeTokensViaAmarok.selector) { - (, AmarokFacet.AmarokData memory amarokData) = abi.decode( - callData.slice(4, callData.length - 4), - (ILiFi.BridgeData, AmarokFacet.AmarokData) - ); - - return - keccak256(dstCalldata) == keccak256(amarokData.callData) && - abi.decode(callTo, (address)) == amarokData.callTo; - } - if ( - selector == AmarokFacet.swapAndStartBridgeTokensViaAmarok.selector - ) { - (, , AmarokFacet.AmarokData memory amarokData) = abi.decode( - callData.slice(4, callData.length - 4), - (ILiFi.BridgeData, LibSwap.SwapData[], AmarokFacet.AmarokData) - ); - return - keccak256(dstCalldata) == keccak256(amarokData.callData) && - abi.decode(callTo, (address)) == amarokData.callTo; - } - - // --------------------------------------- - // Case: Stargate - if (selector == StargateFacet.startBridgeTokensViaStargate.selector) { - (, StargateFacet.StargateData memory stargateData) = abi.decode( - callData.slice(4, callData.length - 4), - (ILiFi.BridgeData, StargateFacet.StargateData) - ); - return - keccak256(dstCalldata) == keccak256(stargateData.callData) && - keccak256(callTo) == keccak256(stargateData.callTo); - } - if ( - selector == - StargateFacet.swapAndStartBridgeTokensViaStargate.selector - ) { - (, , StargateFacet.StargateData memory stargateData) = abi.decode( - callData.slice(4, callData.length - 4), - ( - ILiFi.BridgeData, - LibSwap.SwapData[], - StargateFacet.StargateData - ) - ); - return - keccak256(dstCalldata) == keccak256(stargateData.callData) && - keccak256(callTo) == keccak256(stargateData.callTo); - } + bytes4 selector = bytes4(data[:4]); // --------------------------------------- // Case: StargateV2 @@ -344,7 +256,7 @@ contract CalldataVerificationFacet { ) { (, StargateFacetV2.StargateData memory stargateDataV2) = abi .decode( - callData.slice(4, callData.length - 4), + data[4:], (ILiFi.BridgeData, StargateFacetV2.StargateData) ); @@ -362,7 +274,7 @@ contract CalldataVerificationFacet { ) { (, , StargateFacetV2.StargateData memory stargateDataV2) = abi .decode( - callData.slice(4, callData.length - 4), + data[4:], ( ILiFi.BridgeData, LibSwap.SwapData[], @@ -385,7 +297,7 @@ contract CalldataVerificationFacet { selector == CelerIMFacetBase.startBridgeTokensViaCelerIM.selector ) { (, CelerIM.CelerIMData memory celerIMData) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], (ILiFi.BridgeData, CelerIM.CelerIMData) ); return @@ -397,7 +309,7 @@ contract CalldataVerificationFacet { CelerIMFacetBase.swapAndStartBridgeTokensViaCelerIM.selector ) { (, , CelerIM.CelerIMData memory celerIMData) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], (ILiFi.BridgeData, LibSwap.SwapData[], CelerIM.CelerIMData) ); return @@ -407,7 +319,7 @@ contract CalldataVerificationFacet { // Case: AcrossV3 if (selector == AcrossFacetV3.startBridgeTokensViaAcrossV3.selector) { (, AcrossFacetV3.AcrossV3Data memory acrossV3Data) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], (ILiFi.BridgeData, AcrossFacetV3.AcrossV3Data) ); @@ -421,7 +333,7 @@ contract CalldataVerificationFacet { AcrossFacetV3.swapAndStartBridgeTokensViaAcrossV3.selector ) { (, , AcrossFacetV3.AcrossV3Data memory acrossV3Data) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], ( ILiFi.BridgeData, LibSwap.SwapData[], @@ -438,7 +350,7 @@ contract CalldataVerificationFacet { // Case: AcrossV3 if (selector == AcrossFacetV3.startBridgeTokensViaAcrossV3.selector) { (, AcrossFacetV3.AcrossV3Data memory acrossV3Data) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], (ILiFi.BridgeData, AcrossFacetV3.AcrossV3Data) ); @@ -452,7 +364,7 @@ contract CalldataVerificationFacet { AcrossFacetV3.swapAndStartBridgeTokensViaAcrossV3.selector ) { (, , AcrossFacetV3.AcrossV3Data memory acrossV3Data) = abi.decode( - callData.slice(4, callData.length - 4), + data[4:], ( ILiFi.BridgeData, LibSwap.SwapData[], @@ -477,18 +389,6 @@ contract CalldataVerificationFacet { function _extractBridgeData( bytes calldata data ) internal pure returns (ILiFi.BridgeData memory bridgeData) { - if ( - bytes4(data[:4]) == StandardizedCallFacet.standardizedCall.selector - ) { - // StandardizedCall - bytes memory unwrappedData = abi.decode(data[4:], (bytes)); - bridgeData = abi.decode( - unwrappedData.slice(4, unwrappedData.length - 4), - (ILiFi.BridgeData) - ); - return bridgeData; - } - // normal call bridgeData = abi.decode(data[4:], (ILiFi.BridgeData)); } @@ -498,18 +398,6 @@ contract CalldataVerificationFacet { function _extractSwapData( bytes calldata data ) internal pure returns (LibSwap.SwapData[] memory swapData) { - if ( - bytes4(data[:4]) == StandardizedCallFacet.standardizedCall.selector - ) { - // standardizedCall - bytes memory unwrappedData = abi.decode(data[4:], (bytes)); - (, swapData) = abi.decode( - unwrappedData.slice(4, unwrappedData.length - 4), - (ILiFi.BridgeData, LibSwap.SwapData[]) - ); - return swapData; - } - // normal call (, swapData) = abi.decode( data[4:], (ILiFi.BridgeData, LibSwap.SwapData[]) diff --git a/test/solidity/Facets/CalldataVerificationFacet.t.sol b/test/solidity/Facets/CalldataVerificationFacet.t.sol index 1637190ac..717e9ce46 100644 --- a/test/solidity/Facets/CalldataVerificationFacet.t.sol +++ b/test/solidity/Facets/CalldataVerificationFacet.t.sol @@ -2,13 +2,10 @@ pragma solidity ^0.8.17; import { CalldataVerificationFacet } from "lifi/Facets/CalldataVerificationFacet.sol"; -import { AmarokFacet } from "lifi/Facets/AmarokFacet.sol"; import { MayanFacet } from "lifi/Facets/MayanFacet.sol"; import { AcrossFacetV3 } from "lifi/Facets/AcrossFacetV3.sol"; -import { StargateFacet } from "lifi/Facets/StargateFacet.sol"; import { StargateFacetV2 } from "lifi/Facets/StargateFacetV2.sol"; import { IStargate } from "lifi/Interfaces/IStargate.sol"; -import { StandardizedCallFacet } from "lifi/Facets/StandardizedCallFacet.sol"; import { CelerIM, CelerIMFacetBase } from "lifi/Helpers/CelerIMFacetBase.sol"; import { GenericSwapFacet } from "lifi/Facets/GenericSwapFacet.sol"; import { GenericSwapFacetV3 } from "lifi/Facets/GenericSwapFacetV3.sol"; @@ -75,22 +72,11 @@ contract CalldataVerificationFacetTest is TestBase { swapData ); - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - bytes memory fullCalldata = bytes.concat(callData, "extra stuff"); calldataVerificationFacet.extractBridgeData(fullCalldata); calldataVerificationFacet.extractSwapData(fullCalldata); calldataVerificationFacet.extractData(fullCalldata); calldataVerificationFacet.extractMainParameters(fullCalldata); - - fullCalldata = bytes.concat(standardizedCallData, "extra stuff"); - calldataVerificationFacet.extractBridgeData(fullCalldata); - calldataVerificationFacet.extractSwapData(fullCalldata); - calldataVerificationFacet.extractData(fullCalldata); - calldataVerificationFacet.extractMainParameters(fullCalldata); } function test_CanExtractBridgeData() public { @@ -116,18 +102,6 @@ contract CalldataVerificationFacetTest is TestBase { .extractSwapData(callData); checkSwapData(returnedData); - - // standardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - returnedData = calldataVerificationFacet.extractSwapData( - standardizedCallData - ); - - checkSwapData(returnedData); } function test_CanExtractBridgeAndSwapData() public { @@ -145,17 +119,6 @@ contract CalldataVerificationFacetTest is TestBase { checkBridgeData(returnedBridgeData); checkSwapData(returnedSwapData); - - // standardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - (returnedBridgeData, returnedSwapData) = calldataVerificationFacet - .extractData(standardizedCallData); - - checkBridgeData(returnedBridgeData); - checkSwapData(returnedSwapData); } function test_CanExtractBridgeAndSwapDataNoSwaps() public { @@ -171,17 +134,6 @@ contract CalldataVerificationFacetTest is TestBase { checkBridgeData(returnedBridgeData); assertEq(returnedSwapData.length, 0); - - // standardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - (returnedBridgeData, returnedSwapData) = calldataVerificationFacet - .extractData(standardizedCallData); - - checkBridgeData(returnedBridgeData); - assertEq(returnedSwapData.length, 0); } function test_CanExtractNonEVMAddress() public { @@ -202,17 +154,6 @@ contract CalldataVerificationFacetTest is TestBase { .extractNonEVMAddress(callData); assertEq(returnedNonEVMAddress, bytes32("Just some address")); - - // standardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - returnedNonEVMAddress = calldataVerificationFacet.extractNonEVMAddress( - standardizedCallData - ); - - assertEq(returnedNonEVMAddress, bytes32("Just some address")); } function test_CanExtractNonEVMAddressWithSwaps() public { @@ -236,17 +177,6 @@ contract CalldataVerificationFacetTest is TestBase { .extractNonEVMAddress(callData); assertEq(returnedNonEVMAddress, bytes32("Just some address")); - - // standardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - returnedNonEVMAddress = calldataVerificationFacet.extractNonEVMAddress( - standardizedCallData - ); - - assertEq(returnedNonEVMAddress, bytes32("Just some address")); } function test_CanExtractMainParameters() public { @@ -272,32 +202,6 @@ contract CalldataVerificationFacetTest is TestBase { assertEq(destinationChainId, bridgeData.destinationChainId); assertEq(hasSourceSwaps, bridgeData.hasSourceSwaps); assertEq(hasDestinationCall, bridgeData.hasDestinationCall); - - // standardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - ( - bridge, - sendingAssetId, - receiver, - minAmount, - destinationChainId, - hasSourceSwaps, - hasDestinationCall - ) = calldataVerificationFacet.extractMainParameters( - standardizedCallData - ); - - assertEq(bridge, bridgeData.bridge); - assertEq(receiver, bridgeData.receiver); - assertEq(sendingAssetId, bridgeData.sendingAssetId); - assertEq(minAmount, bridgeData.minAmount); - assertEq(destinationChainId, bridgeData.destinationChainId); - assertEq(hasSourceSwaps, bridgeData.hasSourceSwaps); - assertEq(hasDestinationCall, bridgeData.hasDestinationCall); } function test_RevertsOnInvalidGenericSwapCallData() public { @@ -394,30 +298,6 @@ contract CalldataVerificationFacetTest is TestBase { swapData[swapData.length - 1].receivingAssetId ); assertEq(receivingAmount, 1 ether); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - ( - sendingAssetId, - amount, - receiver, - receivingAssetId, - receivingAmount - ) = calldataVerificationFacet.extractGenericSwapParameters( - standardizedCallData - ); - - assertEq(sendingAssetId, swapData[0].sendingAssetId); - assertEq(amount, swapData[0].fromAmount); - assertEq(receiver, address(1234)); - assertEq( - receivingAssetId, - swapData[swapData.length - 1].receivingAssetId - ); - assertEq(receivingAmount, 1 ether); } function test_CanExtractGenericSwapV3MultipleParameters() public { @@ -447,30 +327,6 @@ contract CalldataVerificationFacetTest is TestBase { swapData[swapData.length - 1].receivingAssetId ); assertEq(receivingAmount, 1 ether); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - ( - sendingAssetId, - amount, - receiver, - receivingAssetId, - receivingAmount - ) = calldataVerificationFacet.extractGenericSwapParameters( - standardizedCallData - ); - - assertEq(sendingAssetId, swapData[0].sendingAssetId); - assertEq(amount, swapData[0].fromAmount); - assertEq(receiver, address(1234)); - assertEq( - receivingAssetId, - swapData[swapData.length - 1].receivingAssetId - ); - assertEq(receivingAmount, 1 ether); } function test_CanExtractMainParametersWithSwap() public { @@ -498,31 +354,6 @@ contract CalldataVerificationFacetTest is TestBase { assertEq(destinationChainId, bridgeData.destinationChainId); assertEq(hasSourceSwaps, bridgeData.hasSourceSwaps); assertEq(hasDestinationCall, bridgeData.hasDestinationCall); - - // standardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - ( - bridge, - sendingAssetId, - receiver, - minAmount, - destinationChainId, - hasSourceSwaps, - hasDestinationCall - ) = calldataVerificationFacet.extractMainParameters( - standardizedCallData - ); - - assertEq(bridge, bridgeData.bridge); - assertEq(receiver, bridgeData.receiver); - assertEq(sendingAssetId, swapData[0].sendingAssetId); - assertEq(minAmount, swapData[0].fromAmount); - assertEq(destinationChainId, bridgeData.destinationChainId); - assertEq(hasSourceSwaps, bridgeData.hasSourceSwaps); - assertEq(hasDestinationCall, bridgeData.hasDestinationCall); } function test_CanValidateCalldata() public { @@ -553,195 +384,6 @@ contract CalldataVerificationFacetTest is TestBase { ); assertTrue(validCall); assertFalse(invalidCall); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - validCall = calldataVerificationFacet.validateCalldata( - standardizedCallData, - bridgeData.bridge, - bridgeData.sendingAssetId, - bridgeData.receiver, - bridgeData.minAmount, - bridgeData.destinationChainId, - bridgeData.hasSourceSwaps, - bridgeData.hasDestinationCall - ); - invalidCall = calldataVerificationFacet.validateCalldata( - standardizedCallData, - bridgeData.bridge, - bridgeData.sendingAssetId, - address(0xb33f), - bridgeData.minAmount, - bridgeData.destinationChainId, - bridgeData.hasSourceSwaps, - bridgeData.hasDestinationCall - ); - assertTrue(validCall); - assertFalse(invalidCall); - } - - function test_CanValidateAmarokDestinationCalldata() public { - AmarokFacet.AmarokData memory amarokData = AmarokFacet.AmarokData({ - callData: bytes("foobarbytes"), - callTo: USER_RECEIVER, - relayerFee: 0, - slippageTol: 0, - delegate: USER_RECEIVER, - destChainDomainId: 1234, - payFeeWithSendingAsset: false - }); - - bytes memory callData = abi.encodeWithSelector( - AmarokFacet.startBridgeTokensViaAmarok.selector, - bridgeData, - amarokData - ); - - bytes memory callDataWithSwap = abi.encodeWithSelector( - AmarokFacet.swapAndStartBridgeTokensViaAmarok.selector, - bridgeData, - swapData, - amarokData - ); - - bool validCall = calldataVerificationFacet.validateDestinationCalldata( - callData, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - bool validCallWithSwap = calldataVerificationFacet - .validateDestinationCalldata( - callDataWithSwap, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - - bool badCall = calldataVerificationFacet.validateDestinationCalldata( - callData, - abi.encode(USER_RECEIVER), - bytes("badbytes") - ); - - assertTrue(validCall); - assertTrue(validCallWithSwap); - assertFalse(badCall); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - bytes memory standardizedCallDataWithSwap = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callDataWithSwap - ); - - validCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - validCallWithSwap = calldataVerificationFacet - .validateDestinationCalldata( - standardizedCallDataWithSwap, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - - badCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("badbytes") - ); - - assertTrue(validCall); - assertTrue(validCallWithSwap); - assertFalse(badCall); - } - - function test_CanValidateStargateDestinationCalldata() public { - StargateFacet.StargateData memory sgData = StargateFacet.StargateData({ - srcPoolId: 1, - dstPoolId: 2, - minAmountLD: 3, - dstGasForCall: 4, - lzFee: 5, - refundAddress: payable(address(0x1234)), - callTo: abi.encode(USER_RECEIVER), - callData: bytes("foobarbytes") - }); - - bytes memory callData = abi.encodeWithSelector( - StargateFacet.startBridgeTokensViaStargate.selector, - bridgeData, - sgData - ); - - bytes memory callDataWithSwap = abi.encodeWithSelector( - StargateFacet.swapAndStartBridgeTokensViaStargate.selector, - bridgeData, - swapData, - sgData - ); - - bool validCall = calldataVerificationFacet.validateDestinationCalldata( - callData, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - bool validCallWithSwap = calldataVerificationFacet - .validateDestinationCalldata( - callDataWithSwap, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - - bool badCall = calldataVerificationFacet.validateDestinationCalldata( - callData, - abi.encode(USER_RECEIVER), - bytes("badbytes") - ); - - assertTrue(validCall); - assertTrue(validCallWithSwap); - assertFalse(badCall); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - bytes memory standardizedCallDataWithSwap = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callDataWithSwap - ); - - validCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - validCallWithSwap = calldataVerificationFacet - .validateDestinationCalldata( - standardizedCallDataWithSwap, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - - badCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("badbytes") - ); - - assertTrue(validCall); - assertTrue(validCallWithSwap); - assertFalse(badCall); } function test_CanValidateStargateV2DestinationCalldata() public { @@ -803,39 +445,6 @@ contract CalldataVerificationFacetTest is TestBase { assertTrue(validCall); assertTrue(validCallWithSwap); assertFalse(badCall); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - bytes memory standardizedCallDataWithSwap = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callDataWithSwap - ); - - validCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - validCallWithSwap = calldataVerificationFacet - .validateDestinationCalldata( - standardizedCallDataWithSwap, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - - badCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("badbytes") - ); - - assertTrue(validCall); - assertTrue(validCallWithSwap); - assertFalse(badCall); } function test_CanValidateCelerIMDestinationCalldata() public { @@ -882,39 +491,6 @@ contract CalldataVerificationFacetTest is TestBase { assertTrue(validCall); assertTrue(validCallWithSwap); assertFalse(badCall); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - bytes memory standardizedCallDataWithSwap = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - validCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - validCallWithSwap = calldataVerificationFacet - .validateDestinationCalldata( - standardizedCallDataWithSwap, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - - badCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("badbytes") - ); - - assertTrue(validCall); - assertTrue(validCallWithSwap); - assertFalse(badCall); } function test_CanValidateAcrossV3DestinationCalldata() public { @@ -966,39 +542,6 @@ contract CalldataVerificationFacetTest is TestBase { assertTrue(validCall); assertTrue(validCallWithSwap); assertFalse(badCall); - - // StandardizedCall - bytes memory standardizedCallData = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - bytes memory standardizedCallDataWithSwap = abi.encodeWithSelector( - StandardizedCallFacet.standardizedCall.selector, - callData - ); - - validCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - validCallWithSwap = calldataVerificationFacet - .validateDestinationCalldata( - standardizedCallDataWithSwap, - abi.encode(USER_RECEIVER), - bytes("foobarbytes") - ); - - badCall = calldataVerificationFacet.validateDestinationCalldata( - standardizedCallData, - abi.encode(USER_RECEIVER), - bytes("badbytes") - ); - - assertTrue(validCall); - assertTrue(validCallWithSwap); - assertFalse(badCall); } function test_RevertsOnDestinationCalldataWithInvalidSelector() public {