From 22a86b939f8af2ee9bb05069d3460d1e453f544f Mon Sep 17 00:00:00 2001 From: Jonathan Rainville Date: Wed, 26 Aug 2020 11:03:16 -0400 Subject: [PATCH] refactor: do not cache the mnemonic in settings --- src/status/libstatus/settings.nim | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/status/libstatus/settings.nim b/src/status/libstatus/settings.nim index efaab23df8..c4772d093f 100644 --- a/src/status/libstatus/settings.nim +++ b/src/status/libstatus/settings.nim @@ -23,18 +23,21 @@ proc saveSetting*(key: Setting, value: string | JsonNode): StatusGoError = proc getWeb3ClientVersion*(): string = parseJson(callPrivateRPC("web3_clientVersion"))["result"].getStr -proc getSettings*(useCached: bool = true): JsonNode = +proc getSettings*(useCached: bool = true, keepSensitiveData: bool = false): JsonNode = {.gcsafe.}: withLock settingsLock: - if useCached and not dirty: + if useCached and not dirty and not keepSensitiveData: result = settings else: - settings = callPrivateRPC("settings_getSettings").parseJSON()["result"] + result = callPrivateRPC("settings_getSettings").parseJSON()["result"] + if (keepSensitiveData): + return dirty = false - result = settings + delete(result, "mnemonic") + settings = result proc getSetting*[T](name: Setting, defaultValue: T, useCached: bool = true): T = - let settings: JsonNode = getSettings(useCached) + let settings: JsonNode = getSettings(useCached, $name == "mnemonic") if not settings.contains($name) or settings{$name}.isEmpty(): return defaultValue result = Json.decode($settings{$name}, T)