diff options
author | Thomas Huang <tmashuang@users.noreply.github.com> | 2018-01-09 03:47:47 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-09 03:47:47 +0800 |
commit | 0fbecb9f7c3b4b0d0b885f6478db70625851f1c2 (patch) | |
tree | e3f4b117381d8edb49428f726cb082417d7efae3 | |
parent | 0cf5c22178050fff0e89af2a12d87ef7fdf4440c (diff) | |
parent | d11ec81f49328d3f0fee484fba5191d4c29c42ad (diff) | |
download | tangerine-wallet-browser-0fbecb9f7c3b4b0d0b885f6478db70625851f1c2.tar tangerine-wallet-browser-0fbecb9f7c3b4b0d0b885f6478db70625851f1c2.tar.gz tangerine-wallet-browser-0fbecb9f7c3b4b0d0b885f6478db70625851f1c2.tar.bz2 tangerine-wallet-browser-0fbecb9f7c3b4b0d0b885f6478db70625851f1c2.tar.lz tangerine-wallet-browser-0fbecb9f7c3b4b0d0b885f6478db70625851f1c2.tar.xz tangerine-wallet-browser-0fbecb9f7c3b4b0d0b885f6478db70625851f1c2.tar.zst tangerine-wallet-browser-0fbecb9f7c3b4b0d0b885f6478db70625851f1c2.zip |
Merge pull request #2891 from MetaMask/i2621-0xRecipientAddress
Account for 0x/empty string recipient
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | app/scripts/lib/tx-gas-utils.js | 11 | ||||
-rw-r--r-- | test/unit/tx-gas-util-test.js | 32 |
3 files changed, 44 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 31f0406c7..cacc4b522 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Current Master +- Remove recipient field if application initializes a tx with an empty string, or 0x, and tx data. Throw an error with the same condition, but without tx data. - Improve gas price suggestion to be closer to the lowest that will be accepted. - Throw an error if a application tries to submit a tx whose value is a decimal, and inform that it should be in wei. - Fix bug that prevented updating custom token details. diff --git a/app/scripts/lib/tx-gas-utils.js b/app/scripts/lib/tx-gas-utils.js index ccf8bb1b1..5e49fdb22 100644 --- a/app/scripts/lib/tx-gas-utils.js +++ b/app/scripts/lib/tx-gas-utils.js @@ -81,6 +81,7 @@ module.exports = class txProvideUtil { } async validateTxParams (txParams) { + this.validateRecipient(txParams) if ('value' in txParams) { const value = txParams.value.toString() if (value.includes('-')) { @@ -92,4 +93,14 @@ module.exports = class txProvideUtil { } } } + validateRecipient (txParams) { + if (txParams.to === '0x') { + if (txParams.data) { + delete txParams.to + } else { + throw new Error('Invalid recipient address') + } + } + return txParams + } } diff --git a/test/unit/tx-gas-util-test.js b/test/unit/tx-gas-util-test.js new file mode 100644 index 000000000..ccef31359 --- /dev/null +++ b/test/unit/tx-gas-util-test.js @@ -0,0 +1,32 @@ +const assert = require('assert') +const TxGasUtils = require('../../app/scripts/lib/tx-gas-utils') +const { createStubedProvider } = require('../stub/provider') + +describe('Tx Gas Util', function () { + let txGasUtil, provider, providerResultStub + beforeEach(function () { + providerResultStub = {} + provider = createStubedProvider(providerResultStub) + txGasUtil = new TxGasUtils({ + provider, + }) + }) + + it('removes recipient for txParams with 0x when contract data is provided', function () { + const zeroRecipientandDataTxParams = { + from: '0x1678a085c290ebd122dc42cba69373b5953b831d', + to: '0x', + data: 'bytecode', + } + const sanitizedTxParams = txGasUtil.validateRecipient(zeroRecipientandDataTxParams) + assert.deepEqual(sanitizedTxParams, { from: '0x1678a085c290ebd122dc42cba69373b5953b831d', data: 'bytecode' }, 'no recipient with 0x') + }) + + it('should error when recipient is 0x', function () { + const zeroRecipientTxParams = { + from: '0x1678a085c290ebd122dc42cba69373b5953b831d', + to: '0x', + } + assert.throws(() => { txGasUtil.validateRecipient(zeroRecipientTxParams) }, Error, 'Invalid recipient address') + }) +}) |