Shared security patch analysis results
AI Used: DEEPSEEK deepseek-chat--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/devtools/server/performance/recorder.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/server/performance/recorder.js@@ -289,15 +289,14 @@ /** * Checks whether or not recording is currently supported. At the moment, * this is only influenced by private browsing mode and the profiler.+ * This function looks useless after some recent changes -- and it is.+ * Removing it would involve a lot of cleanup including backward+ * incompatibility work, which is a lot of work for this panel that's due to+ * be removed in the near future. */ canCurrentlyRecord: function() {- let success = true;+ const success = true; const reasons = [];-- if (!Profiler.canProfile()) {- success = false;- reasons.push("profiler-unavailable");- } // Check other factors that will affect the possibility of successfully // starting a recording here.
Here's the analysis of the provided code diff: Vulnerability Existed: no [Code Simplification/Removal of Unused Check] [devtools/server/performance/recorder.js] [Lines 289-299] [Old Code] canCurrentlyRecord: function() { let success = true; const reasons = []; if (!Profiler.canProfile()) { success = false; reasons.push("profiler-unavailable"); } // Check other factors that will affect the possibility of successfully // starting a recording here. [Fixed Code] canCurrentlyRecord: function() { const success = true; const reasons = []; // Check other factors that will affect the possibility of successfully // starting a recording here. Analysis: 1. The change removes an unnecessary check for Profiler.canProfile() and simplifies the function to always return true. 2. The comment explains this was done because the function became useless after recent changes. 3. There's no security vulnerability being fixed here - it's purely a code cleanup/refactoring change. 4. The change actually reduces potential attack surface by removing unnecessary code, though there was no vulnerability in the original code either.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/security/nss/lib/ssl/ssl3ext.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/security/nss/lib/ssl/ssl3ext.h@@ -38,7 +38,9 @@ /* Keep track of the extensions that are advertised or negotiated. */ PRUint16 numAdvertised;- PRUint16 *advertised; /* Allocated dynamically. */+ PRUint16 *advertised; /* Allocated dynamically. */+ PRUint16 echNumAdvertised; /* Tracks Xtns offered in ClientHelloInner. */+ PRUint16 *echAdvertised; PRUint16 numNegotiated; PRUint16 negotiated[SSL_MAX_EXTENSIONS];@@ -97,6 +99,7 @@ PRUint16 dtlsSRTPCipherSuite; /* 0 if not selected */+ unsigned int echXtnOffset; /* The start of the ECH Xtn (if any) */ unsigned int lastXtnOffset; /* Where to insert any other extensions. * 0 = end, otherwise base of PSK xtn. */ PRCList remoteKeyShares; /* The other side's public keys (TLS 1.3) */@@ -200,5 +203,8 @@ SECStatus SSLExp_InstallExtensionHooks( PRFileDesc *fd, PRUint16 extension, SSLExtensionWriter writer, void *writerArg, SSLExtensionHandler handler, void *handlerArg);+sslCustomExtensionHooks *ssl_FindCustomExtensionHooks(sslSocket *ss, PRUint16 extension);+SECStatus ssl_CallCustomExtensionSenders(sslSocket *ss, sslBuffer *buf,+ SSLHandshakeType message); #endif
I'll analyze the provided code diff for security fixes following the specified format. 1. Vulnerability Existed: not sure [Potential Memory Management Improvement] [security/nss/lib/ssl/ssl3ext.h] [Lines 38-41] [Old Code] PRUint16 numAdvertised; PRUint16 *advertised; /* Allocated dynamically. */ [Fixed Code] PRUint16 numAdvertised; PRUint16 *advertised; /* Allocated dynamically. */ PRUint16 echNumAdvertised; /* Tracks Xtns offered in ClientHelloInner. */ PRUint16 *echAdvertised; Additional Details: The change adds new fields for tracking ECH (Encrypted Client Hello) extensions. While not clearly a security fix, it could be related to improving memory management for extension handling. 2. Vulnerability Existed: not sure [Potential Buffer Management Improvement] [security/nss/lib/ssl/ssl3ext.h] [Lines 97-100] [Old Code] PRUint16 dtlsSRTPCipherSuite; /* 0 if not selected */ unsigned int lastXtnOffset; /* Where to insert any other extensions. [Fixed Code] PRUint16 dtlsSRTPCipherSuite; /* 0 if not selected */ unsigned int echXtnOffset; /* The start of the ECH Xtn (if any) */ unsigned int lastXtnOffset; /* Where to insert any other extensions. Additional Details: The addition of echXtnOffset suggests better tracking of extension positions, which could help prevent potential buffer management issues. 3. Vulnerability Existed: not sure [Potential Extension Handling Improvement] [security/nss/lib/ssl/ssl3ext.h] [Lines 200-203] [Old Code] SECStatus SSLExp_InstallExtensionHooks( PRFileDesc *fd, PRUint16 extension, SSLExtensionWriter writer, void *writerArg, SSLExtensionHandler handler, void *handlerArg); [Fixed Code] SECStatus SSLExp_InstallExtensionHooks( PRFileDesc *fd, PRUint16 extension, SSLExtensionWriter writer, void *writerArg, SSLExtensionHandler handler, void *handlerArg); sslCustomExtensionHooks *ssl_FindCustomExtensionHooks(sslSocket *ss, PRUint16 extension); SECStatus ssl_CallCustomExtensionSenders(sslSocket *ss, sslBuffer *buf, SSLHandshakeType message); Additional Details: The addition of new functions for handling custom extensions suggests improved extension processing, which could be security-related but isn't clearly a fix for a specific vulnerability. Note: While these changes appear to be related to security improvements (particularly around ECH handling), the diff doesn't clearly show fixes for specific known vulnerabilities. The changes seem more like enhancements to the extension handling infrastructure, possibly to prevent future vulnerabilities or improve security posture.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/browser/base/content/test/performance/browser_startup_mainthreadio.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/base/content/test/performance/browser_startup_mainthreadio.js@@ -46,9 +46,6 @@ * It's possible to have only a prefix, in thise case the directory will * still be resolved, eg. "UAppData:" * - use * at the begining and/or end as a wildcard- * - For Windows specific entries that require resolving the path to its- * canonical form, ie. the old DOS 8.3 format, use canonicalize: true.- * This is needed for stat calls to non-existent files. * The folder separator is '/' even for Windows paths, where it'll be * automatically converted to '\'. *@@ -364,24 +361,14 @@ }, { // bug 1370516 - NSS should be initialized off main thread.- path: `ProfD:cert9.db`,- condition: WIN,- ignoreIfUnused: true, // if canonicalize(ProfD) == ProfD, we'll use the previous entry.- canonicalize: true,- stat: 4,- },- {- // bug 1370516 - NSS should be initialized off main thread. path: `ProfD:cert9.db-journal`, condition: WIN,- canonicalize: true, stat: 3, }, { // bug 1370516 - NSS should be initialized off main thread. path: `ProfD:cert9.db-wal`, condition: WIN,- canonicalize: true, stat: 3, }, {@@ -399,24 +386,14 @@ }, { // bug 1370516 - NSS should be initialized off main thread.- path: `ProfD:key4.db`,- condition: WIN,- ignoreIfUnused: true, // if canonicalize(ProfD) == ProfD, we'll use the previous entry.- canonicalize: true,- stat: 4,- },- {- // bug 1370516 - NSS should be initialized off main thread. path: `ProfD:key4.db-journal`, condition: WIN,- canonicalize: true, stat: 5, }, { // bug 1370516 - NSS should be initialized off main thread. path: `ProfD:key4.db-wal`, condition: WIN,- canonicalize: true, stat: 5, }, {@@ -473,8 +450,8 @@ ignoreIfUnused: true, stat: 4, fsync: 3,- read: 48,- write: 172,+ read: 51,+ write: 178, }, { // bug 1391590@@ -490,7 +467,7 @@ fsync: 2, read: 4, stat: 3,- write: 1321,+ write: 1324, }, { // bug 1391590@@ -529,13 +506,11 @@ { path: `ProfD:key4.db-journal`, condition: WIN,- canonicalize: true, stat: 2, }, { path: `ProfD:key4.db-wal`, condition: WIN,- canonicalize: true, stat: 2, }, {@@ -555,7 +530,7 @@ }); }-function expandPathWithDirServiceKey(path, canonicalize = false) {+function expandPathWithDirServiceKey(path) { if (path.includes(":")) { let [prefix, suffix] = path.split(":"); let [key, property] = prefix.split(".");@@ -564,20 +539,16 @@ dir = dir[property]; }- if (canonicalize) {- path = dir.QueryInterface(Ci.nsILocalFileWin).canonicalPath;- } else {- // Resolve symLinks.- let dirPath = dir.path;- while (dir && !dir.isSymlink()) {- dir = dir.parent;- }- if (dir) {- dirPath = dirPath.replace(dir.path, dir.target);- }-- path = dirPath;- }+ // Resolve symLinks.+ let dirPath = dir.path;+ while (dir && !dir.isSymlink()) {+ dir = dir.parent;+ }+ if (dir) {+ dirPath = dirPath.replace(dir.path, dir.target);+ }++ path = dirPath; if (suffix) { path += "/" + suffix;@@ -736,7 +707,7 @@ ); startupPhases[phase].forEach(entry => { entry.listedPath = entry.path;- entry.path = expandPathWithDirServiceKey(entry.path, entry.canonicalize);+ entry.path = expandPathWithDirServiceKey(entry.path); }); }@@ -836,7 +807,6 @@ "listedPath", "path", "condition",- "canonicalize", "ignoreIfUnused", "_used", ].includes(op)
Based on the provided code diff, I'll analyze the changes for potential security vulnerabilities: 1. Vulnerability Existed: not sure Canonical Path Handling Removal [browser/base/content/test/performance/browser_startup_mainthreadio.js] [Multiple locations] [Old Code] Various entries with `canonicalize: true` and the `expandPathWithDirServiceKey` function supporting canonicalization [Fixed Code] Removed all `canonicalize: true` flags and simplified `expandPathWithDirServiceKey` to not handle canonical paths 2. Vulnerability Existed: not sure File Operation Count Changes [browser/base/content/test/performance/browser_startup_mainthreadio.js] [Lines 450, 467] [Old Code] read: 48, write: 172 read: 4, write: 1321 [Fixed Code] read: 51, write: 178 read: 4, write: 1324 Note: While the changes appear to be related to path handling and file operations, this is a test file (as indicated by its path in the test directory) and the changes seem to be related to test expectations rather than actual security vulnerabilities in the production code. The removal of canonical path handling might be significant if this were production code, but in this test context, it's likely just updating test expectations.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html@@ -17,10 +17,10 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d');-assert_throws_js(TypeError, function() { offscreenCanvas.width = '-100'; });+assert_throws_js(TypeError, function() { canvas.width = '-100'; }); t.done(); });
Based on the provided code diff, here's the analysis following the required format: Vulnerability Existed: no [No specific vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html] [Lines 17-20] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); assert_throws_js(TypeError, function() { offscreenCanvas.width = '-100'; }); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); assert_throws_js(TypeError, function() { canvas.width = '-100'; }); Additional Notes: 1. The changes appear to be primarily variable renaming (offscreenCanvas → canvas) rather than security fixes. 2. The test continues to verify that setting a negative width throws a TypeError, which is correct behavior. 3. No actual security vulnerability is being fixed in this diff - it's likely just code cleanup or test improvement.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/accessible/html/HTMLLinkAccessible.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/accessible/html/HTMLLinkAccessible.cpp@@ -5,6 +5,7 @@ #include "HTMLLinkAccessible.h"+#include "CacheConstants.h" #include "nsCoreUtils.h" #include "DocAccessible.h" #include "Role.h"@@ -13,6 +14,7 @@ #include "nsContentUtils.h" #include "mozilla/EventStates.h" #include "mozilla/dom/Element.h"+#include "mozilla/dom/MutationEventBinding.h" using namespace mozilla; using namespace mozilla::a11y;@@ -98,6 +100,26 @@ return true; }+bool HTMLLinkAccessible::AttributeChangesState(nsAtom* aAttribute) {+ return aAttribute == nsGkAtoms::href ||+ HyperTextAccessibleWrap::AttributeChangesState(aAttribute);+}++void HTMLLinkAccessible::DOMAttributeChanged(int32_t aNameSpaceID,+ nsAtom* aAttribute,+ int32_t aModType,+ const nsAttrValue* aOldValue,+ uint64_t aOldState) {+ HyperTextAccessibleWrap::DOMAttributeChanged(aNameSpaceID, aAttribute,+ aModType, aOldValue, aOldState);++ if (aAttribute == nsGkAtoms::href &&+ (aModType == dom::MutationEvent_Binding::ADDITION ||+ aModType == dom::MutationEvent_Binding::REMOVAL)) {+ SendCache(CacheDomain::Actions, CacheUpdateType::Update);+ }+}+ //////////////////////////////////////////////////////////////////////////////// // HyperLinkAccessible
Here's the analysis of the provided code diff following the specified format: 1. Vulnerability Existed: not sure [Potential State Synchronization Issue] [accessible/html/HTMLLinkAccessible.cpp] [Lines 98-120] [Old Code] (No previous implementation of AttributeChangesState or DOMAttributeChanged methods) [Fixed Code] ```cpp bool HTMLLinkAccessible::AttributeChangesState(nsAtom* aAttribute) { return aAttribute == nsGkAtoms::href || HyperTextAccessibleWrap::AttributeChangesState(aAttribute); } void HTMLLinkAccessible::DOMAttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute, int32_t aModType, const nsAttrValue* aOldValue, uint64_t aOldState) { HyperTextAccessibleWrap::DOMAttributeChanged(aNameSpaceID, aAttribute, aModType, aOldValue, aOldState); if (aAttribute == nsGkAtoms::href && (aModType == dom::MutationEvent_Binding::ADDITION || aModType == dom::MutationEvent_Binding::REMOVAL)) { SendCache(CacheDomain::Actions, CacheUpdateType::Update); } } ``` 2. Vulnerability Existed: not sure [Missing Cache Update on Href Changes] [accessible/html/HTMLLinkAccessible.cpp] [Lines 98-120] [Old Code] (No previous implementation to handle cache updates for href changes) [Fixed Code] ```cpp if (aAttribute == nsGkAtoms::href && (aModType == dom::MutationEvent_Binding::ADDITION || aModType == dom::MutationEvent_Binding::REMOVAL)) { SendCache(CacheDomain::Actions, CacheUpdateType::Update); } ``` Note: The changes appear to be adding functionality rather than fixing existing vulnerabilities. The new code implements proper state change detection for href attribute modifications and ensures cache updates occur when href attributes are added or removed. While these changes improve the robustness of the code, it's not clear if they're fixing specific known vulnerabilities or just implementing missing functionality. The added cache updates could potentially prevent stale data issues, but without more context about the threat model, we can't definitively say these were security fixes.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/line-styles/2d.line.cap.open.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/line-styles/2d.line.cap.open.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.strokeStyle = '#0f0';@@ -33,10 +33,10 @@ ctx.lineTo(1000, 200); ctx.lineTo(200, 200); ctx.stroke();-_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");-_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255");-_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255");-_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");+_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");+_assertPixel(canvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255");+_assertPixel(canvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255");+_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); t.done(); });
Based on the provided diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely variable renaming (from `offscreenCanvas` to `canvas`) and corresponding updates to the assertions. Here's the analysis: 1. Vulnerability Existed: no No security vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/line-styles/2d.line.cap.open.html [Lines] 17-33 [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); The changes are purely cosmetic/refactoring in nature and don't appear to address any security issues. The functionality remains exactly the same, just with a different variable name.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/tools/profiler/gecko/ProfilerParent.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/tools/profiler/gecko/ProfilerParent.cpp@@ -160,6 +160,9 @@ static void ProfilerStarted(uint32_t aEntries); static void ProfilerWillStopIfStarted();++ // Number of non-destroyed tracked ProfilerParents.+ static size_t ProfilerParentCount(); template <typename FuncType> static void Enumerate(FuncType&& aIterFunc);@@ -497,6 +500,20 @@ tracker->mMaybeController = Nothing{}; }+/* static */+size_t ProfilerParentTracker::ProfilerParentCount() {+ size_t count = 0;+ ProfilerParentTracker* tracker = GetInstance();+ if (tracker) {+ for (ProfilerParent* profilerParent : tracker->mProfilerParents) {+ if (!profilerParent->mDestroyed) {+ ++count;+ }+ }+ }+ return count;+}+ template <typename FuncType> /* static */ void ProfilerParentTracker::Enumerate(FuncType&& aIterFunc) {@@ -628,17 +645,30 @@ } /* static */-nsTArray<RefPtr<ProfilerParent::SingleProcessProfilePromise>>+nsTArray<ProfilerParent::SingleProcessProfilePromiseAndChildPid> ProfilerParent::GatherProfiles() {+ nsTArray<SingleProcessProfilePromiseAndChildPid> results; if (!NS_IsMainThread()) {- return nsTArray<RefPtr<ProfilerParent::SingleProcessProfilePromise>>();- }-- nsTArray<RefPtr<SingleProcessProfilePromise>> results;+ return results;+ }++ results.SetCapacity(ProfilerParentTracker::ProfilerParentCount()); ProfilerParentTracker::Enumerate([&](ProfilerParent* profilerParent) {- results.AppendElement(profilerParent->SendGatherProfile());+ results.AppendElement(SingleProcessProfilePromiseAndChildPid{+ profilerParent->SendGatherProfile(), profilerParent->mChildPid}); }); return results;+}++/* static */+RefPtr<ProfilerParent::SingleProcessProgressPromise>+ProfilerParent::RequestGatherProfileProgress(base::ProcessId aChildPid) {+ RefPtr<SingleProcessProgressPromise> promise;+ ProfilerParentTracker::ForChild(+ aChildPid, [&promise](ProfilerParent* profilerParent) {+ promise = profilerParent->SendGetGatherProfileProgress();+ });+ return promise; } // Magic value for ProfileBufferChunkManagerUpdate::unreleasedBytes meaning
Analyzing the provided code diff for security fixes: 1. Vulnerability Existed: no No specific vulnerability found in the diff. The changes appear to be functional improvements rather than security fixes. The main changes are: - Added ProfilerParentCount() method to track non-destroyed ProfilerParents - Modified GatherProfiles() to return child process IDs along with promises - Added RequestGatherProfileProgress() for progress tracking 2. Vulnerability Existed: not sure Potential Information Exposure [File] tools/profiler/gecko/ProfilerParent.cpp [Lines 628-663] The changes expose child process IDs through the GatherProfiles() return value and new RequestGatherProfileProgress() method. While this doesn't appear to be a security vulnerability (as process IDs are typically not considered highly sensitive), it's worth noting the increased exposure of process information. Old Code: nsTArray<RefPtr<ProfilerParent::SingleProcessProfilePromise>> ProfilerParent::GatherProfiles() { if (!NS_IsMainThread()) { return nsTArray<RefPtr<ProfilerParent::SingleProcessProfilePromise>>(); } nsTArray<RefPtr<SingleProcessProfilePromise>> results; ProfilerParentTracker::Enumerate([&](ProfilerParent* profilerParent) { results.AppendElement(profilerParent->SendGatherProfile()); }); return results; } Fixed Code: nsTArray<ProfilerParent::SingleProcessProfilePromiseAndChildPid> ProfilerParent::GatherProfiles() { nsTArray<SingleProcessProfilePromiseAndChildPid> results; if (!NS_IsMainThread()) { return results; } results.SetCapacity(ProfilerParentTracker::ProfilerParentCount()); ProfilerParentTracker::Enumerate([&](ProfilerParent* profilerParent) { results.AppendElement(SingleProcessProfilePromiseAndChildPid{ profilerParent->SendGatherProfile(), profilerParent->mChildPid}); }); return results; } /* static */ RefPtr<ProfilerParent::SingleProcessProgressPromise> ProfilerParent::RequestGatherProfileProgress(base::ProcessId aChildPid) { RefPtr<SingleProcessProgressPromise> promise; ProfilerParentTracker::ForChild( aChildPid, [&promise](ProfilerParent* profilerParent) { promise = profilerParent->SendGetGatherProfileProgress(); }); return promise; }
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/css/css-color/color-mix-non-srgb-001.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-color/color-mix-non-srgb-001.html@@ -4,13 +4,12 @@ <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1703356"> <link rel="author" href="mailto:[email protected]" title="Barret Rennie"> <link rel="author" href="https://mozilla.org" title="Mozilla">-<script src="/resources/testharness.js"></script>-<script src="/resources/testharnessreport.js"></script>+<link rel="match" href="./color-mix-non-srgb-001-ref.html"> <style> div { color: black; }+.test { background-color: black; width: 14em; height: 1em; margin-top: 0; margin-bottom: 0; } </style>-<div id="test"></div>-<div id="ref"></div>+<body> <script> const TEST_CASES = [ ["red", "green", "xyz", "rgb(188, 92, 0)"],@@ -24,21 +23,13 @@ ["red 90%", "green", "lch", "rgb(235, 59, 0)"], ];-const testElement = document.getElementById("test");-const refElement = document.getElementById("ref");-const testStyle = getComputedStyle(testElement);-const refStyle = getComputedStyle(refElement);+for (let [from, to, space, expected] of TEST_CASES) {+ const value = `color-mix(in ${space}, ${from}, ${to})`;-for (let [from, to, space, expected] of TEST_CASES) {- test(function() {- const value = `color-mix(in ${space}, ${from}, ${to})`;-- testElement.style.backgroundColor = "";- testElement.style.backgroundColor = value;- refElement.style.backgroundColor = expected;-- assert_not_equals(testElement.style.backgroundColor, "", `Should parse ${value}`);- assert_equals(testStyle.backgroundColor, refStyle.backgroundColor, `Colors should match for ${value}`);- }, `From ${from} to ${to} in ${space} color space`);+ const element = document.createElement("div")+ element.classList.add('test')+ element.style.backgroundColor = value;+ document.body.appendChild(element) } </script>+</body>
After analyzing the provided code diff, here's the security analysis following your requested format: Vulnerability Existed: no No security vulnerabilities were found in this diff. The changes appear to be test-related modifications rather than security fixes. Additional Details: 1. The diff shows changes to a test file (color-mix-non-srgb-001.html) 2. The main changes are: - Removal of testharness.js and testharnessreport.js includes - Addition of a reference match link - Restructuring of the test cases to use dynamically created elements - Removal of assertion-based testing in favor of visual matching 3. These changes appear to be test infrastructure improvements rather than security fixes 4. No security-related patterns (XSS, injection, etc.) were modified or introduced The changes seem focused on making the tests more maintainable and potentially more reliable through visual matching rather than programmatic assertions.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css@@ -1,7 +1,6 @@ /** * Bug 1605611 - Cannot change Departure/arrival dates in Google Maps on Android *- * This is step 3 - see injections/js/bug1605611-maps.google.com-directions-time.js. * Google Maps calls .click() on a datetime-local input element, with the intent * to show the native date picker. But the native date picker does not appear, * because that only happens when a user initiated the click.@@ -11,8 +10,7 @@ * the native date picker when they tap on the relevant UI in Google Maps. */-.ml-route-options-picker-content-button- > #ml-route-options-time-selector-time-input {+.ml-edit-mode-grey-icon > input { z-index: 1; /* overrides -5000, to show on top of the icon AND the rendered date */ opacity: 0; /* let the input element be fully transparent */ width: 100vw; /* render over the rendered date from Maps' dialog */
Let me analyze this CSS file diff for potential security issues. Vulnerability Existed: no [No specific vulnerability found] [browser/extensions/webcompat/injections/css/bug1605611-maps.google.com-directions-time.css] [All lines] [Old CSS selector and comments] [New CSS selector and comments] Additional details: 1. The changes appear to be purely cosmetic/functional rather than security-related: - Removed a comment about "step 3" referencing a JS file - Changed the CSS selector from `.ml-route-options-picker-content-button > #ml-route-options-time-selector-time-input` to `.ml-edit-mode-grey-icon > input` - Kept the same styling properties (z-index, opacity, width) 2. This is a web compatibility fix for Google Maps functionality on Android, not a security patch. 3. No security vulnerabilities are apparent in either the old or new code, as this is just CSS styling adjustments to fix UI interaction issues. 4. The changes don't introduce any new security concerns either, as they maintain the same level of element visibility control.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.isPointInPath.subpath.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.isPointInPath.subpath.worker.js@@ -13,8 +13,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.rect(0, 0, 20, 20); ctx.beginPath();
Analysis of the provided code diff: 1. Vulnerability Existed: no No specific vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.isPointInPath.subpath.worker.js [Lines] 13-14 Old Code: var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); Fixed Code: var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); Additional Notes: - The change appears to be a simple variable renaming from `offscreenCanvas` to `canvas` - No security-related changes or vulnerability fixes are evident in this diff - This is likely a code style/consistency improvement rather than a security fix
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/xpcom/threads/nsThread.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/xpcom/threads/nsThread.h@@ -47,6 +47,7 @@ class nsIRunnable; class nsLocalExecutionRecord; class nsThreadEnumerator;+class nsThreadShutdownContext; // See https://www.w3.org/TR/longtasks #define LONGTASK_BUSY_WINDOW_MS 50@@ -219,7 +220,7 @@ uint32_t RecursionDepth() const;- void ShutdownComplete(NotNull<struct nsThreadShutdownContext*> aContext);+ void ShutdownComplete(NotNull<nsThreadShutdownContext*> aContext); void WaitForAllAsynchronousShutdowns();@@ -292,7 +293,7 @@ return already_AddRefed<nsIThreadObserver>(obs); }- struct nsThreadShutdownContext* ShutdownInternal(bool aSync);+ already_AddRefed<nsThreadShutdownContext> ShutdownInternal(bool aSync); friend class nsThreadManager; friend class nsThreadPool;@@ -313,19 +314,11 @@ RefPtr<mozilla::SynchronizedEventQueue> mEvents; RefPtr<mozilla::ThreadEventTarget> mEventTarget;- // The shutdown contexts for any other threads we've asked to shut down.- using ShutdownContexts =- nsTArray<mozilla::UniquePtr<struct nsThreadShutdownContext>>;-- // Helper for finding a ShutdownContext in the contexts array.- struct ShutdownContextsComp {- bool Equals(const ShutdownContexts::elem_type& a,- const ShutdownContexts::elem_type::Pointer b) const;- };-- ShutdownContexts mRequestedShutdownContexts;+ // The number of outstanding nsThreadShutdownContext started by this thread.+ // The thread will not be allowed to exit until this number reaches 0.+ uint32_t mOutstandingShutdownContexts; // The shutdown context for ourselves.- struct nsThreadShutdownContext* mShutdownContext;+ RefPtr<nsThreadShutdownContext> mShutdownContext; mozilla::CycleCollectedJSContext* mScriptObserver;@@ -370,26 +363,40 @@ mozilla::SimpleTaskQueue mDirectTasks; };-struct nsThreadShutdownContext {+class nsThreadShutdownContext final : public nsIThreadShutdown {+ public:+ NS_DECL_THREADSAFE_ISUPPORTS+ NS_DECL_NSITHREADSHUTDOWN++ private:+ friend class nsThread;+ friend class nsThreadShutdownEvent;+ friend class nsThreadShutdownAckEvent;+ nsThreadShutdownContext(NotNull<nsThread*> aTerminatingThread,- NotNull<nsThread*> aJoiningThread,- bool aAwaitingShutdownAck)+ nsThread* aJoiningThread) : mTerminatingThread(aTerminatingThread), mTerminatingPRThread(aTerminatingThread->GetPRThread()),- mJoiningThread(aJoiningThread),- mAwaitingShutdownAck(aAwaitingShutdownAck),- mIsMainThreadJoining(NS_IsMainThread()) {- MOZ_COUNT_CTOR(nsThreadShutdownContext);- }- MOZ_COUNTED_DTOR(nsThreadShutdownContext)-- // NB: This will be the last reference.- NotNull<RefPtr<nsThread>> mTerminatingThread;+ mJoiningThread(aJoiningThread,+ "nsThreadShutdownContext::mJoiningThread") {}++ ~nsThreadShutdownContext() = default;++ // Must be called on the joining thread.+ void MarkCompleted();++ // NB: This may be the last reference.+ NotNull<RefPtr<nsThread>> const mTerminatingThread; PRThread* const mTerminatingPRThread;- NotNull<nsThread*> MOZ_UNSAFE_REF(- "Thread manager is holding reference to joining thread") mJoiningThread;- bool mAwaitingShutdownAck;- bool mIsMainThreadJoining;++ // May only be accessed on the joining thread.+ bool mCompleted = false;+ nsTArray<nsCOMPtr<nsIRunnable>> mCompletionCallbacks;++ // The thread waiting for this thread to shut down. Will either be cleared by+ // the joining thread if `StopWaitingAndLeakThread` is called or by the+ // terminating thread upon exiting and notifying the joining thread.+ mozilla::DataMutex<RefPtr<nsThread>> mJoiningThread; }; // This RAII class controls the duration of the associated nsThread's local
Here's the security analysis of the provided code diff: 1. Vulnerability Existed: yes Improper Thread Shutdown Handling [xpcom/threads/nsThread.h] [Lines 219, 292, 313-325, 370-394] Old Code: - Used raw pointers for shutdown contexts - Manual memory management with UniquePtr - Unsafe reference to joining thread (MOZ_UNSAFE_REF) - Complex shutdown context tracking with custom comparator Fixed Code: - Uses RefPtr for thread references - Simplified shutdown tracking with reference counting - Added proper thread safety with DataMutex - Implemented nsIThreadShutdown interface for better resource management 2. Vulnerability Existed: yes Potential Race Condition in Thread Shutdown [xpcom/threads/nsThread.h] [Lines 370-394] Old Code: - No clear synchronization for shutdown completion - Manual tracking of shutdown contexts - No clear mechanism for completion callbacks Fixed Code: - Added explicit MarkCompleted() method - Added completion callbacks array - Better thread safety with DataMutex for joining thread - Clear ownership semantics with const members 3. Vulnerability Existed: not sure Possible Resource Leak [xpcom/threads/nsThread.h] [Lines 370-394] Old Code: - Manual memory management could lead to leaks - No clear ownership of shutdown contexts Fixed Code: - Uses RAII pattern with destructor - Reference counting through RefPtr - Clear ownership through const members The main security improvements appear to be: 1. Moving from manual memory management to reference-counted smart pointers 2. Adding proper thread synchronization for shutdown operations 3. Implementing a more robust shutdown protocol with completion tracking 4. Removing unsafe thread references and replacing them with properly protected ones These changes help prevent: - Use-after-free vulnerabilities during thread shutdown - Race conditions in shutdown sequence - Potential memory leaks during thread termination - Improper thread reference handling
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50);@@ -36,10 +36,10 @@ var pattern = ctx.createPattern(bitmap, ""); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 200, 50);- _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");- _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");- _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");- _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255");+ _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");+ _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");+ _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");+ _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); }, t_fail); }).then(t_pass, t_fail);
After analyzing the provided code diff, here's the security assessment: Vulnerability Existed: no [Variable Renaming] [testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.empty.html] [Lines 17-18, 36-39] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); The changes appear to be purely cosmetic, renaming the variable `offscreenCanvas` to `canvas` for consistency or readability. There are no security-related changes in this diff, no vulnerabilities being fixed, and no security implications from this change. The functionality remains exactly the same, only the variable name has been updated.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/widget/gtk/WidgetStyleCache.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/widget/gtk/WidgetStyleCache.cpp@@ -725,8 +725,6 @@ return CreateProgressWidget(); case MOZ_GTK_RADIOBUTTON_CONTAINER: return CreateRadiobuttonWidget();- case MOZ_GTK_SCROLLBAR_HORIZONTAL:- return CreateScrollbarWidget(aAppearance, GTK_ORIENTATION_HORIZONTAL); case MOZ_GTK_SCROLLBAR_VERTICAL: return CreateScrollbarWidget(aAppearance, GTK_ORIENTATION_VERTICAL); case MOZ_GTK_MENUBAR:@@ -1065,17 +1063,6 @@ if (style) return style; switch (aNodeType) {- case MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL:- style = CreateChildCSSNode("contents", MOZ_GTK_SCROLLBAR_HORIZONTAL);- break;- case MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL:- style = CreateChildCSSNode(GTK_STYLE_CLASS_TROUGH,- MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL);- break;- case MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL:- style = CreateChildCSSNode(GTK_STYLE_CLASS_SLIDER,- MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL);- break; case MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL: style = CreateChildCSSNode("contents", MOZ_GTK_SCROLLBAR_VERTICAL); break;@@ -1086,10 +1073,6 @@ case MOZ_GTK_SCROLLBAR_THUMB_VERTICAL: style = CreateChildCSSNode(GTK_STYLE_CLASS_SLIDER, MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL);- break;- case MOZ_GTK_SCROLLBAR_BUTTON:- style = CreateChildCSSNode(GTK_STYLE_CLASS_BUTTON,- MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL); break; case MOZ_GTK_RADIOBUTTON: style = CreateChildCSSNode(GTK_STYLE_CLASS_RADIO,@@ -1254,14 +1237,6 @@ if (style) return style; switch (aNodeType) {- case MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL:- style = CreateSubStyleWithClass(MOZ_GTK_SCROLLBAR_HORIZONTAL,- GTK_STYLE_CLASS_TROUGH);- break;- case MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL:- style = CreateSubStyleWithClass(MOZ_GTK_SCROLLBAR_HORIZONTAL,- GTK_STYLE_CLASS_SLIDER);- break; case MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL: style = CreateSubStyleWithClass(MOZ_GTK_SCROLLBAR_VERTICAL, GTK_STYLE_CLASS_TROUGH);
Based on the provided diff, here's the analysis: 1. Vulnerability Existed: not sure [Horizontal Scrollbar Widget Removal] [widget/gtk/WidgetStyleCache.cpp] [Lines 725-726] [Old Code] case MOZ_GTK_SCROLLBAR_HORIZONTAL: return CreateScrollbarWidget(aAppearance, GTK_ORIENTATION_HORIZONTAL); [Fixed Code] [Removed] 2. Vulnerability Existed: not sure [Horizontal Scrollbar Contents Removal] [widget/gtk/WidgetStyleCache.cpp] [Lines 1065-1068] [Old Code] case MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL: style = CreateChildCSSNode("contents", MOZ_GTK_SCROLLBAR_HORIZONTAL); break; [Fixed Code] [Removed] 3. Vulnerability Existed: not sure [Horizontal Scrollbar Trough Removal] [widget/gtk/WidgetStyleCache.cpp] [Lines 1069-1071] [Old Code] case MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL: style = CreateChildCSSNode(GTK_STYLE_CLASS_TROUGH, MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL); break; [Fixed Code] [Removed] 4. Vulnerability Existed: not sure [Horizontal Scrollbar Thumb Removal] [widget/gtk/WidgetStyleCache.cpp] [Lines 1072-1074] [Old Code] case MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL: style = CreateChildCSSNode(GTK_STYLE_CLASS_SLIDER, MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL); break; [Fixed Code] [Removed] 5. Vulnerability Existed: not sure [Scrollbar Button Removal] [widget/gtk/WidgetStyleCache.cpp] [Lines 1084-1086] [Old Code] case MOZ_GTK_SCROLLBAR_BUTTON: style = CreateChildCSSNode(GTK_STYLE_CLASS_BUTTON, MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL); break; [Fixed Code] [Removed] 6. Vulnerability Existed: not sure [Horizontal Scrollbar Trough Style Removal] [widget/gtk/WidgetStyleCache.cpp] [Lines 1237-1239] [Old Code] case MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL: style = CreateSubStyleWithClass(MOZ_GTK_SCROLLBAR_HORIZONTAL, GTK_STYLE_CLASS_TROUGH); break; [Fixed Code] [Removed] 7. Vulnerability Existed: not sure [Horizontal Scrollbar Thumb Style Removal] [widget/gtk/WidgetStyleCache.cpp] [Lines 1240-1242] [Old Code] case MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL: style = CreateSubStyleWithClass(MOZ_GTK_SCROLLBAR_HORIZONTAL, GTK_STYLE_CLASS_SLIDER); break; [Fixed Code] [Removed] The diff shows removal of horizontal scrollbar-related code and some scrollbar button code. While this appears to be a functional change (removing support for horizontal scrollbars), I can't determine if this was fixing a specific security vulnerability without more context. The changes are consistent throughout the file, removing all horizontal scrollbar-related cases.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/devtools/shared/webconsole/test/chrome/test_basics.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/shared/webconsole/test/chrome/test_basics.html@@ -23,7 +23,6 @@ let {state, response} = await attachConsoleToTab(["PageError"]); is(response.startedListeners.length, 1, "startedListeners.length"); is(response.startedListeners[0], "PageError", "startedListeners: PageError");- ok(response.nativeConsoleAPI, "nativeConsoleAPI"); await closeDebugger(state); top.console_ = top.console;@@ -36,7 +35,6 @@ isnot(startedListeners.indexOf("ConsoleAPI"), -1, "startedListeners: ConsoleAPI"); is(startedListeners.indexOf("foo"), -1, "startedListeners: no foo");- ok(!response.nativeConsoleAPI, "!nativeConsoleAPI"); top.console = top.console_; response = await state.webConsoleFront.stopListeners(["ConsoleAPI", "foo"]);@@ -48,7 +46,6 @@ is(response.startedListeners.length, 1, "startedListeners.length"); is(response.startedListeners[0], "ConsoleAPI", "startedListeners: ConsoleAPI");- ok(response.nativeConsoleAPI, "nativeConsoleAPI"); top.console = top.console_; delete top.console_;
Based on the provided diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be removing assertions about `nativeConsoleAPI` from test cases, which seems more like test cleanup than security fixes. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found in the diff. The changes are test code modifications removing assertions about nativeConsoleAPI. Additional Details: - The changes are in test files (test_basics.html) - The removed lines were checking the value of `response.nativeConsoleAPI` in assertions - No security-related functionality was modified - No sensitive data handling or security checks were altered Since this is test code and the changes don't affect any security mechanisms or introduce/remove security checks, I don't believe any vulnerabilities are being addressed here. If you'd like me to analyze a different diff that might contain security fixes, please provide that instead.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/browser/components/pocket/webpack.config.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/components/pocket/webpack.config.js@@ -27,4 +27,16 @@ resolve: { extensions: [".js", ".jsx"], },+ optimization: {+ minimize: false,+ splitChunks: {+ cacheGroups: {+ vendor: {+ test: /[\\/]node_modules[\\/](react|react-dom|scheduler|object-assign)[\\/]/,+ name: "vendor",+ chunks: "all",+ },+ },+ },+ }, };
Let me analyze the provided webpack configuration diff for potential security implications. Vulnerability Existed: not sure [Potential Build Process Vulnerability] [browser/components/pocket/webpack.config.js] [Lines 27-38] [Old Code] resolve: { extensions: [".js", ".jsx"], }, [Fixed Code] resolve: { extensions: [".js", ".jsx"], }, optimization: { minimize: false, splitChunks: { cacheGroups: { vendor: { test: /[\\/]node_modules[\\/](react|react-dom|scheduler|object-assign)[\\/]/, name: "vendor", chunks: "all", }, }, }, }, Additional Details: The change adds optimization configuration to the webpack build process. While this isn't directly a security vulnerability, there are some security considerations: 1. Setting `minimize: false` means the code won't be minified, which could make debugging easier but also makes the code more readable to potential attackers 2. The vendor chunk splitting could potentially help with security by isolating third-party dependencies 3. The change doesn't appear to introduce any new vulnerabilities, but rather modifies the build process configuration No clear security vulnerability is introduced or fixed here, but build configuration changes can sometimes have security implications in terms of code exposure or dependency management.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/dom/system/tests/ioutils/test_ioutils_remove.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/system/tests/ioutils/test_ioutils_remove.html@@ -17,8 +17,7 @@ add_task(async function test_create_and_remove_file() { info("Test creating and removing a single file");- const tmpDir = await PathUtils.getTempDir();- const tmpFileName = PathUtils.join(tmpDir, "test_ioutils_create_and_remove.tmp");+ const tmpFileName = PathUtils.join(PathUtils.tempDir, "test_ioutils_create_and_remove.tmp"); await IOUtils.write(tmpFileName, new Uint8Array(0)); ok(await fileExists(tmpFileName), `Expected file ${tmpFileName} to exist`);@@ -26,17 +25,16 @@ ok(!await fileExists(tmpFileName), "IOUtils::remove can remove files"); info("Test creating and removing an empty directory");- const tmpDirName = PathUtils.join(tmpDir, "test_ioutils_create_and_remove.tmp.d");- await IOUtils.makeDirectory(tmpDirName);- ok(await dirExists(tmpDirName), `Expected directory ${tmpDirName} to exist`);+ const tempDirName = PathUtils.join(PathUtils.tempDir, "test_ioutils_create_and_remove.tmp.d");+ await IOUtils.makeDirectory(tempDirName);+ ok(await dirExists(tempDirName), `Expected directory ${tempDirName} to exist`);- await IOUtils.remove(tmpDirName);- ok(!await dirExists(tmpDirName), "IOUtils::remove can remove empty directories");+ await IOUtils.remove(tempDirName);+ ok(!await dirExists(tempDirName), "IOUtils::remove can remove empty directories"); }); add_task(async function test_remove_non_existing() {- const tmpDir = await PathUtils.getTempDir();- const tmpFileName = PathUtils.join(tmpDir, "test_ioutil_remove_non_existing.tmp");+ const tmpFileName = PathUtils.join(PathUtils.tempDir, "test_ioutil_remove_non_existing.tmp"); ok(!await fileExists(tmpFileName), `Expected file ${tmpFileName} not to exist`); await IOUtils.remove(tmpFileName, { ignoreAbsent: true });@@ -51,8 +49,7 @@ }); add_task(async function test_remove_recursive() {- const tmpDir = await PathUtils.getTempDir();- const tmpParentDir = PathUtils.join(tmpDir, "test_ioutils_remove.tmp.d");+ const tmpParentDir = PathUtils.join(PathUtils.tempDir, "test_ioutils_remove.tmp.d"); const tmpChildDir = PathUtils.join(tmpParentDir, "child.tmp.d"); const tmpTopLevelFileName = PathUtils.join(tmpParentDir, "top.tmp"); const tmpNestedFileName = PathUtils.join(tmpChildDir, "nested.tmp");
Analyzing the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be primarily code style and efficiency improvements, switching from `PathUtils.getTempDir()` to directly using `PathUtils.tempDir`. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found [dom/system/tests/ioutils/test_ioutils_remove.html] [Lines 17-51] [Old Code: Used await PathUtils.getTempDir() for each test case] [Fixed Code: Uses PathUtils.tempDir directly] The changes made: 1. Replaced repeated calls to `await PathUtils.getTempDir()` with direct access to `PathUtils.tempDir` 2. Renamed `tmpDirName` to `tempDirName` for consistency 3. Simplified the code by removing redundant temp directory fetches These changes improve efficiency (by avoiding repeated async calls) and maintainability, but don't appear to address any security vulnerabilities. The test functionality remains the same, just implemented more efficiently. No other vulnerabilities were identified in the diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/netwerk/protocol/http/NetworkMarker.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/netwerk/protocol/http/NetworkMarker.cpp@@ -19,7 +19,7 @@ uint64_t aChannelId, NetworkLoadType aType, mozilla::TimeStamp aStart, mozilla::TimeStamp aEnd, int64_t aCount, mozilla::net::CacheDisposition aCacheDisposition, uint64_t aInnerWindowID,- const mozilla::net::TimingStruct* aTimings,+ bool aIsPrivateBrowsing, const mozilla::net::TimingStruct* aTimings, UniquePtr<ProfileChunkedBuffer> aSource, const Maybe<nsDependentCString>& aContentType, nsIURI* aRedirectURI, uint32_t aRedirectFlags, uint64_t aRedirectChannelId) {@@ -54,7 +54,7 @@ mozilla::TimeStamp aEnd, int64_t aID, const ProfilerString8View& aURI, const ProfilerString8View& aRequestMethod, NetworkLoadType aType, int32_t aPri, int64_t aCount, net::CacheDisposition aCacheDisposition,- const net::TimingStruct& aTimings,+ bool aIsPrivateBrowsing, const net::TimingStruct& aTimings, const ProfilerString8View& aRedirectURI, const ProfilerString8View& aContentType, uint32_t aRedirectFlags, int64_t aRedirectChannelId) {@@ -94,6 +94,10 @@ aWriter.StringProperty("contentType", aContentType); } else { aWriter.NullProperty("contentType");+ }++ if (aIsPrivateBrowsing) {+ aWriter.BoolProperty("isPrivateBrowsing", aIsPrivateBrowsing); } if (aType != NetworkLoadType::LOAD_START) {@@ -174,7 +178,8 @@ MarkerInnerWindowId(aInnerWindowID)}, NetworkMarker{}, aStart, aEnd, static_cast<int64_t>(aChannelId), spec, aRequestMethod, aType, aPriority, aCount, aCacheDisposition,- aTimings ? *aTimings : scEmptyNetTimingStruct, redirect_spec,+ aIsPrivateBrowsing, aTimings ? *aTimings : scEmptyNetTimingStruct,+ redirect_spec, aContentType ? ProfilerString8View(*aContentType) : ProfilerString8View(), aRedirectFlags, aRedirectChannelId); }
I'll analyze the code diff following the specified format: 1. Vulnerability Existed: not sure [Potential Information Leak] [netwerk/protocol/http/NetworkMarker.cpp] [Lines 19-20, 54-55, 94-96] [Old Code] uint64_t aChannelId, NetworkLoadType aType, mozilla::TimeStamp aStart, mozilla::TimeStamp aEnd, int64_t aCount, mozilla::net::CacheDisposition aCacheDisposition, uint64_t aInnerWindowID, const mozilla::net::TimingStruct* aTimings, [Fixed Code] uint64_t aChannelId, NetworkLoadType aType, mozilla::TimeStamp aStart, mozilla::TimeStamp aEnd, int64_t aCount, mozilla::net::CacheDisposition aCacheDisposition, uint64_t aInnerWindowID, bool aIsPrivateBrowsing, const mozilla::net::TimingStruct* aTimings, Additional Details: - The diff adds a new parameter `aIsPrivateBrowsing` to track private browsing status - While not a direct security fix, this change helps prevent potential information leaks by allowing the profiler to know when network activity occurs in private browsing mode - The change ensures private browsing data isn't accidentally included in profiling data - However, without more context about how this data is used, I can't be certain if this was fixing an actual vulnerability or just adding preventative measures Note: This doesn't appear to fix a specific named vulnerability, but rather improves privacy protections in the profiling system. The change helps maintain the privacy guarantees of private browsing mode by properly marking such network activity.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html@@ -18,8 +18,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -36,7 +36,7 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0);- _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); }, t_fail); }).then(t_pass, t_fail);
Here's the analysis of the provided code diff: 1. Vulnerability Existed: no No specific vulnerability [testing/web-platform/tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html] [Lines 18-19, 36] Old Code: var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); Fixed Code: var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); 2. Vulnerability Existed: no No specific vulnerability [testing/web-platform/tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html] [Line 36] Old Code: _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); Fixed Code: _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); The changes appear to be purely variable name changes (from 'offscreenCanvas' to 'canvas') with no security implications. The functionality remains identical, and there are no security vulnerabilities being addressed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/webdriver/tests/support/fixtures.py+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/webdriver/tests/support/fixtures.py@@ -31,6 +31,15 @@ )+def pytest_sessionfinish(session, exitstatus):+ # Cleanup at the end of a test run+ global _current_session++ if _current_session is not None:+ _current_session.end()+ _current_session = None++ @pytest.fixture def capabilities(): """Default capabilities to use for a new WebDriver session."""@@ -59,23 +68,38 @@ return HTTPRequest(configuration["host"], configuration["port"])[email protected]-def server_config():- with open(os.environ.get("WD_SERVER_CONFIG_FILE"), "r") as f:[email protected](scope="session")+def full_configuration():+ """Get test configuration information. Keys are:++ host - WebDriver server host.+ port - WebDriver server port.+ capabilites - Capabilites passed when creating the WebDriver session+ webdriver - Dict with keys `binary`: path to webdriver binary, and+ `args`: Additional command line arguments passed to the webdriver+ binary. This doesn't include all the required arguments e.g. the+ port.+ wptserve - Configuration of the wptserve servers."""++ with open(os.environ.get("WDSPEC_CONFIG_FILE"), "r") as f: return json.load(f) @pytest.fixture(scope="session")-def configuration():- host = os.environ.get("WD_HOST", defaults.DRIVER_HOST)- port = int(os.environ.get("WD_PORT", str(defaults.DRIVER_PORT)))- capabilities = json.loads(os.environ.get("WD_CAPABILITIES", "{}"))-- return {- "host": host,- "port": port,- "capabilities": capabilities- }+def server_config(full_configuration):+ return full_configuration["wptserve"]++[email protected](scope="session")+def configuration(full_configuration):+ """Configuation minus server config.++ This makes logging easier to read."""++ config = full_configuration.copy()+ del config["wptserve"]++ return config async def reset_current_session_if_necessary(caps):
Analysis of the code diff: 1. Vulnerability Existed: not sure Potential File Path Manipulation [File] testing/web-platform/tests/webdriver/tests/support/fixtures.py [Lines] 59-68 [Old Code] ```python @pytest.fixture def server_config(): with open(os.environ.get("WD_SERVER_CONFIG_FILE"), "r") as f: return json.load(f) ``` [Fixed Code] ```python @pytest.fixture(scope="session") def full_configuration(): with open(os.environ.get("WDSPEC_CONFIG_FILE"), "r") as f: return json.load(f) ``` Additional Details: The change involves using a different environment variable name and adding session scope, but there's still potential for path manipulation if the environment variable isn't properly sanitized. 2. Vulnerability Existed: not sure Potential Session Management Issue [File] testing/web-platform/tests/webdriver/tests/support/fixtures.py [Lines] 31-38 [Old Code] ```python (No previous session cleanup code) ``` [Fixed Code] ```python def pytest_sessionfinish(session, exitstatus): # Cleanup at the end of a test run global _current_session if _current_session is not None: _current_session.end() _current_session = None ``` Additional Details: The addition of session cleanup code suggests there might have been a potential resource leak or session persistence issue in the previous version. 3. Vulnerability Existed: not sure Potential Information Exposure [File] testing/web-platform/tests/webdriver/tests/support/fixtures.py [Lines] 68-98 [Old Code] ```python @pytest.fixture(scope="session") def configuration(): host = os.environ.get("WD_HOST", defaults.DRIVER_HOST) port = int(os.environ.get("WD_PORT", str(defaults.DRIVER_PORT))) capabilities = json.loads(os.environ.get("WD_CAPABILITIES", "{}")) return { "host": host, "port": port, "capabilities": capabilities } ``` [Fixed Code] ```python @pytest.fixture(scope="session") def configuration(full_configuration): config = full_configuration.copy() del config["wptserve"] return config ``` Additional Details: The change in configuration handling might be related to better information separation, though it's unclear if this was fixing a specific security issue.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.html@@ -17,13 +17,13 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d');-offscreenCanvas.width = ' 100';-offscreenCanvas.height = ' 100';-_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100");-_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100");+canvas.width = ' 100';+canvas.height = ' 100';+_assertSame(canvas.width, 100, "canvas.width", "100");+_assertSame(canvas.height, 100, "canvas.height", "100"); t.done(); });
After analyzing the provided code diff, I don't see any security-related fixes. The changes appear to be primarily variable renaming and test case maintenance. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.html] [Lines 17-25] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); offscreenCanvas.width = ' 100'; offscreenCanvas.height = ' 100'; _assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); _assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); canvas.width = ' 100'; canvas.height = ' 100'; _assertSame(canvas.width, 100, "canvas.width", "100"); _assertSame(canvas.height, 100, "canvas.height", "100"); The changes consist of: 1. Renaming the variable from `offscreenCanvas` to `canvas` 2. Updating all references to the renamed variable 3. The test logic remains identical, just with the new variable name No security vulnerabilities were addressed in this diff. The modification appears to be purely for code consistency or readability purposes.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.