From 7cf21890acedce29bd97f7fb2092d265b5db18ba Mon Sep 17 00:00:00 2001 From: albertoblancas123 Date: Thu, 9 Jul 2026 10:36:02 -0600 Subject: [PATCH] Harden debug localStorage parsing --- js/config.js | 22 ++++++++++++++++++---- tests/e2e/wallet.spec.js | 13 +++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/js/config.js b/js/config.js index 3d93a08..01e743b 100644 --- a/js/config.js +++ b/js/config.js @@ -177,11 +177,25 @@ export const TOKEN_ICON_CONFIG = { export const getAllNetworks = () => Object.values(networkConfig); export const isDebugEnabled = (component) => { - // Check if debug mode is forced via localStorage - const localDebug = localStorage.getItem('debug'); + let localDebug; + try { + localDebug = localStorage.getItem('debug'); + } catch { + return DEBUG_CONFIG[component]; + } if (localDebug) { - const debugSettings = JSON.parse(localDebug); - return debugSettings[component] ?? DEBUG_CONFIG[component]; + try { + const debugSettings = JSON.parse(localDebug); + if (debugSettings && typeof debugSettings === 'object') { + return debugSettings[component] ?? DEBUG_CONFIG[component]; + } + } catch { + try { + localStorage.removeItem('debug'); + } catch { + // Ignore storage cleanup failures and fall back to defaults. + } + } } return DEBUG_CONFIG[component]; }; diff --git a/tests/e2e/wallet.spec.js b/tests/e2e/wallet.spec.js index 05fb40a..901360f 100644 --- a/tests/e2e/wallet.spec.js +++ b/tests/e2e/wallet.spec.js @@ -147,3 +147,16 @@ test('keeps app disconnect wired when a wallet appears after read-only startup', await expect(page.locator('.liberdus-wallet-connect__button')).toBeVisible(); await expect.poll(() => page.evaluate(() => window.walletManager?.getAccount?.())).toBeNull(); }); + +test('ignores invalid debug settings stored in localStorage', async ({ page }) => { + await installWalletBeforeLoad(page); + await page.addInitScript(() => { + window.localStorage.setItem('debug', '{invalid-json'); + }); + + await page.goto('/'); + + await waitForWalletUi(page); + await expect(page.locator('.liberdus-wallet-connect__button')).toBeVisible(); + await expect.poll(() => page.evaluate(() => window.localStorage.getItem('debug'))).toBeNull(); +});