diff options
author | Amir Bandeali <abandeali1@gmail.com> | 2018-08-25 05:06:46 +0800 |
---|---|---|
committer | Amir Bandeali <abandeali1@gmail.com> | 2018-08-25 05:06:46 +0800 |
commit | 6a9669a409a61c4645af43f39a4e4a0761354e32 (patch) | |
tree | 4054f02bf577ea213122cf5ad3694fc6586db85f /packages/contracts/src | |
parent | 070eff6f3a2f3775ef72248c3f345c05cd833798 (diff) | |
download | dexon-0x-contracts-6a9669a409a61c4645af43f39a4e4a0761354e32.tar dexon-0x-contracts-6a9669a409a61c4645af43f39a4e4a0761354e32.tar.gz dexon-0x-contracts-6a9669a409a61c4645af43f39a4e4a0761354e32.tar.bz2 dexon-0x-contracts-6a9669a409a61c4645af43f39a4e4a0761354e32.tar.lz dexon-0x-contracts-6a9669a409a61c4645af43f39a4e4a0761354e32.tar.xz dexon-0x-contracts-6a9669a409a61c4645af43f39a4e4a0761354e32.tar.zst dexon-0x-contracts-6a9669a409a61c4645af43f39a4e4a0761354e32.zip |
Rethrow Wallet and Validator errors
Diffstat (limited to 'packages/contracts/src')
-rw-r--r-- | packages/contracts/src/2.0.0/protocol/Exchange/MixinSignatureValidator.sol | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/packages/contracts/src/2.0.0/protocol/Exchange/MixinSignatureValidator.sol b/packages/contracts/src/2.0.0/protocol/Exchange/MixinSignatureValidator.sol index 6bfbb5107..017da742e 100644 --- a/packages/contracts/src/2.0.0/protocol/Exchange/MixinSignatureValidator.sol +++ b/packages/contracts/src/2.0.0/protocol/Exchange/MixinSignatureValidator.sol @@ -293,8 +293,20 @@ contract MixinSignatureValidator is cdStart, // write input over output 32 // output size is 32 bytes ) - // Signature is valid if call did not revert and returned true - isValid := and(success, mload(cdStart)) + + switch success + case 0 { + // Revert with `Error("WALLET_ERROR")` + mstore(0, 0x08c379a000000000000000000000000000000000000000000000000000000000) + mstore(32, 0x0000002000000000000000000000000000000000000000000000000000000000) + mstore(64, 0x0000000c57414c4c45545f4552524f5200000000000000000000000000000000) + mstore(96, 0) + revert(0, 100) + } + case 1 { + // Signature is valid if call did not revert and returned true + isValid := mload(cdStart) + } } return isValid; } @@ -331,8 +343,20 @@ contract MixinSignatureValidator is cdStart, // write input over output 32 // output size is 32 bytes ) - // Signature is valid if call did not revert and returned true - isValid := and(success, mload(cdStart)) + + switch success + case 0 { + // Revert with `Error("VALIDATOR_ERROR")` + mstore(0, 0x08c379a000000000000000000000000000000000000000000000000000000000) + mstore(32, 0x0000002000000000000000000000000000000000000000000000000000000000) + mstore(64, 0x0000000f56414c494441544f525f4552524f5200000000000000000000000000) + mstore(96, 0) + revert(0, 100) + } + case 1 { + // Signature is valid if call did not revert and returned true + isValid := mload(cdStart) + } } return isValid; } |