From 6ed423d1af7410e0f771d3f12a84a5c9690804a3 Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Tue, 29 Jan 2019 10:15:12 -0800 Subject: [PATCH] Make all cancels permissionless --- .../tec/contracts/src/MixinSignatureValidator.sol | 7 +++++++ .../tec/contracts/src/MixinTECApprovalVerifier.sol | 14 ++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/contracts/tec/contracts/src/MixinSignatureValidator.sol b/contracts/tec/contracts/src/MixinSignatureValidator.sol index e530a4321d..2e8e4e896a 100644 --- a/contracts/tec/contracts/src/MixinSignatureValidator.sol +++ b/contracts/tec/contracts/src/MixinSignatureValidator.sol @@ -94,5 +94,12 @@ contract MixinSignatureValidator { ); return signerAddress; } + + // Anything else is illegal (We do not return false because + // the signature may actually be valid, just not in a format + // that we currently support. In this case returning false + // may lead the caller to incorrectly believe that the + // signature was invalid.) + revert("SIGNATURE_UNSUPPORTED"); } } \ No newline at end of file diff --git a/contracts/tec/contracts/src/MixinTECApprovalVerifier.sol b/contracts/tec/contracts/src/MixinTECApprovalVerifier.sol index 4f5a41e592..59a6e9e00f 100644 --- a/contracts/tec/contracts/src/MixinTECApprovalVerifier.sol +++ b/contracts/tec/contracts/src/MixinTECApprovalVerifier.sol @@ -63,8 +63,7 @@ contract MixinTECApprovalVerifier is if ( exchangeFunctionSelector == FILL_ORDER_SELECTOR || exchangeFunctionSelector == FILL_ORDER_NO_THROW_SELECTOR || - exchangeFunctionSelector == FILL_OR_KILL_ORDER_SELECTOR || - exchangeFunctionSelector == CANCEL_ORDER_SELECTOR + exchangeFunctionSelector == FILL_OR_KILL_ORDER_SELECTOR ) { // Decode single order (LibOrder.Order memory order) = abi.decode( @@ -87,8 +86,7 @@ contract MixinTECApprovalVerifier is exchangeFunctionSelector == MARKET_BUY_ORDERS_SELECTOR || exchangeFunctionSelector == MARKET_BUY_ORDERS_NO_THROW_SELECTOR || exchangeFunctionSelector == MARKET_SELL_ORDERS_SELECTOR || - exchangeFunctionSelector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR || - exchangeFunctionSelector == BATCH_CANCEL_ORDERS_SELECTOR + exchangeFunctionSelector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR ) { // Decode all orders (LibOrder.Order[] memory orders) = abi.decode( @@ -124,8 +122,12 @@ contract MixinTECApprovalVerifier is approvalExpirationTimeSeconds, approvalSignatures ); - } else if (exchangeFunctionSelector == CANCEL_ORDERS_UP_TO_SELECTOR) { - // `cancelOrdersUpTo` is always permitted + } else if ( + exchangeFunctionSelector == CANCEL_ORDERS_UP_TO_SELECTOR || + exchangeFunctionSelector == CANCEL_ORDER_SELECTOR || + exchangeFunctionSelector == BATCH_CANCEL_ORDERS_SELECTOR + ) { + // All cancel functions are always permitted return; } else { revert("INVALID_OR_BLOCKED_EXCHANGE_SELECTOR");