diff --git a/src/transports/windowPostMessageTransport.test.ts b/src/transports/windowPostMessageTransport.test.ts index b0650d4..3697fca 100644 --- a/src/transports/windowPostMessageTransport.test.ts +++ b/src/transports/windowPostMessageTransport.test.ts @@ -230,6 +230,24 @@ describe('WindowPostMessageTransport', () => { expect(notificationCallback).not.toHaveBeenCalled(); }); + it('should ignore messages with non-object data', async () => { + await transport.connect(); + + expect(() => + messageHandler({ + data: null, + origin: mockLocation.origin, + } as MessageEvent), + ).not.toThrow(); + + expect(() => + messageHandler({ + data: 'unrelated message', + origin: mockLocation.origin, + } as MessageEvent), + ).not.toThrow(); + }); + it('should handle disconnection', async () => { await transport.connect(); expect(transport.isConnected()).toBe(true); diff --git a/src/transports/windowPostMessageTransport.ts b/src/transports/windowPostMessageTransport.ts index 5ba2ced..83c2aa6 100644 --- a/src/transports/windowPostMessageTransport.ts +++ b/src/transports/windowPostMessageTransport.ts @@ -93,6 +93,10 @@ export function getWindowPostMessageTransport( // Set up message listener messageListener = (event: MessageEvent) => { + if (!event.data || typeof event.data !== 'object') { + return; + } + const { target, data } = event.data; if (target !== INPAGE || data?.name !== MULTICHAIN_SUBSTREAM_NAME || event.origin !== location.origin) { return;