diff --git a/agent/main/lib/Connection.ts b/agent/main/lib/Connection.ts index 3a4208e5e..0c017713b 100755 --- a/agent/main/lib/Connection.ts +++ b/agent/main/lib/Connection.ts @@ -65,7 +65,17 @@ export class Connection extends TypedEventEmitter<{ private onMessage(message: string): void { const timestamp = new Date(); - const object = JSON.parse(message); + let object; + try { + object = JSON.parse(message); + } catch (error) { + log.warn('Connection.InvalidMessage', { + sessionId: null, + message: message.slice(0, 500), + error, + }); + return; + } object.timestamp = timestamp; const devtoolsSessionId = object.params?.sessionId; diff --git a/core/lib/Tab.ts b/core/lib/Tab.ts index 930b43bd8..2ebf05a6d 100644 --- a/core/lib/Tab.ts +++ b/core/lib/Tab.ts @@ -933,7 +933,19 @@ export default class Tab return; } - this.frameEnvironmentsById.get(frameId).onPageRecorderEvents(JSON.parse(payload)); + let parsedPayload; + try { + parsedPayload = JSON.parse(payload); + } catch (error) { + log.warn('Tab.onPageCallback:InvalidPayload', { + sessionId: this.sessionId, + frameId, + payload, + error, + }); + return; + } + this.frameEnvironmentsById.get(frameId).onPageRecorderEvents(parsedPayload); } }