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/testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.set.zero.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.idl.set.zero.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 = 0;-offscreenCanvas.height = 0;-_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0");-_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0");+canvas.width = 0;+canvas.height = 0;+_assertSame(canvas.width, 0, "canvas.width", "0");+_assertSame(canvas.height, 0, "canvas.height", "0"); t.done(); });
Based on the provided diff, I'll analyze it for potential security vulnerabilities: 1. Vulnerability Existed: no No specific vulnerability found [File] [Lines 17-25] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); offscreenCanvas.width = 0; offscreenCanvas.height = 0; _assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); _assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); canvas.width = 0; canvas.height = 0; _assertSame(canvas.width, 0, "canvas.width", "0"); _assertSame(canvas.height, 0, "canvas.height", "0"); Additional Details: - The changes appear to be purely variable name refactoring (from 'offscreenCanvas' to 'canvas') - No security-related changes were made - The functionality remains the same (creating an OffscreenCanvas and testing its size attributes) - No known vulnerabilities are being addressed in this change
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/js/src/jit-test/tests/stream/reader-closedPromise-handled.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/js/src/jit-test/tests/stream/reader-closedPromise-handled.js@@ -1,3 +1,4 @@+// |jit-test| skip-if: !this.hasOwnProperty("ReadableStream") // Creating a reader from an errored stream should not result in a promise // being tracked as unhandled.
Based on the provided diff, here's the analysis: Vulnerability Existed: no No specific vulnerability [File] js/src/jit-test/tests/stream/reader-closedPromise-handled.js [Lines] 1 [Old Code] // Creating a reader from an errored stream should not result in a promise // being tracked as unhandled. [Fixed Code] // |jit-test| skip-if: !this.hasOwnProperty("ReadableStream") // Creating a reader from an errored stream should not result in a promise // being tracked as unhandled. Additional Details: The change appears to be a test modification rather than a security fix. It adds a conditional skip for the test case when the environment doesn't have the ReadableStream property. This is more of a test robustness improvement than a security vulnerability fix. No specific vulnerability is being addressed here.
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/transformations/2d.transformation.transform.multiply.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/transformations/2d.transformation.transform.multiply.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.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50);@@ -22,7 +22,7 @@ ctx.transform(-2,1, 3/2,-1/2, 1,-2); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't find any security vulnerabilities. The changes appear to be purely variable renaming for better clarity/consistency. Here's the analysis: 1. Vulnerability Existed: no Variable Renaming [File] [Lines 13-14, 22] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); The changes simply rename the variable from `offscreenCanvas` to `canvas` without altering any security-relevant functionality. The actual canvas operations and assertions remain identical in behavior. No security vulnerabilities were fixed 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/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.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.stroke.prune.arc.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.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -30,7 +30,7 @@ ctx.moveTo(60, 25); ctx.arc(50, 25, 10, 0, 0, false); ctx.stroke();-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
Based on the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely variable renaming and don't involve any security-related modifications. Here's the analysis: 1. Vulnerability Existed: no Variable Renaming [File] [Lines 13-14, 30] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); The changes simply rename the variable `offscreenCanvas` to `canvas` for consistency or brevity, without any security implications. No security vulnerability patterns (like XSS, injection, etc.) are present in either the old or new code.
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/shadows/2d.shadow.enable.x.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/shadows/2d.shadow.enable.x.html@@ -17,15 +17,15 @@ }); 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.globalCompositeOperation = 'destination-atop'; ctx.shadowColor = '#0f0'; ctx.shadowOffsetX = 0.1; ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50);-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely cosmetic/refactoring changes (variable renaming) rather than security-related fixes. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/shadows/2d.shadow.enable.x.html] [17-25] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); The changes simply rename the variable `offscreenCanvas` to `canvas` throughout the file, which doesn't appear to address any security vulnerability. The functionality remains exactly the same.
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/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html@@ -81,8 +81,8 @@ const selectMenu0Popup = document.getElementById("selectMenu0-popup"); await clickOn(selectMenu0);- assert_equals(Math.round(selectMenu0.getBoundingClientRect().bottom), Math.round(selectMenu0Popup.getBoundingClientRect().top));- assert_equals(Math.round(selectMenu0.getBoundingClientRect().left), Math.round(selectMenu0Popup.getBoundingClientRect().left));+ assert_equals(Math.abs(Math.trunc(selectMenu0.getBoundingClientRect().bottom - selectMenu0Popup.getBoundingClientRect().top)), 0);+ assert_equals(Math.abs(Math.trunc(selectMenu0.getBoundingClientRect().left - selectMenu0Popup.getBoundingClientRect().left)), 0); }, "The popup should be bottom left positioned"); promise_test(async () => {@@ -90,8 +90,8 @@ const selectMenu1Popup = document.getElementById("selectMenu1-popup"); await clickOn(selectMenu1);- assert_equals(Math.round(selectMenu1.getBoundingClientRect().top), Math.round(selectMenu1Popup.getBoundingClientRect().bottom));- assert_equals(Math.round(selectMenu1.getBoundingClientRect().left), Math.round(selectMenu1Popup.getBoundingClientRect().left));+ assert_equals(Math.abs(Math.trunc(selectMenu1.getBoundingClientRect().top - selectMenu1Popup.getBoundingClientRect().bottom)), 0);+ assert_equals(Math.abs(Math.trunc(selectMenu1.getBoundingClientRect().left - selectMenu1Popup.getBoundingClientRect().left)), 0); }, "The popup should be top left positioned"); promise_test(async () => {@@ -99,8 +99,8 @@ const selectMenu2Popup = document.getElementById("selectMenu2-popup"); await clickOn(selectMenu2);- assert_equals(Math.round(selectMenu2.getBoundingClientRect().bottom), Math.round(selectMenu2Popup.getBoundingClientRect().top));- assert_equals(Math.round(selectMenu2.getBoundingClientRect().right), Math.round(selectMenu2Popup.getBoundingClientRect().right));+ assert_equals(Math.abs(Math.trunc(selectMenu2.getBoundingClientRect().bottom - selectMenu2Popup.getBoundingClientRect().top)), 0);+ assert_equals(Math.abs(Math.trunc(selectMenu2.getBoundingClientRect().right - selectMenu2Popup.getBoundingClientRect().right)), 0); }, "The popup should be bottom right positioned"); promise_test(async () => {@@ -108,8 +108,8 @@ const selectMenu3Popup = document.getElementById("selectMenu3-popup"); await clickOn(selectMenu3);- assert_equals(Math.round(selectMenu3.getBoundingClientRect().top), Math.round(selectMenu3Popup.getBoundingClientRect().bottom));- assert_equals(Math.round(selectMenu3.getBoundingClientRect().right), Math.round(selectMenu3Popup.getBoundingClientRect().right));+ assert_equals(Math.abs(Math.trunc(selectMenu3.getBoundingClientRect().top - selectMenu3Popup.getBoundingClientRect().bottom)), 0);+ assert_equals(Math.abs(Math.trunc(selectMenu3.getBoundingClientRect().right - selectMenu3Popup.getBoundingClientRect().right)), 0); }, "The popup should be top right positioned"); </script>=========testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.arc.empty.worker.js========--- /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.arc.empty.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.arc.empty.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.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -23,7 +23,7 @@ ctx.beginPath(); ctx.arc(200, 25, 5, 0, 2*Math.PI, true); ctx.stroke();-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't find any security vulnerabilities. The changes appear to be test improvements and variable renaming rather than security fixes. Here are the analyses: 1. For the selectmenu-popup-position.tentative.html changes: Vulnerability Existed: no The changes only modify the test assertions to use Math.abs() and Math.trunc() instead of Math.round() for more precise position checking. This is a test improvement, not a security fix. 2. For the 2d.path.arc.empty.worker.js changes: Vulnerability Existed: no The changes simply rename the variable `offscreenCanvas` to `canvas` and update the corresponding assertion call. This is a code style/readability change, not a security fix. No security vulnerabilities were identified in either of the diffs. The changes appear to be test improvements and code cleanup rather than security-related 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/css/css-values/calc-height-table-1-ref.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-values/calc-height-table-1-ref.html@@ -3,7 +3,6 @@ <head> <title>CSS Reference: Test that height:calc() with no percentages has an effect on inner table elements</title> <link rel="author" title="L. David Baron" href="https://dbaron.org/">- <meta name="flags" content=""> <style type="text/css"> tbody, tr, td { height: 500px;
Analysis of the provided code diff: 1. Vulnerability Existed: no Meta Tag Removal [File] [Lines 3-6] [Old Code] <meta name="flags" content=""> [Fixed Code] (line removed) Additional Details: - The diff shows only the removal of an empty meta tag with name="flags". This doesn't appear to be a security-related change but rather a cleanup of unnecessary markup. - No actual security vulnerabilities are addressed in this change. - The modification is part of a reference test file for CSS calc() functionality, and the change doesn't affect any security-sensitive functionality.
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/text/2d.text.draw.fill.maxWidth.large-manual.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large-manual.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 = '#000'; ctx.fillRect(0, 0, 100, 50);
Analyzing the provided code diff: 1. Vulnerability Existed: no Variable Renaming [File] [Lines 17-18] 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 Details: - The change appears to be purely a variable name change from `offscreenCanvas` to `canvas` - No security vulnerability is apparent in this change - This seems to be a code style/readability improvement rather than a security fix - The functionality remains identical, only the variable name was changed No other vulnerabilities or changes were detected in the provided 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/mozglue/build/TsanOptions.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/mozglue/build/TsanOptions.cpp@@ -172,7 +172,7 @@ // No Upstream Bug Filed! // // Probably benign - sqlite has a few optimizations where it does- // racy reads and then does properly synchornized integrity checks+ // racy reads and then does properly synchronized integrity checks // afterwards. Some concern of compiler optimizations messing this // up due to "volatile" being too weak for this. "race:third_party/sqlite3/*\n"@@ -184,7 +184,10 @@ // fix already up for review. "race:StrongRuleNode::ensure_child\n" // No Bug - permanent- // Upstream Bug: https://github.com/rayon-rs/rayon/issues/812+ // Upstream Bugs:+ //+ // * https://github.com/rayon-rs/rayon/issues/812+ // * https://github.com/crossbeam-rs/crossbeam/issues/589 // // Probably a false-positive from crossbeam's deque not being // understood by tsan.@@ -192,6 +195,7 @@ "race:crossbeam_deque*::push\n" "race:crossbeam_deque*::write\n" "race:crossbeam_deque*::read\n"+ "race:crossbeam_deque*::steal\n"@@ -235,10 +239,6 @@ "race:_dl_deallocate_tls\n" "race:__libc_memalign\n"- // Bug 1664535- "race:setNeedsIncrementalBarrier\n"- "race:needsIncrementalBarrier\n"- // Bug 1664803 "race:Sampler::sSigHandlerCoordinator\n"
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Typo Fix] [mozglue/build/TsanOptions.cpp] [Lines 172] [Old Code] `// racy reads and then does properly synchornized integrity checks` [Fixed Code] `// racy reads and then does properly synchronized integrity checks` 2. Vulnerability Existed: not sure [Added Crossbeam Deque Race Condition] [mozglue/build/TsanOptions.cpp] [Lines 184-195] [Old Code] `// * https://github.com/rayon-rs/rayon/issues/812` [Fixed Code] `// * https://github.com/rayon-rs/rayon/issues/812` `// * https://github.com/crossbeam-rs/crossbeam/issues/589` `race:crossbeam_deque*::steal\n` 3. Vulnerability Existed: not sure [Removed Race Conditions] [mozglue/build/TsanOptions.cpp] [Lines 235-239] [Old Code] `// Bug 1664535` `"race:setNeedsIncrementalBarrier\n"` `"race:needsIncrementalBarrier\n"` [Fixed Code] (These lines were removed) Note: The changes appear to be related to ThreadSanitizer (TSan) configuration updates rather than direct security fixes. The modifications include: 1. A typo fix in a comment 2. Additional race condition suppressions for crossbeam deque operations 3. Removal of some race condition suppressions that may no longer be needed Without more context about the specific race conditions being suppressed or why they were removed, it's difficult to determine if these represent actual security fixes or just configuration updates. The changes seem to be more about improving/maintaining the ThreadSanitizer configuration than addressing specific security vulnerabilities.
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/servo/components/style/stylesheets/scroll_timeline_rule.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/servo/components/style/stylesheets/scroll_timeline_rule.rs@@ -324,7 +324,6 @@ where W: Write, {- use crate::cssparser::ToCss as CssparserToCss; dest.write_str("selector(")?; dest.write_char('#')?; self.0.to_css(dest)?;
Let me analyze the code diff for potential security vulnerabilities. Vulnerability Existed: not sure [Potential Unused Import Removal] [servo/components/style/stylesheets/scroll_timeline_rule.rs] [Lines 324] [Old Code] use crate::cssparser::ToCss as CssparserToCss; [Fixed Code] (removed line) Additional Details: - The change removes an unused import statement - While this isn't directly a security vulnerability, removing unused code can help maintain code hygiene and reduce potential attack surface - There's no clear vulnerability name associated with this change - The impact on security is minimal, but keeping code clean is generally good security practice Note: I don't see any clear security vulnerabilities in this diff. The change appears to be a minor code cleanup 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/image/imgFrame.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/image/imgFrame.cpp@@ -150,6 +150,7 @@ // warn for properties related to bad content. if (!SurfaceCache::IsLegalSize(aImageSize)) { NS_WARNING("Should have legal image size");+ MonitorAutoLock lock(mMonitor); mAborted = true; return NS_ERROR_FAILURE; }@@ -181,6 +182,8 @@ } mNonPremult = aNonPremult;++ MonitorAutoLock lock(mMonitor); mShouldRecycle = aShouldRecycle; MOZ_ASSERT(!mRawSurface, "Called imgFrame::InitForDecoder() twice?");@@ -297,6 +300,7 @@ // warn for properties related to bad content. if (!SurfaceCache::IsLegalSize(aSize)) { NS_WARNING("Should have legal image size");+ MonitorAutoLock lock(mMonitor); mAborted = true; return NS_ERROR_FAILURE; }@@ -308,6 +312,7 @@ bool canUseDataSurface = Factory::DoesBackendSupportDataDrawtarget(aBackend); if (canUseDataSurface) {+ MonitorAutoLock lock(mMonitor); // It's safe to use data surfaces for content on this platform, so we can // get away with using volatile buffers. MOZ_ASSERT(!mRawSurface, "Called imgFrame::InitWithDrawable() twice?");@@ -331,7 +336,12 @@ // surface instead. This means if someone later calls RawAccessRef(), we // may have to do an expensive readback, but we warned callers about that in // the documentation for this method.- MOZ_ASSERT(!mOptSurface, "Called imgFrame::InitWithDrawable() twice?");+#ifdef DEBUG+ {+ MonitorAutoLock lock(mMonitor);+ MOZ_ASSERT(!mOptSurface, "Called imgFrame::InitWithDrawable() twice?");+ }+#endif if (gfxPlatform::GetPlatform()->SupportsAzureContentForType(aBackend)) { target = gfxPlatform::GetPlatform()->CreateDrawTargetForBackend(@@ -343,6 +353,7 @@ } if (!target || !target->IsValid()) {+ MonitorAutoLock lock(mMonitor); mAborted = true; return NS_ERROR_OUT_OF_MEMORY; }@@ -354,6 +365,7 @@ ImageRegion::Create(ThebesRect(GetRect())), mFormat, aSamplingFilter, aImageFlags);+ MonitorAutoLock lock(mMonitor); if (canUseDataSurface && !mRawSurface) { NS_WARNING("Failed to create SourceSurfaceSharedData"); mAborted = true;@@ -365,17 +377,14 @@ // imgFrame's perspective. mOptSurface = target->Snapshot(); } else {- FinalizeSurface();+ FinalizeSurfaceInternal(); } // If we reach this point, we should regard ourselves as complete. mDecoded = GetRect(); mFinished = true;-#ifdef DEBUG- MonitorAutoLock lock(mMonitor); MOZ_ASSERT(AreAllPixelsWritten());-#endif return NS_OK; }
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: yes Race Condition / Thread Safety Issue [image/imgFrame.cpp] [Lines 150-153] Old Code: ```cpp if (!SurfaceCache::IsLegalSize(aImageSize)) { NS_WARNING("Should have legal image size"); mAborted = true; return NS_ERROR_FAILURE; } ``` Fixed Code: ```cpp if (!SurfaceCache::IsLegalSize(aImageSize)) { NS_WARNING("Should have legal image size"); MonitorAutoLock lock(mMonitor); mAborted = true; return NS_ERROR_FAILURE; } ``` 2. Vulnerability Existed: yes Race Condition / Thread Safety Issue [image/imgFrame.cpp] [Lines 297-300] Old Code: ```cpp if (!SurfaceCache::IsLegalSize(aSize)) { NS_WARNING("Should have legal image size"); mAborted = true; return NS_ERROR_FAILURE; } ``` Fixed Code: ```cpp if (!SurfaceCache::IsLegalSize(aSize)) { NS_WARNING("Should have legal image size"); MonitorAutoLock lock(mMonitor); mAborted = true; return NS_ERROR_FAILURE; } ``` 3. Vulnerability Existed: yes Race Condition / Thread Safety Issue [image/imgFrame.cpp] [Lines 310-313] Old Code: ```cpp bool canUseDataSurface = Factory::DoesBackendSupportDataDrawtarget(aBackend); if (canUseDataSurface) { ``` Fixed Code: ```cpp bool canUseDataSurface = Factory::DoesBackendSupportDataDrawtarget(aBackend); if (canUseDataSurface) { MonitorAutoLock lock(mMonitor); ``` 4. Vulnerability Existed: yes Race Condition / Thread Safety Issue [image/imgFrame.cpp] [Lines 352-354] Old Code: ```cpp if (!target || !target->IsValid()) { mAborted = true; return NS_ERROR_OUT_OF_MEMORY; } ``` Fixed Code: ```cpp if (!target || !target->IsValid()) { MonitorAutoLock lock(mMonitor); mAborted = true; return NS_ERROR_OUT_OF_MEMORY; } ``` 5. Vulnerability Existed: yes Race Condition / Thread Safety Issue [image/imgFrame.cpp] [Lines 365-366] Old Code: ```cpp if (canUseDataSurface && !mRawSurface) { ``` Fixed Code: ```cpp MonitorAutoLock lock(mMonitor); if (canUseDataSurface && !mRawSurface) { ``` 6. Vulnerability Existed: yes Race Condition / Thread Safety Issue [image/imgFrame.cpp] [Lines 377] Old Code: ```cpp FinalizeSurface(); ``` Fixed Code: ```cpp FinalizeSurfaceInternal(); ``` 7. Vulnerability Existed: yes Race Condition / Thread Safety Issue [image/imgFrame.cpp] [Lines 384-386] Old Code: ```cpp #ifdef DEBUG MonitorAutoLock lock(mMonitor); MOZ_ASSERT(AreAllPixelsWritten()); #endif ``` Fixed Code: ```cpp MOZ_ASSERT(AreAllPixelsWritten()); ``` The main security issue being addressed in this diff is thread safety through the addition of proper monitor locking (MonitorAutoLock) around critical sections where shared member variables (like mAborted, mRawSurface, etc.) are accessed. The changes prevent race conditions that could lead to inconsistent state or undefined behavior. The removal of the DEBUG-specific locking suggests the assertion check is now considered important enough to always perform.
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/speculation-rules/prerender/indexeddb.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/speculation-rules/prerender/indexeddb.html@@ -3,6 +3,7 @@ <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script>+<script src="/common/utils.js"></script> <script src="resources/utils.js"></script> <script src="resources/indexedb-utils.js"></script> <body>@@ -11,33 +12,30 @@ setup(() => assertSpeculationRulesIsSupported()); promise_test(async t => {- const bc = new BroadcastChannel('prerender-channel');-- const gotMessage = new Promise(resolve => {- bc.addEventListener('message', e => {- resolve(e.data);- }, {- once: true- });- });-- const db = await openIndexedDatabase();+ const db = await openIndexedDatabase(t); assert_not_equals(db, null, 'Failed to open database.'); await addData(db, INITIATOR_KEY, INITIATOR_VALUE);- // Start prerendering a page that attempts to access the IndexedDB API.- startPrerendering(`resources/indexeddb-access.html`);+ const {exec} = await create_prerendered_page(t);- const prerenderReadResult = await gotMessage;+ const result = await exec(async () => {+ await import_script_to_prerendered_page("indexedb-utils.js");+ const db = await openIndexedDatabase();++ await addData(db, PRERENDER_KEY, PRERENDER_VALUE);+ const result = await readData(db, INITIATOR_KEY);+ db.close();+ return result;+ });+ assert_equals(- prerenderReadResult, INITIATOR_VALUE,+ result, INITIATOR_VALUE, 'prerendering page should be able to read from Indexed DataBase'); const initiatorReadResult = await readData(db, PRERENDER_KEY); assert_equals( initiatorReadResult, PRERENDER_VALUE, 'prerendering page should be able to write to Indexed DataBase'); db.close();- bc.close(); }, 'prerendering page should be able to access Indexed DataBase') </script>
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure Potential Cross-Origin Resource Sharing (CORS) or Script Inclusion Issue [testing/web-platform/tests/speculation-rules/prerender/indexeddb.html] [Lines 3-6] Old Code: ```html <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="resources/utils.js"></script> ``` Fixed Code: ```html <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/utils.js"></script> <script src="resources/utils.js"></script> ``` Additional Details: Added a new script inclusion from a different path (/common/utils.js). While not clearly a security fix, changes in script inclusion paths could relate to security if they address cross-origin issues. 2. Vulnerability Existed: not sure Potential Information Leak via BroadcastChannel [testing/web-platform/tests/speculation-rules/prerender/indexeddb.html] [Lines 11-33] Old Code: ```javascript const bc = new BroadcastChannel('prerender-channel'); const gotMessage = new Promise(resolve => { bc.addEventListener('message', e => { resolve(e.data); }, { once: true }); }); // ... message passing code ... bc.close(); ``` Fixed Code: ```javascript const {exec} = await create_prerendered_page(t); const result = await exec(async () => { await import_script_to_prerendered_page("indexedb-utils.js"); const db = await openIndexedDatabase(); // ... direct communication instead of BroadcastChannel ... }); ``` Additional Details: The removal of BroadcastChannel communication might indicate a fix for potential information leakage between browsing contexts, though this isn't clearly a security vulnerability. Note: The changes appear to be more about test infrastructure and communication patterns rather than clear security fixes. The modifications improve the test's reliability and isolation but don't clearly address any specific known vulnerabilities.
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.fill.winding.subtract.3.html+++ /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.fill.winding.subtract.3.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);@@ -38,7 +38,7 @@ ctx.lineTo(100, 50); ctx.lineTo(100, 0); ctx.fill();-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely variable renaming for better code clarity. Here's the analysis: 1. Vulnerability Existed: no No Vulnerability Found [File] [Lines 17-18, 38] Old Code: ```javascript var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ``` Fixed Code: ```javascript var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ``` 2. Vulnerability Existed: no No Vulnerability Found [File] [Line 38] Old Code: ```javascript _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); ``` Fixed Code: ```javascript _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); ``` The changes simply rename the variable `offscreenCanvas` to `canvas` for consistency or clarity, without any security implications. The functionality remains identical, 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/toolkit/components/glean/bindings/private/Numerator.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/toolkit/components/glean/bindings/private/Numerator.cpp@@ -19,7 +19,7 @@ void NumeratorMetric::AddToNumerator(int32_t aAmount) const { auto scalarId = ScalarIdForMetric(mId);- if (scalarId) {+ if (scalarId && aAmount >= 0) { Telemetry::ScalarAdd(scalarId.extract(), u"numerator"_ns, aAmount); } fog_numerator_add_to_numerator(mId, aAmount);
Here's the analysis following your requested format: Vulnerability Existed: yes Integer Overflow/Underflow Vulnerability [toolkit/components/glean/bindings/private/Numerator.cpp] [Lines 19] Old Code: if (scalarId) { Fixed Code: if (scalarId && aAmount >= 0) { Additional Details: The vulnerability appears to be a potential integer overflow/underflow issue. The fix adds a check to ensure `aAmount` is non-negative before performing the addition operation. Without this check, negative values could cause unexpected behavior in the scalar addition operation, potentially leading to integer underflow or other arithmetic issues. This is particularly important since the value is being passed to both Telemetry::ScalarAdd and fog_numerator_add_to_numerator functions.
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/compositing/2d.composite.transparent.lighter.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.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 = 'rgba(0, 255, 0, 0.5)';@@ -26,7 +26,7 @@ ctx.globalCompositeOperation = 'lighter'; ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 50,25, 0,128,191,255, "50,25", "0,128,191,255", 5);+_assertPixelApprox(canvas, 50,25, 0,128,191,255, "50,25", "0,128,191,255", 5); t.done(); });
After analyzing the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely variable renaming and don't involve any security-related modifications. Answer for Each Vulnerability: Vulnerability Existed: no No security vulnerability found File: testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.transparent.lighter.html [No old vulnerable code] [No fixed vulnerable code] The changes made were: 1. Renamed `offscreenCanvas` variable to `canvas` 2. Updated the variable name in the `_assertPixelApprox` call These are cosmetic changes that don't affect security.
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/build/common_virtualenv_packages.txt+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/build/common_virtualenv_packages.txt@@ -1,129 +1 @@-pth:build-pth:config-pth:config/mozunit-pth:dom/bindings-pth:dom/bindings/parser-pth:layout/tools/reftest-pth:python/l10n-pth:python/mach-pth:python/mozboot-pth:python/mozbuild-pth:python/mozlint-pth:python/mozperftest-pth:python/mozrelease-pth:python/mozterm-pth:python/mozversioncontrol-pth:security/manager/tools-pth:taskcluster-pth:testing-pth:testing/awsy-pth:testing/condprofile-pth:testing/firefox-ui/harness-pth:testing/marionette/client-pth:testing/marionette/harness-pth:testing/mozbase/manifestparser-pth:testing/mozbase/mozcrash-pth:testing/mozbase/mozdebug-pth:testing/mozbase/mozdevice-pth:testing/mozbase/mozfile-pth:testing/mozbase/mozhttpd-pth:testing/mozbase/mozgeckoprofiler-pth:testing/mozbase/mozinfo-pth:testing/mozbase/mozinstall-pth:testing/mozbase/mozleak-pth:testing/mozbase/mozlog-pth:testing/mozbase/moznetwork-pth:testing/mozbase/mozpower-pth:testing/mozbase/mozprocess-pth:testing/mozbase/mozprofile-pth:testing/mozbase/mozproxy-pth:testing/mozbase/mozrunner-pth:testing/mozbase/mozsystemmonitor-pth:testing/mozbase/mozscreenshot-pth:testing/mozbase/moztest-pth:testing/mozbase/mozversion-pth:testing/raptor-pth:testing/talos-pth:testing/web-platform-vendored:testing/web-platform/tests/tools/third_party/funcsigs-vendored:testing/web-platform/tests/tools/third_party/h2-vendored:testing/web-platform/tests/tools/third_party/hpack-vendored:testing/web-platform/tests/tools/third_party/html5lib-vendored:testing/web-platform/tests/tools/third_party/hyperframe-vendored:testing/web-platform/tests/tools/third_party/pywebsocket3-vendored:testing/web-platform/tests/tools/third_party/webencodings-vendored:testing/web-platform/tests/tools/wptserve-vendored:testing/web-platform/tests/tools/wptrunner-pth:testing/xpcshell-vendored:third_party/python/aiohttp-vendored:third_party/python/appdirs-vendored:third_party/python/async_timeout-vendored:third_party/python/attrs-vendored:third_party/python/blessings-vendored:third_party/python/cbor2-vendored:third_party/python/certifi-vendored:third_party/python/chardet-vendored:third_party/python/click-vendored:third_party/python/colorama-vendored:third_party/python/compare_locales-vendored:third_party/python/cookies-vendored:third_party/python/cram-vendored:third_party/python/diskcache-vendored:third_party/python/distro-vendored:third_party/python/dlmanager-vendored:third_party/python/ecdsa-vendored:third_party/python/esprima-vendored:third_party/python/fluent.migrate-vendored:third_party/python/fluent.syntax-vendored:third_party/python/gyp/pylib-vendored:third_party/python/idna-vendored:third_party/python/idna-ssl-vendored:third_party/python/importlib_metadata-vendored:third_party/python/iso8601-vendored:third_party/python/Jinja2-vendored:third_party/python/jsmin-vendored:third_party/python/json-e-vendored:third_party/python/jsonschema-vendored:third_party/python/MarkupSafe/src-vendored:third_party/python/mohawk-vendored:third_party/python/mozilla_version-vendored:third_party/python/multidict-vendored:third_party/python/packaging-vendored:third_party/python/pathspec-vendored:third_party/python/pip-vendored:third_party/python/pip_tools-vendored:third_party/python/ply-vendored:third_party/python/pyasn1-vendored:third_party/python/pyasn1_modules-vendored:third_party/python/pylru-vendored:third_party/python/pyparsing-vendored:third_party/python/pyrsistent-vendored:third_party/python/python-hglib-vendored:third_party/python/pytoml-vendored:third_party/python/PyYAML/lib3/-vendored:third_party/python/redo-vendored:third_party/python/requests-vendored:third_party/python/requests_unixsocket-vendored:third_party/python/responses-vendored:third_party/python/rsa-vendored:third_party/python/setuptools-vendored:third_party/python/sentry_sdk-vendored:third_party/python/six-vendored:third_party/python/slugid-vendored:third_party/python/taskcluster-vendored:third_party/python/taskcluster_taskgraph-vendored:third_party/python/taskcluster_urls-vendored:third_party/python/tqdm-vendored:third_party/python/typing_extensions-vendored:third_party/python/urllib3-vendored:third_party/python/voluptuous-vendored:third_party/python/wheel-vendored:third_party/python/yamllint-vendored:third_party/python/yarl-vendored:third_party/python/zipp-pth:toolkit/components/telemetry/tests/marionette/harness-pth:tools-pth:tools/moztreedocs-pth:xpcom/ds/tools-pth:xpcom/geckoprocesstypes_generator-pth:xpcom/idl-parser+
After analyzing the diff, I don't see any clear security vulnerabilities being fixed. The change appears to be a massive simplification of the virtualenv packages configuration file, going from 129 lines to just 1 line. This seems more like a structural/organizational change rather than a security fix. Here's the analysis following your requested format: Vulnerability Existed: no No specific vulnerability found [File] build/common_virtualenv_packages.txt [Lines] 1-129 [Old Code] (All 129 lines of package configurations) [Fixed Code] (Empty configuration) Additional Notes: 1. The change removes all virtualenv package paths and vendored packages from the configuration 2. Without more context, it's unclear if this represents a security improvement or just a configuration change 3. The change could potentially be related to reducing attack surface by removing unnecessary dependencies, but this is speculative 4. No specific vulnerable packages were removed that I can identify from the diff alone If this were a security fix, I would expect to see specific vulnerable packages being updated or removed, rather than a complete wipe of the configuration. The change appears to be more architectural in nature.
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/android/GfxInfo.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/widget/android/GfxInfo.cpp@@ -4,6 +4,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "GfxInfo.h"+#include "AndroidBuild.h" #include "GLContext.h" #include "GLContextProvider.h" #include "nsUnicharUtils.h"@@ -11,10 +12,11 @@ #include "nsExceptionHandler.h" #include "nsHashKeys.h" #include "nsVersionComparator.h"-#include "AndroidBridge.h" #include "nsServiceManagerUtils.h" #include "mozilla/Preferences.h"+#include "mozilla/java/GeckoAppShellWrappers.h"+#include "mozilla/java/HardwareCodecCapabilityUtilsWrappers.h" namespace mozilla { namespace widget {@@ -176,47 +178,38 @@ void GfxInfo::EnsureInitialized() { if (mInitialized) return;- if (!mozilla::AndroidBridge::Bridge()) {- gfxWarning() << "AndroidBridge missing during initialization";+ if (!jni::IsAvailable()) {+ gfxWarning() << "JNI missing during initialization"; return; }- if (mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build",- "MODEL", mModel)) {- mAdapterDescription.AppendPrintf("Model: %s",- NS_LossyConvertUTF16toASCII(mModel).get());- }-- if (mozilla::AndroidBridge::Bridge()->GetStaticStringField(- "android/os/Build", "PRODUCT", mProduct)) {- mAdapterDescription.AppendPrintf(- ", Product: %s", NS_LossyConvertUTF16toASCII(mProduct).get());- }-- if (mozilla::AndroidBridge::Bridge()->GetStaticStringField(- "android/os/Build", "MANUFACTURER", mManufacturer)) {- mAdapterDescription.AppendPrintf(- ", Manufacturer: %s", NS_LossyConvertUTF16toASCII(mManufacturer).get());- }-- if (mozilla::AndroidBridge::Bridge()->GetStaticIntField(- "android/os/Build$VERSION", "SDK_INT", &mSDKVersion)) {- // the HARDWARE field isn't available on Android SDK < 8, but we require 9+- // anyway.- MOZ_ASSERT(mSDKVersion >= 8);- if (mozilla::AndroidBridge::Bridge()->GetStaticStringField(- "android/os/Build", "HARDWARE", mHardware)) {- mAdapterDescription.AppendPrintf(- ", Hardware: %s", NS_LossyConvertUTF16toASCII(mHardware).get());- }- } else {- mSDKVersion = 0;- }-- nsString release;- mozilla::AndroidBridge::Bridge()->GetStaticStringField(- "android/os/Build$VERSION", "RELEASE", release);- mOSVersion = NS_LossyConvertUTF16toASCII(release);+ jni::String::LocalRef model = java::sdk::Build::MODEL();+ mModel = model->ToString();+ mAdapterDescription.AppendPrintf("Model: %s",+ NS_LossyConvertUTF16toASCII(mModel).get());++ jni::String::LocalRef product = java::sdk::Build::PRODUCT();+ mProduct = product->ToString();+ mAdapterDescription.AppendPrintf(", Product: %s",+ NS_LossyConvertUTF16toASCII(mProduct).get());++ jni::String::LocalRef manufacturer =+ mozilla::java::sdk::Build::MANUFACTURER();+ mManufacturer = manufacturer->ToString();+ mAdapterDescription.AppendPrintf(+ ", Manufacturer: %s", NS_LossyConvertUTF16toASCII(mManufacturer).get());++ mSDKVersion = java::sdk::VERSION::SDK_INT();+ // the HARDWARE field isn't available on Android SDK < 8, but we require 9++ // anyway.+ MOZ_ASSERT(mSDKVersion >= 8);+ jni::String::LocalRef hardware = java::sdk::Build::HARDWARE();+ mHardware = hardware->ToString();+ mAdapterDescription.AppendPrintf(+ ", Hardware: %s", NS_LossyConvertUTF16toASCII(mHardware).get());++ jni::String::LocalRef release = java::sdk::VERSION::RELEASE();+ mOSVersion = release->ToCString(); mOSVersionInteger = 0; char a[5], b[5], c[5], d[5];@@ -235,8 +228,10 @@ AddCrashReportAnnotations();+ java::sdk::Rect::LocalRef screenrect = java::GeckoAppShell::GetScreenSize(); mScreenInfo.mScreenDimensions =- mozilla::AndroidBridge::Bridge()->getScreenSize();+ gfx::Rect(screenrect->Left(), screenrect->Top(), screenrect->Width(),+ screenrect->Height()); mInitialized = true; }@@ -556,21 +551,21 @@ } if (aFeature == FEATURE_WEBRTC_HW_ACCELERATION_ENCODE) {- if (mozilla::AndroidBridge::Bridge()) {+ if (jni::IsAvailable()) { *aStatus = WebRtcHwVp8EncodeSupported(); aFailureId = "FEATURE_FAILURE_WEBRTC_ENCODE"; return NS_OK; } } if (aFeature == FEATURE_WEBRTC_HW_ACCELERATION_DECODE) {- if (mozilla::AndroidBridge::Bridge()) {+ if (jni::IsAvailable()) { *aStatus = WebRtcHwVp8DecodeSupported(); aFailureId = "FEATURE_FAILURE_WEBRTC_DECODE"; return NS_OK; } } if (aFeature == FEATURE_WEBRTC_HW_ACCELERATION_H264) {- if (mozilla::AndroidBridge::Bridge()) {+ if (jni::IsAvailable()) { *aStatus = WebRtcHwH264Supported(); aFailureId = "FEATURE_FAILURE_WEBRTC_H264"; return NS_OK;@@ -664,6 +659,23 @@ if (isMaliT) { *aStatus = nsIGfxInfo::FEATURE_BLOCKED_DEVICE; aFailureId = "FEATURE_FAILURE_BUG_1689064";+ } else {+ *aStatus = nsIGfxInfo::FEATURE_STATUS_OK;+ }+ return NS_OK;+ }++ if (aFeature == FEATURE_WEBRENDER_PARTIAL_PRESENT) {+ // Block partial present on some devices due to rendering issues.+ // On Mali-Txxx due to bug 1680087 and bug 1707815.+ // On Adreno 3xx GPUs due to bug 1695771.+ const bool isMaliT =+ mGLStrings->Renderer().Find("Mali-T", /*ignoreCase*/ true) >= 0;+ const bool isAdreno3xx = mGLStrings->Renderer().Find(+ "Adreno (TM) 3", /*ignoreCase*/ true) >= 0;+ if (isMaliT || isAdreno3xx) {+ *aStatus = nsIGfxInfo::FEATURE_BLOCKED_DEVICE;+ aFailureId = "FEATURE_FAILURE_BUG_1680087_1695771_1707815"; } else { *aStatus = nsIGfxInfo::FEATURE_STATUS_OK; }@@ -730,7 +742,7 @@ } int32_t GfxInfo::WebRtcHwVp8EncodeSupported() {- MOZ_ASSERT(mozilla::AndroidBridge::Bridge());+ MOZ_ASSERT(jni::IsAvailable()); // The Android side of this calculation is very slow, so we cache the result // in preferences, invalidating if the OS version changes.@@ -741,7 +753,7 @@ return status; }- status = mozilla::AndroidBridge::Bridge()->HasHWVP8Encoder()+ status = java::GeckoAppShell::HasHWVP8Encoder() ? nsIGfxInfo::FEATURE_STATUS_OK : nsIGfxInfo::FEATURE_BLOCKED_DEVICE;@@ -752,7 +764,7 @@ } int32_t GfxInfo::WebRtcHwVp8DecodeSupported() {- MOZ_ASSERT(mozilla::AndroidBridge::Bridge());+ MOZ_ASSERT(jni::IsAvailable()); // The Android side of this caclulation is very slow, so we cache the result // in preferences, invalidating if the OS version changes.@@ -763,7 +775,7 @@ return status; }- status = mozilla::AndroidBridge::Bridge()->HasHWVP8Decoder()+ status = java::GeckoAppShell::HasHWVP8Decoder() ? nsIGfxInfo::FEATURE_STATUS_OK : nsIGfxInfo::FEATURE_BLOCKED_DEVICE;@@ -774,7 +786,7 @@ } int32_t GfxInfo::WebRtcHwH264Supported() {- MOZ_ASSERT(mozilla::AndroidBridge::Bridge());+ MOZ_ASSERT(jni::IsAvailable()); // The Android side of this calculation is very slow, so we cache the result // in preferences, invalidating if the OS version changes.@@ -785,7 +797,7 @@ return status; }- status = mozilla::AndroidBridge::Bridge()->HasHWH264()+ status = java::HardwareCodecCapabilityUtils::HasHWH264() ? nsIGfxInfo::FEATURE_STATUS_OK : nsIGfxInfo::FEATURE_BLOCKED_DEVICE;
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential JNI Access Vulnerability] [widget/android/GfxInfo.cpp] [Lines 176-178] [Old Code] if (!mozilla::AndroidBridge::Bridge()) { gfxWarning() << "AndroidBridge missing during initialization"; return; } [Fixed Code] if (!jni::IsAvailable()) { gfxWarning() << "JNI missing during initialization"; return; } 2. Vulnerability Existed: not sure [Potential Information Leak] [widget/android/GfxInfo.cpp] [Lines 556-569] [Old Code] if (aFeature == FEATURE_WEBRTC_HW_ACCELERATION_ENCODE) { if (mozilla::AndroidBridge::Bridge()) { *aStatus = WebRtcHwVp8EncodeSupported(); aFailureId = "FEATURE_FAILURE_WEBRTC_ENCODE"; return NS_OK; } } [Fixed Code] if (aFeature == FEATURE_WEBRTC_HW_ACCELERATION_ENCODE) { if (jni::IsAvailable()) { *aStatus = WebRtcHwVp8EncodeSupported(); aFailureId = "FEATURE_FAILURE_WEBRTC_ENCODE"; return NS_OK; } } 3. Vulnerability Existed: not sure [Potential Information Leak] [widget/android/GfxInfo.cpp] [Lines 730-797] [Old Code] status = mozilla::AndroidBridge::Bridge()->HasHWVP8Encoder() ? nsIGfxInfo::FEATURE_STATUS_OK : nsIGfxInfo::FEATURE_BLOCKED_DEVICE; [Fixed Code] status = java::GeckoAppShell::HasHWVP8Encoder() ? nsIGfxInfo::FEATURE_STATUS_OK : nsIGfxInfo::FEATURE_BLOCKED_DEVICE; The main changes appear to be: 1. Replacing AndroidBridge calls with direct JNI calls through new wrapper classes 2. Adding new feature checks (WEBRENDER_PARTIAL_PRESENT) with device-specific blocks 3. Changing how system information is gathered While these changes improve the code structure and maintainability, I couldn't identify any clear security vulnerabilities being fixed. The changes seem more focused on architectural improvements and adding new functionality rather than patching security issues. The potential vulnerabilities marked as "not sure" relate to the JNI access changes which could have security implications, but without more context about the threat model, I can't confirm if these were actual vulnerabilities.
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/sandbox/common/test/SandboxTestingChild.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/security/sandbox/common/test/SandboxTestingChild.cpp@@ -8,6 +8,8 @@ #include "SandboxTestingChildTests.h" #include "SandboxTestingThread.h" #include "mozilla/ipc/Endpoint.h"+#include "mozilla/ipc/UtilityProcessSandboxing.h"+#include "mozilla/ipc/UtilityProcessChild.h" #ifdef XP_LINUX # include "mozilla/Sandbox.h"@@ -79,6 +81,20 @@ RunTestsSocket(this); }+ if (XRE_IsUtilityProcess()) {+ RefPtr<ipc::UtilityProcessChild> s = ipc::UtilityProcessChild::Get();+ MOZ_ASSERT(s, "Unable to grab a UtilityProcessChild");+ switch (s->mSandbox) {+ case ipc::SandboxingKind::GENERIC_UTILITY:+ RunTestsUtility(this);+ break;++ default:+ MOZ_ASSERT(false, "Invalid SandboxingKind");+ break;+ }+ }+ #ifdef XP_LINUX SetSandboxCrashOnError(sandboxCrashOnError); #endif@@ -106,12 +122,10 @@ } void SandboxTestingChild::ReportNoTests() {- SendReportTestResults("dummy_test"_ns, /* shouldSucceed */ true,- /* didSucceed */ true,+ SendReportTestResults("dummy_test"_ns, /* passed */ true, "The test framework fails if there are no cases."_ns); }-#ifdef XP_UNIX template <typename F> void SandboxTestingChild::ErrnoTest(const nsCString& aName, bool aExpectSuccess, F&& aFunction) {@@ -121,25 +135,48 @@ template <typename F> void SandboxTestingChild::ErrnoValueTest(const nsCString& aName,- bool aExpectEquals, int aExpectedErrno,- F&& aFunction) {+ int aExpectedErrno, F&& aFunction) { int status = aFunction() >= 0 ? 0 : errno;- PosixTest(aName, aExpectEquals, status == aExpectedErrno);+ PosixTest(aName, aExpectedErrno == 0, status, Some(aExpectedErrno)); } void SandboxTestingChild::PosixTest(const nsCString& aName, bool aExpectSuccess,- int aStatus) {- bool succeeded = aStatus == 0;+ int aStatus, Maybe<int> aExpectedError) { nsAutoCString message;- if (succeeded) {+ bool passed;++ // The "expected" arguments are a little redundant.+ MOZ_ASSERT(!aExpectedError || aExpectSuccess == (*aExpectedError == 0));++ // Decide whether the test passed, and stringify the actual result.+ if (aStatus == 0) { message = "Succeeded"_ns;+ passed = aExpectSuccess; } else { message = "Error: "_ns; message += strerror(aStatus);+ if (aExpectedError) {+ passed = aStatus == *aExpectedError;+ } else {+ passed = !aExpectSuccess;+ } }- SendReportTestResults(aName, aExpectSuccess, succeeded, message);+ // If something unexpected happened, mention the expected result.+ if (!passed) {+ message += "; expected ";+ if (aExpectSuccess) {+ message += "success";+ } else {+ message += "error";+ if (aExpectedError) {+ message += ": ";+ message += strerror(*aExpectedError);+ }+ }+ }++ SendReportTestResults(aName, passed, message); }-#endif // XP_UNIX } // namespace mozilla
I'll analyze the code diff and provide the security findings following the specified format. 1. Vulnerability Existed: not sure [Potential Utility Process Sandboxing Issue] [security/sandbox/common/test/SandboxTestingChild.cpp] [Lines 79-93] [Old Code: No utility process sandbox testing] [Fixed Code: Added utility process sandbox testing with specific SandboxingKind checks] 2. Vulnerability Existed: yes [Insufficient Error Handling in Test Reporting] [security/sandbox/common/test/SandboxTestingChild.cpp] [Lines 106-108] [Old Code: SendReportTestResults with redundant parameters] [Fixed Code: Simplified SendReportTestResults call with clearer semantics] 3. Vulnerability Existed: yes [Improved Error Reporting in Posix Tests] [security/sandbox/common/test/SandboxTestingChild.cpp] [Lines 135-178] [Old Code: Basic error reporting with simple success/failure] [Fixed Code: Enhanced error reporting with expected values and detailed messages] 4. Vulnerability Existed: not sure [Potential Cross-Platform Consistency Issue] [security/sandbox/common/test/SandboxTestingChild.cpp] [Lines 122-178] [Old Code: Unix-specific error testing (#ifdef XP_UNIX)] [Fixed Code: Made error testing available on all platforms (removed #ifdef)] [Note: This could potentially expose platform-specific issues on non-Unix systems] The most significant security-related changes appear to be: 1. The addition of utility process sandbox testing which helps verify sandboxing effectiveness 2. The improved error reporting in Posix tests which provides better visibility into test failures 3. The removal of platform-specific guards which might help catch issues on other platforms While these aren't direct security vulnerabilities in the traditional sense, they represent improvements to the security testing framework that would help identify security issues more effectively.
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/shadows/2d.shadow.alpha.3.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/shadows/2d.shadow.alpha.3.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);@@ -27,7 +27,7 @@ ctx.shadowOffsetY = 50; ctx.globalAlpha = 0.5; ctx.fillRect(0, -50, 100, 50);-_assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2);+_assertPixelApprox(canvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); t.done(); });
Based on the provided diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely variable renaming and don't involve any security-sensitive operations. Here's the analysis: Vulnerability Existed: no No security vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/shadows/2d.shadow.alpha.3.html [Lines 17-27] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixelApprox(canvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); The changes simply rename the variable from `offscreenCanvas` to `canvas` for consistency or readability, but don't address any security issues. The functionality remains exactly the same.
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/service-workers/service-worker/fetch-event-handled.https.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/service-workers/service-worker/fetch-event-handled.https.html@@ -10,18 +10,11 @@ let worker = null; const script = 'resources/fetch-event-handled-worker.js'; const scope = 'resources/simple.html';+const channel = new MessageChannel(); // Wait for a message from the service worker and removes the message handler. function wait_for_message_from_worker() {- return new Promise((resolve) => {- const handler = (event) => {- frame.contentWindow.navigator.serviceWorker.removeEventListener(- 'message', handler);- resolve(event.data);- };- frame.contentWindow.navigator.serviceWorker.addEventListener(- 'message', handler);- });+ return new Promise((resolve) => channel.port2.onmessage = (event) => resolve(event.data)); } // Global setup: this must be the first promise_test.@@ -29,12 +22,16 @@ const registration = await service_worker_unregister_and_register(t, script, scope); worker = registration.installing;+ if (!worker)+ worker = registration.active;+ worker.postMessage({port:channel.port1}, [channel.port1]); await wait_for_state(t, worker, 'activated'); }, 'global setup'); promise_test(async (t) => {- frame = await with_iframe(scope);+ const promise = with_iframe(scope); const message = await wait_for_message_from_worker();+ frame = await promise; assert_equals(message, 'RESOLVED'); }, 'FetchEvent.handled should resolve when respondWith() is not called for a' + ' navigation request');
Let me analyze the code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Message Channel Security] [testing/web-platform/tests/service-workers/service-worker/fetch-event-handled.https.html] [Lines 10, 22-24] [Old Code] return new Promise((resolve) => { const handler = (event) => { frame.contentWindow.navigator.serviceWorker.removeEventListener( 'message', handler); resolve(event.data); }; frame.contentWindow.navigator.serviceWorker.addEventListener( 'message', handler); }); [Fixed Code] return new Promise((resolve) => channel.port2.onmessage = (event) => resolve(event.data)); Additional Details: The change replaces event listener-based communication with MessageChannel. While not clearly a security fix, MessageChannel provides more controlled communication which could prevent some race conditions or message interception. 2. Vulnerability Existed: not sure [Potential Race Condition] [testing/web-platform/tests/service-workers/service-worker/fetch-event-handled.https.html] [Lines 29-31] [Old Code] frame = await with_iframe(scope); const message = await wait_for_message_from_worker(); [Fixed Code] const promise = with_iframe(scope); const message = await wait_for_message_from_worker(); frame = await promise; Additional Details: The change modifies the order of operations to potentially avoid race conditions between iframe loading and message handling, though it's not clearly a security fix. Note: While these changes appear to improve the robustness of the test code, I couldn't identify any clear security vulnerabilities that were fixed. The modifications seem more focused on improving reliability and maintainability of the test code rather than addressing specific security issues.
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.