aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2018-11-03 10:14:40 +0800
committerkumavis <aaron@kumavis.me>2018-11-03 10:14:40 +0800
commit2c1bca1ab0a6284b89338d5fd36552583c960f36 (patch)
tree4f00546fe366fe7027f8a9507c8e522258a081da
parente683684e8d986a24cb6a15ed5eef0030169bf9cf (diff)
downloaddexon-wallet-2c1bca1ab0a6284b89338d5fd36552583c960f36.tar.gz
dexon-wallet-2c1bca1ab0a6284b89338d5fd36552583c960f36.tar.zst
dexon-wallet-2c1bca1ab0a6284b89338d5fd36552583c960f36.zip
token-rates - protect against bad token data
-rw-r--r--app/scripts/controllers/token-rates.js11
1 files changed, 7 insertions, 4 deletions
diff --git a/app/scripts/controllers/token-rates.js b/app/scripts/controllers/token-rates.js
index 87d716aa..b6f08484 100644
--- a/app/scripts/controllers/token-rates.js
+++ b/app/scripts/controllers/token-rates.js
@@ -1,5 +1,5 @@
const ObservableStore = require('obs-store')
-const { warn } = require('loglevel')
+const log = require('loglevel')
// By default, poll every 3 minutes
const DEFAULT_INTERVAL = 180 * 1000
@@ -26,8 +26,11 @@ class TokenRatesController {
async updateExchangeRates () {
if (!this.isActive) { return }
const contractExchangeRates = {}
- for (const i in this._tokens) {
- const address = this._tokens[i].address
+ // copy array to ensure its not modified during iteration
+ const tokens = this._tokens.slice()
+ for (const token of tokens) {
+ if (!token) return log.error(`TokenRatesController - invalid tokens state:\n${JSON.stringify(tokens, null, 2)}`)
+ const address = token.address
contractExchangeRates[address] = await this.fetchExchangeRate(address)
}
this.store.putState({ contractExchangeRates })
@@ -44,7 +47,7 @@ class TokenRatesController {
const json = await response.json()
return json && json.length ? json[0].averagePrice : 0
} catch (error) {
- warn(`MetaMask - TokenRatesController exchange rate fetch failed for ${address}.`, error)
+ log.warn(`MetaMask - TokenRatesController exchange rate fetch failed for ${address}.`, error)
return 0
}
}
ER=4 and QT_COMPONETS to USE_QT4miwi2012-06-061-2/+1 * - update png to 1.5.10dinoex2012-06-011-0/+1 * KDE/FreeBSD team presents update for PyQt ports:makc2012-05-251-1/+1 * - Pet Tinderbox and friends.avilla2012-01-251-1/+1 * - Update PyQt4 to 4.8.5.avilla2011-10-172-2/+1 * - Update SIP to 4.12.1.avilla2011-03-252-3/+3 * KDE FreeBSD team is glad to present Qt 4.7.1 in ports.makc2010-12-031-3/+2 * - The FreeBSD KDE team is pleased to announce SIP-4.10.2, PyQt-4.7.3fluffy2010-05-112-6/+5 * - update to 1.4.1dinoex2010-03-281-1/+1 * - update to jpeg-8dinoex2010-02-051-0/+1 * The KDE FreeBSD team is proud to announce the release of SIP-4.10 andfluffy2010-01-301-3/+3 * - Update py-qt4* to 4.6.2miwi2009-11-271-3/+3 * - Update py-qt4 to py-qt4.5.4miwi2009-08-051-3/+3 * Use @dirrmtry for common dirs.makc2009-06-161-1/+1 * Update PyQt4 ports to 4.4.4, new ports:makc2009-02-153-29/+23 * The first iteration of the py-qt4-* ports had a snapshot date as itsmiwi2008-07-261-0/+1 * Bump portrevision due to upgrade of devel/gettext.edwin2008-06-061-1/+1 * - Update to 4.3.3miwi2008-03-202-13/+15 * - Update to 4.3.1miwi2007-10-022-4/+4 * - Update to PyQt-4.3miwi2007-09-144-213/+32 * - Welcome X.org 7.2 \o/.flz2007-05-201-0/+1 * - Update to 4.2miwi2007-04-183-24/+52