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