From 22f745761bb83c8f1336bd3d536d24b1cf51e6ec Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 23 Jun 2024 17:31:02 +0200 Subject: [PATCH] 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