diff options
author | kumavis <aaron@kumavis.me> | 2018-11-03 10:14:40 +0800 |
---|---|---|
committer | kumavis <aaron@kumavis.me> | 2018-11-03 10:14:40 +0800 |
commit | 2c1bca1ab0a6284b89338d5fd36552583c960f36 (patch) | |
tree | 4f00546fe366fe7027f8a9507c8e522258a081da | |
parent | e683684e8d986a24cb6a15ed5eef0030169bf9cf (diff) | |
download | dexon-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.js | 11 |
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 } } |