aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorFrankie <frankie.diamond@gmail.com>2018-04-03 07:18:35 +0800
committerGitHub <noreply@github.com>2018-04-03 07:18:35 +0800
commitc14ec4191741c444dcf5b7c3e177c17a10374c16 (patch)
tree1b72c6ec94410c6093659a5499609d15421aff30 /app
parent40c3edb754ece00e125571f24e68b4584988e9c2 (diff)
parentb58ca99b61e8332afc441a1520759578b754c424 (diff)
downloadtangerine-wallet-browser-c14ec4191741c444dcf5b7c3e177c17a10374c16.tar
tangerine-wallet-browser-c14ec4191741c444dcf5b7c3e177c17a10374c16.tar.gz
tangerine-wallet-browser-c14ec4191741c444dcf5b7c3e177c17a10374c16.tar.bz2
tangerine-wallet-browser-c14ec4191741c444dcf5b7c3e177c17a10374c16.tar.lz
tangerine-wallet-browser-c14ec4191741c444dcf5b7c3e177c17a10374c16.tar.xz
tangerine-wallet-browser-c14ec4191741c444dcf5b7c3e177c17a10374c16.tar.zst
tangerine-wallet-browser-c14ec4191741c444dcf5b7c3e177c17a10374c16.zip
Merge pull request #3831 from MetaMask/i#3770
some more transaction validation bug fixes
Diffstat (limited to 'app')
-rw-r--r--app/scripts/controllers/transactions.js5
-rw-r--r--app/scripts/lib/tx-gas-utils.js13
2 files changed, 14 insertions, 4 deletions
diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js
index a18a2d2e2..31e53554d 100644
--- a/app/scripts/controllers/transactions.js
+++ b/app/scripts/controllers/transactions.js
@@ -187,12 +187,12 @@ module.exports = class TransactionController extends EventEmitter {
// validate
await this.txGasUtil.validateTxParams(txParams)
// construct txMeta
- const txMeta = this.txStateManager.generateTxMeta({txParams})
+ let txMeta = this.txStateManager.generateTxMeta({txParams})
this.addTx(txMeta)
this.emit('newUnapprovedTx', txMeta)
// add default tx params
try {
- await this.addTxDefaults(txMeta)
+ txMeta = await this.addTxDefaults(txMeta)
} catch (error) {
console.log(error)
this.txStateManager.setTxStatusFailed(txMeta.id, error)
@@ -215,6 +215,7 @@ module.exports = class TransactionController extends EventEmitter {
}
txParams.gasPrice = ethUtil.addHexPrefix(gasPrice.toString(16))
txParams.value = txParams.value || '0x0'
+ if (txParams.to === null) delete txParams.to
// set gasLimit
return await this.txGasUtil.analyzeGasUsage(txMeta)
}
diff --git a/app/scripts/lib/tx-gas-utils.js b/app/scripts/lib/tx-gas-utils.js
index 0fa9dd8d4..829b4c421 100644
--- a/app/scripts/lib/tx-gas-utils.js
+++ b/app/scripts/lib/tx-gas-utils.js
@@ -52,7 +52,9 @@ module.exports = class TxGasUtil {
// if recipient has no code, gas is 21k max:
const recipient = txParams.to
const hasRecipient = Boolean(recipient)
- const code = await this.query.getCode(recipient)
+ let code
+ if (recipient) code = await this.query.getCode(recipient)
+
if (hasRecipient && (!code || code === '0x')) {
txParams.gas = SIMPLE_GAS_COST
txMeta.simpleSend = true // Prevents buffer addition
@@ -100,6 +102,7 @@ module.exports = class TxGasUtil {
}
async validateTxParams (txParams) {
+ this.validateFrom(txParams)
this.validateRecipient(txParams)
if ('value' in txParams) {
const value = txParams.value.toString()
@@ -112,6 +115,12 @@ module.exports = class TxGasUtil {
}
}
}
+
+ validateFrom (txParams) {
+ if ( !(typeof txParams.from === 'string') ) throw new Error(`Invalid from address ${txParams.from} not a string`)
+ if (!isValidAddress(txParams.from)) throw new Error('Invalid from address')
+ }
+
validateRecipient (txParams) {
if (txParams.to === '0x' || txParams.to === null ) {
if (txParams.data) {
@@ -124,4 +133,4 @@ module.exports = class TxGasUtil {
}
return txParams
}
-}
+} \ No newline at end of file