aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2017-07-19 00:34:02 +0800
committerGitHub <noreply@github.com>2017-07-19 00:34:02 +0800
commit1e718505824f5ee566138edb6de1f914397100b6 (patch)
treea560ddc4fb5cc34ec1fa7c17e2c2b8f177c84f6c
parente083e775858f2da16f7508229f20aaac83f1eb20 (diff)
parent614501e743a0c1584062c78a25e6b9a3ddf10aab (diff)
downloadtangerine-wallet-browser-1e718505824f5ee566138edb6de1f914397100b6.tar
tangerine-wallet-browser-1e718505824f5ee566138edb6de1f914397100b6.tar.gz
tangerine-wallet-browser-1e718505824f5ee566138edb6de1f914397100b6.tar.bz2
tangerine-wallet-browser-1e718505824f5ee566138edb6de1f914397100b6.tar.lz
tangerine-wallet-browser-1e718505824f5ee566138edb6de1f914397100b6.tar.xz
tangerine-wallet-browser-1e718505824f5ee566138edb6de1f914397100b6.tar.zst
tangerine-wallet-browser-1e718505824f5ee566138edb6de1f914397100b6.zip
Merge pull request #1787 from MetaMask/i1637-TransactionOrder
Fix transaction confirmation ordering
-rw-r--r--CHANGELOG.md1
-rw-r--r--test/unit/tx-helper-test.js17
-rw-r--r--ui/lib/tx-helper.js6
3 files changed, 23 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ddb07e6a1..5d15b3512 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
- No longer automatically request 1 ropsten ether for the first account in a new vault.
- Now redirects from known malicious sites faster.
- Added a link to our new support page to the help screen.
+- Fixed bug where a new transaction would be shown over the current transaction, creating a possible timing attack against user confirmation.
## 3.9.0 2017-7-12
diff --git a/test/unit/tx-helper-test.js b/test/unit/tx-helper-test.js
new file mode 100644
index 000000000..cc6543c30
--- /dev/null
+++ b/test/unit/tx-helper-test.js
@@ -0,0 +1,17 @@
+const assert = require('assert')
+const txHelper = require('../../ui/lib/tx-helper')
+
+describe('txHelper', function () {
+ it('always shows the oldest tx first', function () {
+ const metamaskNetworkId = 1
+ const txs = {
+ a: { metamaskNetworkId, time: 3 },
+ b: { metamaskNetworkId, time: 1 },
+ c: { metamaskNetworkId, time: 2 },
+ }
+
+ const sorted = txHelper(txs, null, null, metamaskNetworkId)
+ assert.equal(sorted[0].time, 1, 'oldest tx first')
+ assert.equal(sorted[2].time, 3, 'newest tx last')
+ })
+})
diff --git a/ui/lib/tx-helper.js b/ui/lib/tx-helper.js
index ec19daf64..afc62e7b6 100644
--- a/ui/lib/tx-helper.js
+++ b/ui/lib/tx-helper.js
@@ -12,6 +12,10 @@ module.exports = function (unapprovedTxs, unapprovedMsgs, personalMsgs, network)
const personalValues = valuesFor(personalMsgs)
log.debug(`tx helper found ${personalValues.length} unsigned personal messages`)
allValues = allValues.concat(personalValues)
+ allValues = allValues.sort((a, b) => {
+ return a.time > b.time
+ })
- return allValues.sort(txMeta => txMeta.time)
+ return allValues
}
+