From 22f745761bb83c8f1336bd3d536d24b1cf51e6ec Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 23 Jun 2024 17:31:02 +0200 Subject: [PATCH 1/3] Issue #2536 - Re-implement plugin enumeration shuffle. Resolves #2536 --- dom/plugins/base/nsPluginHost.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp index b3dbb4205b..a665dfbc16 100644 --- a/dom/plugins/base/nsPluginHost.cpp +++ b/dom/plugins/base/nsPluginHost.cpp @@ -1136,6 +1136,15 @@ nsPluginHost::GetPlugins(nsTArray>& aPluginArray, } plugin = plugin->mNext; } + + // Durstenfeld shuffle + size_t pluginCount = aPluginArray.Length(); + if (pluginCount >= 2) { + for (size_t i = pluginCount - 1; i > 0; i--) { + size_t j = rand() % (i + 1); + std::swap(aPluginArray[i],aPluginArray[j]); + } + } } // FIXME-jsplugins Check users for order of fake v non-fake From fb16b1b4aeb361466ad26bc5f531cd4b35920c53 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 23 Jun 2024 17:55:13 +0200 Subject: [PATCH 2/3] Issue #2534 - Part 1: window.postMessage should provide a trusted MessageEvent --- dom/base/PostMessageEvent.cpp | 20 +++++++++----------- dom/base/PostMessageEvent.h | 4 +--- dom/base/nsGlobalWindow.cpp | 3 +-- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/dom/base/PostMessageEvent.cpp b/dom/base/PostMessageEvent.cpp index ea89a43a18..2092e82977 100644 --- a/dom/base/PostMessageEvent.cpp +++ b/dom/base/PostMessageEvent.cpp @@ -32,16 +32,14 @@ PostMessageEvent::PostMessageEvent(nsGlobalWindow* aSource, const nsAString& aCallerOrigin, nsGlobalWindow* aTargetWindow, nsIPrincipal* aProvidedPrincipal, - nsIDocument* aSourceDocument, - bool aTrustedCaller) -: StructuredCloneHolder(CloningSupported, TransferringSupported, - StructuredCloneScope::SameProcessSameThread), - mSource(aSource), - mCallerOrigin(aCallerOrigin), - mTargetWindow(aTargetWindow), - mProvidedPrincipal(aProvidedPrincipal), - mSourceDocument(aSourceDocument), - mTrustedCaller(aTrustedCaller) + nsIDocument* aSourceDocument) + : StructuredCloneHolder(CloningSupported, TransferringSupported, + StructuredCloneScope::SameProcessSameThread) + , mSource(aSource) + , mCallerOrigin(aCallerOrigin) + , mTargetWindow(aTargetWindow) + , mProvidedPrincipal(aProvidedPrincipal) + , mSourceDocument(aSourceDocument) { MOZ_COUNT_CTOR(PostMessageEvent); } @@ -169,7 +167,7 @@ PostMessageEvent::Run() if (shell) presContext = shell->GetPresContext(); - event->SetTrusted(mTrustedCaller); + event->SetTrusted(true); WidgetEvent* internalEvent = event->WidgetEventPtr(); nsEventStatus status = nsEventStatus_eIgnore; diff --git a/dom/base/PostMessageEvent.h b/dom/base/PostMessageEvent.h index d96ac11403..a38e349c17 100644 --- a/dom/base/PostMessageEvent.h +++ b/dom/base/PostMessageEvent.h @@ -33,8 +33,7 @@ public: const nsAString& aCallerOrigin, nsGlobalWindow* aTargetWindow, nsIPrincipal* aProvidedPrincipal, - nsIDocument* aSourceDocument, - bool aTrustedCaller); + nsIDocument* aSourceDocument); private: ~PostMessageEvent(); @@ -44,7 +43,6 @@ private: RefPtr mTargetWindow; nsCOMPtr mProvidedPrincipal; nsCOMPtr mSourceDocument; - bool mTrustedCaller; }; } // namespace dom diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 3ef2f6cd8c..7e58b273f0 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -8885,8 +8885,7 @@ nsGlobalWindow::PostMessageMozOuter(JSContext* aCx, JS::Handle aMessa providedPrincipal, callerInnerWin ? callerInnerWin->GetDoc() - : nullptr, - nsContentUtils::IsCallerChrome()); + : nullptr); JS::Rooted message(aCx, aMessage); JS::Rooted transfer(aCx, aTransfer); From af227c4574853d4f0a9d6aba73e871f2f10fdd0d Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 23 Jun 2024 18:11:22 +0200 Subject: [PATCH 3/3] Issue #2534 - Part 2: Update tests --- dom/tests/mochitest/whatwg/browserFu.js | 6 ------ dom/tests/mochitest/whatwg/mochitest.ini | 1 - dom/tests/mochitest/whatwg/postMessage_helper.html | 7 ------- dom/tests/mochitest/whatwg/postMessage_joined_helper.html | 6 ------ dom/tests/mochitest/whatwg/postMessage_joined_helper2.html | 7 ------- dom/tests/mochitest/whatwg/test_MessageEvent.html | 1 - dom/tests/mochitest/whatwg/test_postMessage.html | 6 +----- dom/tests/mochitest/whatwg/test_postMessage_basehref.html | 1 - dom/tests/mochitest/whatwg/test_postMessage_closed.html | 1 - dom/tests/mochitest/whatwg/test_postMessage_hash.html | 1 - dom/tests/mochitest/whatwg/test_postMessage_idn.xhtml | 6 +----- dom/tests/mochitest/whatwg/test_postMessage_jar.html | 1 - dom/tests/mochitest/whatwg/test_postMessage_joined.html | 6 +----- dom/tests/mochitest/whatwg/test_postMessage_origin.xhtml | 1 - dom/tests/mochitest/whatwg/test_postMessage_special.xhtml | 6 +----- dom/tests/mochitest/whatwg/test_postMessage_transfer.html | 1 - 16 files changed, 4 insertions(+), 54 deletions(-) delete mode 100644 dom/tests/mochitest/whatwg/browserFu.js diff --git a/dom/tests/mochitest/whatwg/browserFu.js b/dom/tests/mochitest/whatwg/browserFu.js deleted file mode 100644 index 3fb5bdf956..0000000000 --- a/dom/tests/mochitest/whatwg/browserFu.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * File which includes stuff for Mozilla-specific checks which shouldn't happen - * in other browsers but which we wish to test. - */ - -var isMozilla = navigator.product === "Gecko" && "buildID" in navigator; diff --git a/dom/tests/mochitest/whatwg/mochitest.ini b/dom/tests/mochitest/whatwg/mochitest.ini index ab853b86cf..685d4d32bb 100644 --- a/dom/tests/mochitest/whatwg/mochitest.ini +++ b/dom/tests/mochitest/whatwg/mochitest.ini @@ -1,6 +1,5 @@ [DEFAULT] support-files = - browserFu.js postMessage_chrome_helper.html postMessage_closed_helper.html postMessage_hash.html diff --git a/dom/tests/mochitest/whatwg/postMessage_helper.html b/dom/tests/mochitest/whatwg/postMessage_helper.html index 86e34e9d4a..345616d089 100644 --- a/dom/tests/mochitest/whatwg/postMessage_helper.html +++ b/dom/tests/mochitest/whatwg/postMessage_helper.html @@ -2,7 +2,6 @@ postMessage message receiver - - diff --git a/dom/tests/mochitest/whatwg/test_postMessage.html b/dom/tests/mochitest/whatwg/test_postMessage.html index ca6389790f..83e8f4d962 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage.html +++ b/dom/tests/mochitest/whatwg/test_postMessage.html @@ -6,7 +6,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=postMessage Basic postMessage tests - @@ -52,10 +51,7 @@ function messageReceiver(evt) "postMessage creates events with empty lastEventId"); is(evt.type, "message", "expected events of type 'message'"); - if (isMozilla) - { - ok(evt.isTrusted === false, "shouldn't have been a trusted event"); - } + ok(evt.isTrusted === true, "should have been a trusted event"); var data = evt.data; diff --git a/dom/tests/mochitest/whatwg/test_postMessage_basehref.html b/dom/tests/mochitest/whatwg/test_postMessage_basehref.html index f2d40e8436..5c23dca768 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_basehref.html +++ b/dom/tests/mochitest/whatwg/test_postMessage_basehref.html @@ -6,7 +6,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=414815 postMessage's interaction with a <base> tag - diff --git a/dom/tests/mochitest/whatwg/test_postMessage_closed.html b/dom/tests/mochitest/whatwg/test_postMessage_closed.html index 5a6f3f9286..8b3737d436 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_closed.html +++ b/dom/tests/mochitest/whatwg/test_postMessage_closed.html @@ -3,7 +3,6 @@ postMessage's interaction with closed windows - diff --git a/dom/tests/mochitest/whatwg/test_postMessage_hash.html b/dom/tests/mochitest/whatwg/test_postMessage_hash.html index 30996ef497..1523136f34 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_hash.html +++ b/dom/tests/mochitest/whatwg/test_postMessage_hash.html @@ -3,7 +3,6 @@ postMessage's interaction with hash URIs - diff --git a/dom/tests/mochitest/whatwg/test_postMessage_idn.xhtml b/dom/tests/mochitest/whatwg/test_postMessage_idn.xhtml index 7c1178f26e..7c84bea37c 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_idn.xhtml +++ b/dom/tests/mochitest/whatwg/test_postMessage_idn.xhtml @@ -7,7 +7,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=postMessage postMessage uri/domain values and IDN encoding - @@ -31,10 +30,7 @@ function receiveMessage(evt) ok(evt instanceof MessageEvent, "umm, how did we get this?"); is(evt.type, "message", "expected events of type 'message'"); - if (isMozilla) - { - ok(evt.isTrusted === false, "shouldn't have been a trusted event"); - } + ok(evt.isTrusted === true, "should have been a trusted event"); is(evt.origin, "http://sub1.ält.example.org:8000", "wrong origin -- IDN issue, perhaps?"); diff --git a/dom/tests/mochitest/whatwg/test_postMessage_jar.html b/dom/tests/mochitest/whatwg/test_postMessage_jar.html index 3bc453921b..96ba9f3418 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_jar.html +++ b/dom/tests/mochitest/whatwg/test_postMessage_jar.html @@ -6,7 +6,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=430251 postMessage's interaction with pages at jar: URIs - diff --git a/dom/tests/mochitest/whatwg/test_postMessage_joined.html b/dom/tests/mochitest/whatwg/test_postMessage_joined.html index 034151a12e..54226683c4 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_joined.html +++ b/dom/tests/mochitest/whatwg/test_postMessage_joined.html @@ -6,7 +6,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=postMessage postMessage with document.domain setting to join origins - @@ -29,10 +28,7 @@ function receiveTestResult(evt) ok(evt instanceof MessageEvent, "umm, how did we get this?"); is(evt.type, "message", "expected events of type 'message'"); - if (isMozilla) - { - ok(evt.isTrusted === false, "shouldn't have been a trusted event"); - } + ok(evt.isTrusted === true, "should have been a trusted event"); is(evt.lastEventId, "", "postMessage creates events with empty lastEventId"); diff --git a/dom/tests/mochitest/whatwg/test_postMessage_origin.xhtml b/dom/tests/mochitest/whatwg/test_postMessage_origin.xhtml index e48bee136d..7449dba623 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_origin.xhtml +++ b/dom/tests/mochitest/whatwg/test_postMessage_origin.xhtml @@ -6,7 +6,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=417075 postMessage from about:blank, data URLs - diff --git a/dom/tests/mochitest/whatwg/test_postMessage_special.xhtml b/dom/tests/mochitest/whatwg/test_postMessage_special.xhtml index bf443af99b..36cd894345 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_special.xhtml +++ b/dom/tests/mochitest/whatwg/test_postMessage_special.xhtml @@ -6,7 +6,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=postMessage postMessage from about:blank, data URLs - @@ -109,10 +108,7 @@ function messageReceiver(evt) ok(evt instanceof MessageEvent, "umm, how did we get this?"); is(evt.type, "message", "expected events of type 'message'"); - if (isMozilla) - { - ok(evt.isTrusted === false, "shouldn't have been a trusted event"); - } + ok(evt.isTrusted === true, "should have been a trusted event"); if (evt.data === "about:blank-response") { diff --git a/dom/tests/mochitest/whatwg/test_postMessage_transfer.html b/dom/tests/mochitest/whatwg/test_postMessage_transfer.html index 996a04f513..1b6492e182 100644 --- a/dom/tests/mochitest/whatwg/test_postMessage_transfer.html +++ b/dom/tests/mochitest/whatwg/test_postMessage_transfer.html @@ -6,7 +6,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=822094 postMessage transferable tests -