From 43d2c920e0e3f3586aae47026fde7dc04e4f479f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 12 Mar 2024 10:53:21 +0100 Subject: [PATCH] LibWeb: Ignore MessagePort.start() on already-closed port This matches other browsers, and fixes an assertion found by Domato. --- .../Messaging/MessagePort-start-after-close.txt | 1 + .../input/Messaging/MessagePort-start-after-close.html | 10 ++++++++++ Userland/Libraries/LibWeb/HTML/MessagePort.cpp | 3 +++ 3 files changed, 14 insertions(+) create mode 100644 Tests/LibWeb/Text/expected/Messaging/MessagePort-start-after-close.txt create mode 100644 Tests/LibWeb/Text/input/Messaging/MessagePort-start-after-close.html diff --git a/Tests/LibWeb/Text/expected/Messaging/MessagePort-start-after-close.txt b/Tests/LibWeb/Text/expected/Messaging/MessagePort-start-after-close.txt new file mode 100644 index 0000000000..aaecaf93c4 --- /dev/null +++ b/Tests/LibWeb/Text/expected/Messaging/MessagePort-start-after-close.txt @@ -0,0 +1 @@ +PASS (didn't crash) diff --git a/Tests/LibWeb/Text/input/Messaging/MessagePort-start-after-close.html b/Tests/LibWeb/Text/input/Messaging/MessagePort-start-after-close.html new file mode 100644 index 0000000000..4c36d3af5e --- /dev/null +++ b/Tests/LibWeb/Text/input/Messaging/MessagePort-start-after-close.html @@ -0,0 +1,10 @@ + + diff --git a/Userland/Libraries/LibWeb/HTML/MessagePort.cpp b/Userland/Libraries/LibWeb/HTML/MessagePort.cpp index a66850f95b..defc64969b 100644 --- a/Userland/Libraries/LibWeb/HTML/MessagePort.cpp +++ b/Userland/Libraries/LibWeb/HTML/MessagePort.cpp @@ -364,6 +364,9 @@ void MessagePort::post_message_task_steps(SerializedTransferRecord& serialize_wi // https://html.spec.whatwg.org/multipage/web-messaging.html#dom-messageport-start void MessagePort::start() { + if (!is_entangled()) + return; + VERIFY(m_socket); VERIFY(m_fd_passing_socket);