From 93e61eea9d72bb049cd1528d1f780415d3c4cf25 Mon Sep 17 00:00:00 2001 From: Gancho Radkov Date: Mon, 30 Sep 2024 14:35:14 +0300 Subject: [PATCH] fix: resolves unhandled exception when json parse fails on window messages --- packages/core/src/controllers/verify.ts | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/core/src/controllers/verify.ts b/packages/core/src/controllers/verify.ts index bcc7636e3..ecd02dac9 100644 --- a/packages/core/src/controllers/verify.ts +++ b/packages/core/src/controllers/verify.ts @@ -80,16 +80,21 @@ export class Verify extends IVerify { iframe.addEventListener("error", abortListener, { signal: this.abortController.signal }); const listener = (event: MessageEvent) => { if (!event.data) return; - const data = JSON.parse(event.data); - if (data.type === "verify_attestation") { - const decoded = decodeJWT(data.attestation) as unknown as { payload: JwkPayload }; - if (decoded.payload.id !== id) return; - - clearInterval(abortTimeout); - document.body.removeChild(iframe); - this.abortController.signal.removeEventListener("abort", abortListener); - window.removeEventListener("message", listener); - resolve(data.attestation === null ? "" : data.attestation); + if (typeof event.data !== "string") return; + try { + const data = JSON.parse(event.data); + if (data.type === "verify_attestation") { + const decoded = decodeJWT(data.attestation) as unknown as { payload: JwkPayload }; + if (decoded.payload.id !== id) return; + + clearInterval(abortTimeout); + document.body.removeChild(iframe); + this.abortController.signal.removeEventListener("abort", abortListener); + window.removeEventListener("message", listener); + resolve(data.attestation === null ? "" : data.attestation); + } + } catch (e) { + this.logger.warn(e); } }; document.body.appendChild(iframe);