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/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html@@ -7,7 +7,6 @@ <link rel="author" title="Ion Roșca" href="mailto:[email protected]"> <link rel="reviewer" title="Mihai Țică" href="mailto:[email protected]"> <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode">- <meta name="flags" content=""> <meta name="assert" content="Test checks that an element with mix-blend-mode blends its parent having overflow:scroll"> <link rel="match" href="reference/mix-blend-mode-parent-element-overflow-scroll-ref.html"> <style type="text/css">
Based on the provided code diff, I'll analyze it for security vulnerabilities: 1. Vulnerability Existed: no No specific vulnerability found [File] [Lines 7] Old Code: `<meta name="flags" content="">` Fixed Code: (line removed) Additional Details: - The change simply removes an empty meta tag for "flags" which doesn't appear to have any security implications - This seems to be a test file cleanup rather than a security fix - No known vulnerability patterns (XSS, injection, etc.) are present in this change - The modification doesn't affect any security-related functionality Note: The diff shows only a minor HTML cleanup change in a test file, with no apparent security impact. The removed meta tag was empty and likely served no purpose in the test.
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/downloads/test/browser/browser_downloads_pauseResume.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/components/downloads/test/browser/browser_downloads_pauseResume.js@@ -24,7 +24,7 @@ win.close(); });- let listbox = win.document.getElementById("downloadsRichListBox");+ let listbox = win.document.getElementById("downloadsListBox"); ok(listbox, "Download list box present"); // Select one of the downloads.
Let me analyze the provided code diff for security fixes. Vulnerability Existed: no [No specific vulnerability found] [browser/components/downloads/test/browser/browser_downloads_pauseResume.js] [Lines 24] [Old Code] let listbox = win.document.getElementById("downloadsRichListBox"); [Fixed Code] let listbox = win.document.getElementById("downloadsListBox"); Additional Details: This appears to be a simple test file modification where the ID of the download list box element was updated from "downloadsRichListBox" to "downloadsListBox". The change seems to be related to UI element naming consistency rather than addressing any security vulnerability. The modification is part of test code and doesn't affect production functionality or introduce security concerns. No security vulnerabilities were identified in this diff. The change is likely part of a larger UI update where element naming conventions were standardized.
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-conditional/at-supports-006.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-conditional/at-supports-006.html@@ -6,7 +6,6 @@ <link rel="author" href="http://opera.com" title="Opera Software ASA"> <link rel="help" href="http://www.w3.org/TR/css3-conditional/#at-supports"> <link rel="match" href="at-supports-001-ref.html">- <meta name="flags" content=""> <style> div { background-color:red;
Analyzing the provided code diff, here's the security analysis: Vulnerability Existed: no [No specific vulnerability found] [testing/web-platform/tests/css/css-conditional/at-supports-006.html] [Lines 6] [Old Code: <meta name="flags" content="">] [Fixed Code: (line removed)] Additional Details: - The change simply removes an empty meta tag with a "flags" attribute, which doesn't appear to have any security implications - This appears to be a test file cleanup rather than a security fix - No known vulnerabilities are associated with this change - The modification doesn't affect any security-related functionality Note: While this change doesn't fix a security vulnerability, removing unnecessary code is generally good practice for maintainability and reducing potential attack surface.
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/media/libwebp/src/dsp/msa_macro.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/media/libwebp/src/dsp/msa_macro.h@@ -13,6 +13,10 @@ #ifndef WEBP_DSP_MSA_MACRO_H_ #define WEBP_DSP_MSA_MACRO_H_++#include "src/dsp/dsp.h"++#if defined(WEBP_USE_MSA) #include <stdint.h> #include <msa.h>@@ -1389,4 +1393,5 @@ } while (0) #define AVER_UB2_UB(...) AVER_UB2(v16u8, __VA_ARGS__)+#endif // WEBP_USE_MSA #endif // WEBP_DSP_MSA_MACRO_H_
Analyzing the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Build Configuration Issue] [media/libwebp/src/dsp/msa_macro.h] [Lines 13-17] [Old Code: #ifndef WEBP_DSP_MSA_MACRO_H_ #define WEBP_DSP_MSA_MACRO_H_ #include <stdint.h> #include <msa.h> ] [Fixed Code: #ifndef WEBP_DSP_MSA_MACRO_H_ #define WEBP_DSP_MSA_MACRO_H_ #include "src/dsp/dsp.h" #if defined(WEBP_USE_MSA) #include <stdint.h> #include <msa.h> ] Additional Details: - The diff shows added build configuration checks (#include "src/dsp/dsp.h" and #if defined(WEBP_USE_MSA)) - This change ensures the MSA-specific code is only included when WEBP_USE_MSA is defined - While this isn't a direct security vulnerability fix, it could prevent potential issues when building without MSA support - The change improves code safety but doesn't appear to address any known CVE or specific vulnerability
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/third_party/rust/async-task/tests/cancel.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/async-task/tests/cancel.rs@@ -81,7 +81,7 @@ let guard = Guard(Box::new(0)); move |runnable: Runnable| {- &guard;+ let _ = &guard; runnable.schedule(); $sched.fetch_add(1, Ordering::SeqCst); }
Let me analyze the code diff according to the provided format. Vulnerability Existed: not sure [Potential Unused Variable] [third_party/rust/async-task/tests/cancel.rs] [Lines 81-85] [Old Code] let guard = Guard(Box::new(0)); move |runnable: Runnable| { &guard; runnable.schedule(); $sched.fetch_add(1, Ordering::SeqCst); } [Fixed Code] let guard = Guard(Box::new(0)); move |runnable: Runnable| { let _ = &guard; runnable.schedule(); $sched.fetch_add(1, Ordering::SeqCst); } Additional Details: 1. The change appears to be fixing a potential compiler warning about an unused reference rather than a security vulnerability. 2. The original code had `&guard;` which creates a reference but doesn't use it, while the fixed version explicitly ignores it with `let _ = &guard;`. 3. While this doesn't appear to be a security fix, it's good practice to properly handle unused variables to prevent potential issues in future code modifications.
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.paint.repeat.coord3.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.paint.repeat.coord3.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'); var promise = new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest();@@ -36,10 +36,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.translate(-128, -78); ctx.fillRect(128, 78, 100, 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: 1. Vulnerability Existed: no No security vulnerability found [File] [Lines 17-18, 36-40] Old Code: ```javascript 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: ```javascript 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 in the diff appear to be purely variable name changes from `offscreenCanvas` to `canvas` and don't indicate any security fixes. The modifications are consistent throughout the file, affecting variable names in both declarations and usage, but don't address any security vulnerabilities. The test assertions and canvas operations remain functionally identical.
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/x86/MacroAssembler-x86.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/js/src/jit/x86/MacroAssembler-x86.h@@ -73,9 +73,27 @@ void (X86Encoding::BaseAssemblerX86::*op)( const void* address, X86Encoding::XMMRegisterID srcId,+ X86Encoding::XMMRegisterID destId)) {+ vpPatchOpSimd128(v, reg, reg, op);+ }++ void vpPatchOpSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest,+ void (X86Encoding::BaseAssemblerX86::*op)(+ const void* address,+ X86Encoding::XMMRegisterID srcId, X86Encoding::XMMRegisterID destId)); void vpPatchOpSimd128(const SimdConstant& v, FloatRegister reg,+ size_t (X86Encoding::BaseAssemblerX86::*op)(+ const void* address,+ X86Encoding::XMMRegisterID srcId,+ X86Encoding::XMMRegisterID destId)) {+ vpPatchOpSimd128(v, reg, reg, op);+ }++ void vpPatchOpSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest, size_t (X86Encoding::BaseAssemblerX86::*op)( const void* address, X86Encoding::XMMRegisterID srcId,@@ -922,68 +940,129 @@ void loadConstantSimd128Int(const SimdConstant& v, FloatRegister dest); void loadConstantSimd128Float(const SimdConstant& v, FloatRegister dest);- void vpaddbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpaddwSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpadddSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpaddqSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubwSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubdSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubqSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmullwSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmulldSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpaddsbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpaddusbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpaddswSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpadduswSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubsbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubusbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubswSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpsubuswSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpminsbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpminubSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpminswSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpminuwSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpminsdSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpminudSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmaxsbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmaxubSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmaxswSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmaxuwSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmaxsdSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpmaxudSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpandSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpxorSimd128(const SimdConstant& v, FloatRegister srcDest);- void vporSimd128(const SimdConstant& v, FloatRegister srcDest);- void vaddpsSimd128(const SimdConstant& v, FloatRegister srcDest);- void vaddpdSimd128(const SimdConstant& v, FloatRegister srcDest);- void vsubpsSimd128(const SimdConstant& v, FloatRegister srcDest);- void vsubpdSimd128(const SimdConstant& v, FloatRegister srcDest);- void vdivpsSimd128(const SimdConstant& v, FloatRegister srcDest);- void vdivpdSimd128(const SimdConstant& v, FloatRegister srcDest);- void vmulpsSimd128(const SimdConstant& v, FloatRegister srcDest);- void vmulpdSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpacksswbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpackuswbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpackssdwSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpackusdwSimd128(const SimdConstant& v, FloatRegister srcDest);- void vpshufbSimd128(const SimdConstant& v, FloatRegister srcDest);- void vptestSimd128(const SimdConstant& v, FloatRegister src);- void vpmaddwdSimd128(const SimdConstant& v, FloatRegister src);- void vpcmpeqbSimd128(const SimdConstant& v, FloatRegister src);- void vpcmpgtbSimd128(const SimdConstant& v, FloatRegister src);- void vpcmpeqwSimd128(const SimdConstant& v, FloatRegister src);- void vpcmpgtwSimd128(const SimdConstant& v, FloatRegister src);- void vpcmpeqdSimd128(const SimdConstant& v, FloatRegister src);- void vpcmpgtdSimd128(const SimdConstant& v, FloatRegister src);- void vcmpeqpsSimd128(const SimdConstant& v, FloatRegister src);- void vcmpneqpsSimd128(const SimdConstant& v, FloatRegister src);- void vcmpltpsSimd128(const SimdConstant& v, FloatRegister src);- void vcmplepsSimd128(const SimdConstant& v, FloatRegister src);- void vcmpeqpdSimd128(const SimdConstant& v, FloatRegister src);- void vcmpneqpdSimd128(const SimdConstant& v, FloatRegister src);- void vcmpltpdSimd128(const SimdConstant& v, FloatRegister src);- void vcmplepdSimd128(const SimdConstant& v, FloatRegister src);+ void vpaddbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpaddwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpadddSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpaddqSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubqSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmullwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmulldSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpaddsbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpaddusbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpaddswSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpadduswSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubsbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubusbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubswSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpsubuswSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpminsbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpminubSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpminswSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpminuwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpminsdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpminudSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmaxsbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmaxubSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmaxswSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmaxuwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmaxsdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpmaxudSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpandSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpxorSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vporSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vaddpsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vaddpdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vsubpsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vsubpdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vdivpsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vdivpdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vmulpsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vmulpdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpacksswbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpackuswbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpackssdwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpackusdwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpshufbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vptestSimd128(const SimdConstant& v, FloatRegister lhs);+ void vpmaddwdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpcmpeqbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpcmpgtbSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpcmpeqwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpcmpgtwSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpcmpeqdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vpcmpgtdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmpeqpsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmpneqpsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmpltpsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmplepsSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmpeqpdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmpneqpdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmpltpdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest);+ void vcmplepdSimd128(const SimdConstant& v, FloatRegister lhs,+ FloatRegister dest); Condition testInt32Truthy(bool truthy, const ValueOperand& operand) { test32(operand.payloadReg(), operand.payloadReg());
After analyzing the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be primarily refactoring of function signatures to separate source and destination registers for SIMD operations, rather than using a single register for both input and output. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found [js/src/jit/x86/MacroAssembler-x86.h] [Various lines] The changes involve refactoring SIMD operation function signatures from using a single srcDest register to separate lhs and dest registers. This appears to be an architectural improvement rather than a security fix. The main changes are: 1. Added new vpPatchOpSimd128 overloads that take separate lhs and dest registers 2. Modified all SIMD operation functions to take separate lhs and dest registers instead of a single srcDest register These changes improve code clarity and potentially enable more flexible register usage, but I don't see any security implications in this particular diff. The changes appear to be part of normal code maintenance and improvement rather than addressing specific 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/netwerk/base/nsStandardURL.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/netwerk/base/nsStandardURL.cpp@@ -68,6 +68,7 @@ // Testing for these: // CONTROL_CHARACTERS " #/:?@[\\]*<>|\""; return (c > 0 && c < 32) || // The control characters are [1, 31]+ c == 0x7F || // // DEL (delete) c == ' ' || c == '#' || c == '/' || c == ':' || c == '?' || c == '@' || c == '[' || c == '\\' || c == ']' || c == '*' || c == '<' || c == '^' ||
Here's the analysis of the provided code diff: Vulnerability Existed: yes [Insufficient Input Validation] [netwerk/base/nsStandardURL.cpp] [Lines 68-71] [Old Code] ```cpp return (c > 0 && c < 32) || // The control characters are [1, 31] c == ' ' || c == '#' || c == '/' || c == ':' || c == '?' || c == '@' || c == '[' || c == '\\' || c == ']' || c == '*' || c == '<' || c == '^' ``` [Fixed Code] ```cpp return (c > 0 && c < 32) || // The control characters are [1, 31] c == 0x7F || // DEL (delete) c == ' ' || c == '#' || c == '/' || c == ':' || c == '?' || c == '@' || c == '[' || c == '\\' || c == ']' || c == '*' || c == '<' || c == '^' ``` The vulnerability was related to insufficient input validation where the DEL character (0x7F) was not being properly filtered/validated in URL parsing. This could potentially allow malicious URLs containing DEL characters to bypass security checks. The fix adds explicit checking for the DEL character (0x7F) in the control character validation. This appears to be a security hardening measure to ensure all ASCII control characters (including DEL) are properly handled in URL parsing.
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.space.collapse.end.worker.js+++ /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.space.collapse.end.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'); var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')"); let fonts = (self.fonts ? self.fonts : document.fonts);@@ -27,8 +27,8 @@ ctx.fillStyle = '#0f0'; ctx.textAlign = 'right'; ctx.fillText('EE ', 100, 37.5);- _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); }).then(t_pass, t_fail); });
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 affect security. Here's the analysis: 1. Vulnerability Existed: no Variable Renaming [testing/web-platform/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js] [Lines 13-14, 27-28] 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 Variable Renaming [testing/web-platform/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js] [Lines 27-28] Old Code: _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); Fixed Code: _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); The changes are purely cosmetic, renaming the variable `offscreenCanvas` to `canvas` throughout the file. There are no security implications 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/security/manager/ssl/nsNSSCertificateDB.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/security/manager/ssl/nsNSSCertificateDB.cpp@@ -79,10 +79,7 @@ if (!cert) { return NS_OK; }- nsCOMPtr<nsIX509Cert> nssCert = nsNSSCertificate::Create(cert.get());- if (!nssCert) {- return NS_ERROR_OUT_OF_MEMORY;- }+ nsCOMPtr<nsIX509Cert> nssCert = new nsNSSCertificate(cert.get()); nssCert.forget(_cert); return NS_OK; }@@ -387,10 +384,7 @@ for (CERTCertListNode* node = CERT_LIST_HEAD(aCertListIn.get()); !CERT_LIST_END(node, aCertListIn.get()); node = CERT_LIST_NEXT(node)) {- RefPtr<nsIX509Cert> cert = nsNSSCertificate::Create(node->cert);- if (!cert) {- return NS_ERROR_OUT_OF_MEMORY;- }+ RefPtr<nsIX509Cert> cert = new nsNSSCertificate(node->cert); aCertListOut.AppendElement(cert); } return NS_OK;@@ -406,7 +400,6 @@ } nsTArray<nsTArray<uint8_t>> certsArray;- nsresult rv = getCertsFromPackage(certsArray, data, length); if (NS_FAILED(rv)) { return rv;@@ -419,11 +412,7 @@ // Now let's create some certs to work with for (nsTArray<uint8_t>& certDER : certsArray) {- nsCOMPtr<nsIX509Cert> cert = nsNSSCertificate::ConstructFromDER(- BitwiseCast<char*, uint8_t*>(certDER.Elements()), certDER.Length());- if (!cert) {- return NS_ERROR_FAILURE;- }+ nsCOMPtr<nsIX509Cert> cert = new nsNSSCertificate(std::move(certDER)); nsresult rv = array->AppendElement(cert); if (NS_FAILED(rv)) { return rv;@@ -568,7 +557,7 @@ UniquePK11SlotInfo slot(PK11_KeyForCertExists(cert.get(), nullptr, ctx)); if (!slot) {- nsCOMPtr<nsIX509Cert> certToShow = nsNSSCertificate::Create(cert.get());+ nsCOMPtr<nsIX509Cert> certToShow = new nsNSSCertificate(cert.get()); DisplayCertificateAlert(ctx, "UserCertIgnoredNoPrivateKey", certToShow); return NS_ERROR_FAILURE; }@@ -590,7 +579,7 @@ slot = nullptr; {- nsCOMPtr<nsIX509Cert> certToShow = nsNSSCertificate::Create(cert.get());+ nsCOMPtr<nsIX509Cert> certToShow = new nsNSSCertificate(cert.get()); DisplayCertificateAlert(ctx, "UserCertImported", certToShow); }@@ -890,10 +879,7 @@ return (PORT_GetError() == SEC_ERROR_NO_MEMORY) ? NS_ERROR_OUT_OF_MEMORY : NS_ERROR_FAILURE;- nsCOMPtr<nsIX509Cert> nssCert = nsNSSCertificate::Create(cert.get());- if (!nssCert) {- return NS_ERROR_OUT_OF_MEMORY;- }+ nsCOMPtr<nsIX509Cert> nssCert = new nsNSSCertificate(cert.get()); nssCert.forget(_retval); return NS_OK; }@@ -1253,11 +1239,6 @@ *aHasEVPolicy = false; *_retval = PR_UNKNOWN_ERROR;-- UniqueCERTCertificate nssCert(aCert->GetCert());- if (!nssCert) {- return NS_ERROR_INVALID_ARG;- } RefPtr<SharedCertVerifier> certVerifier(GetDefaultCertVerifier()); NS_ENSURE_TRUE(certVerifier, NS_ERROR_FAILURE);@@ -1295,13 +1276,8 @@ } if (result == mozilla::pkix::Success) {- for (const auto& certDER : resultChain) {- RefPtr<nsIX509Cert> cert = nsNSSCertificate::ConstructFromDER(- const_cast<char*>(reinterpret_cast<const char*>(certDER.Elements())),- static_cast<int>(certDER.Length()));- if (!cert) {- return NS_ERROR_FAILURE;- }+ for (auto& certDER : resultChain) {+ RefPtr<nsIX509Cert> cert = new nsNSSCertificate(std::move(certDER)); aVerifiedChain.AppendElement(cert); }
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Memory Allocation Error Handling] [security/manager/ssl/nsNSSCertificateDB.cpp] [Lines 79-84, 387-390, 890-894] Old Code: ``` nsCOMPtr<nsIX509Cert> nssCert = nsNSSCertificate::Create(cert.get()); if (!nssCert) { return NS_ERROR_OUT_OF_MEMORY; } ``` Fixed Code: ``` nsCOMPtr<nsIX509Cert> nssCert = new nsNSSCertificate(cert.get()); ``` 2. Vulnerability Existed: not sure [Memory Allocation Error Handling] [security/manager/ssl/nsNSSCertificateDB.cpp] [Lines 419-423] Old Code: ``` nsCOMPtr<nsIX509Cert> cert = nsNSSCertificate::ConstructFromDER( BitwiseCast<char*, uint8_t*>(certDER.Elements()), certDER.Length()); if (!cert) { return NS_ERROR_FAILURE; } ``` Fixed Code: ``` nsCOMPtr<nsIX509Cert> cert = new nsNSSCertificate(std::move(certDER)); ``` 3. Vulnerability Existed: not sure [Input Validation] [security/manager/ssl/nsNSSCertificateDB.cpp] [Lines 1253-1257] Old Code: ``` UniqueCERTCertificate nssCert(aCert->GetCert()); if (!nssCert) { return NS_ERROR_INVALID_ARG; } ``` Fixed Code: [Removed validation check] 4. Vulnerability Existed: not sure [Memory Allocation Error Handling] [security/manager/ssl/nsNSSCertificateDB.cpp] [Lines 1295-1301] Old Code: ``` RefPtr<nsIX509Cert> cert = nsNSSCertificate::ConstructFromDER( const_cast<char*>(reinterpret_cast<const char*>(certDER.Elements())), static_cast<int>(certDER.Length())); if (!cert) { return NS_ERROR_FAILURE; } ``` Fixed Code: ``` RefPtr<nsIX509Cert> cert = new nsNSSCertificate(std::move(certDER)); ``` The main pattern in these changes is replacing factory methods (`Create` and `ConstructFromDER`) with direct constructor calls, removing error checks for memory allocation failures. While this simplifies the code, it's unclear if this introduces any security vulnerabilities since the new operator in C++ typically throws exceptions on failure rather than returning null. The removal of the certificate validation check at lines 1253-1257 could potentially be a security concern, but without more context about the overall security model, it's difficult to assess.
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/client/shared/widgets/tooltip/EventTooltipHelper.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/shared/widgets/tooltip/EventTooltipHelper.js@@ -11,11 +11,12 @@ const Editor = require("devtools/client/shared/sourceeditor/editor"); const beautify = require("devtools/shared/jsbeautify/beautify");+const EventEmitter = require("devtools/shared/event-emitter"); const XHTML_NS = "http://www.w3.org/1999/xhtml"; const CONTAINER_WIDTH = 500;-class EventTooltip {+class EventTooltip extends EventEmitter { /** * Set the content of a provided HTMLTooltip instance to display a list of event * listeners, with their event type, capturing argument and a link to the code@@ -27,17 +28,26 @@ * A list of event listeners * @param {Toolbox} toolbox * Toolbox used to select debugger panel+ * @param {NodeFront} nodeFront+ * The nodeFront we're displaying event listeners for. */- constructor(tooltip, eventListenerInfos, toolbox) {+ constructor(tooltip, eventListenerInfos, toolbox, nodeFront) {+ super();+ this._tooltip = tooltip; this._toolbox = toolbox; this._eventEditors = new WeakMap();+ this._nodeFront = nodeFront;+ this._eventListenersAbortController = new AbortController(); // Used in tests: add a reference to the EventTooltip instance on the HTMLTooltip. this._tooltip.eventTooltip = this; this._headerClicked = this._headerClicked.bind(this);- this._debugClicked = this._debugClicked.bind(this);+ this._eventToggleCheckboxChanged = this._eventToggleCheckboxChanged.bind(+ this+ );+ this._subscriptions = []; const config = {@@ -109,7 +119,7 @@ filename.setAttribute("title", newURI); // This is emitted for testing.- this._tooltip.emit("event-tooltip-source-map-ready");+ this._tooltip.emitForTests("event-tooltip-source-map-ready"); } ) );@@ -159,6 +169,27 @@ capturing.setAttribute("title", phase); attributesBox.appendChild(capturing); }++ const toggleListenerCheckbox = doc.createElementNS(XHTML_NS, "input");+ toggleListenerCheckbox.type = "checkbox";+ toggleListenerCheckbox.className =+ "event-tooltip-listener-toggle-checkbox";+ if (listener.eventListenerInfoId) {+ toggleListenerCheckbox.checked = listener.enabled;+ toggleListenerCheckbox.setAttribute(+ "data-event-listener-info-id",+ listener.eventListenerInfoId+ );+ toggleListenerCheckbox.addEventListener(+ "change",+ this._eventToggleCheckboxChanged,+ { signal: this._eventListenersAbortController.signal }+ );+ } else {+ toggleListenerCheckbox.checked = true;+ toggleListenerCheckbox.setAttribute("disabled", true);+ }+ header.appendChild(toggleListenerCheckbox); // Content const editor = new Editor(config);@@ -182,10 +213,21 @@ } _addContentListeners(header) {- header.addEventListener("click", this._headerClicked);+ header.addEventListener("click", this._headerClicked, {+ signal: this._eventListenersAbortController.signal,+ }); } _headerClicked(event) {+ // Clicking on the checkbox shouldn't impact the header (checkbox state change is+ // handled in _eventToggleCheckboxChanged).+ if (+ event.target.classList.contains("event-tooltip-listener-toggle-checkbox")+ ) {+ event.stopPropagation();+ return;+ }+ if (event.target.classList.contains("event-tooltip-debugger-icon")) { this._debugClicked(event); event.stopPropagation();@@ -241,7 +283,7 @@ content.scrollIntoView(false); }- this._tooltip.emit("event-tooltip-ready");+ this._tooltip.emitForTests("event-tooltip-ready"); }); } }@@ -264,6 +306,24 @@ location.id ); }+ }++ async _eventToggleCheckboxChanged(event) {+ const checkbox = event.currentTarget;+ const id = checkbox.getAttribute("data-event-listener-info-id");+ if (checkbox.checked) {+ await this._nodeFront.enableEventListener(id);+ } else {+ await this._nodeFront.disableEventListener(id);+ }+ this.emit("event-tooltip-listener-toggled", {+ hasDisabledEventListeners:+ // No need to query the other checkboxes if the handled checkbox is unchecked+ !checkbox.checked ||+ this._tooltip.doc.querySelector(+ `input.event-tooltip-listener-toggle-checkbox:not(:checked)`+ ) !== null,+ }); } /**@@ -308,24 +368,17 @@ this._tooltip.eventTooltip = null; }- const headerNodes = this.container.querySelectorAll(".event-header");-- for (const node of headerNodes) {- node.removeEventListener("click", this._headerClicked);- }-- const sourceNodes = this.container.querySelectorAll(- ".event-tooltip-debugger-icon"- );- for (const node of sourceNodes) {- node.removeEventListener("click", this._debugClicked);+ this.clearEvents();+ if (this._eventListenersAbortController) {+ this._eventListenersAbortController.abort();+ this._eventListenersAbortController = null; } for (const unsubscribe of this._subscriptions) { unsubscribe(); }- this._toolbox = this._tooltip = null;+ this._toolbox = this._tooltip = this._nodeFront = null; } }
Here is the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Event Listener Memory Leak] [devtools/client/shared/widgets/tooltip/EventTooltipHelper.js] [Lines 27, 41, 163-165, 308-311] [Old Code] Constructor and event listeners were added without proper cleanup mechanism [Fixed Code] Added AbortController for proper cleanup of event listeners in destroy() method 2. Vulnerability Existed: not sure [Potential Cross-Site Scripting (XSS)] [devtools/client/shared/widgets/tooltip/EventTooltipHelper.js] [Lines 109, 119] [Old Code] Directly setting title attribute without sanitization [Fixed Code] Changed to use emitForTests() which might have better handling (though not clear if this fully addresses XSS) 3. Vulnerability Existed: not sure [Improper Event Handling] [devtools/client/shared/widgets/tooltip/EventTooltipHelper.js] [Lines 182-184, 213-215] [Old Code] Event listeners could potentially fire after component destruction [Fixed Code] Added signal parameter to event listeners for better lifecycle management 4. Vulnerability Existed: not sure [Insecure Direct Object Reference] [devtools/client/shared/widgets/tooltip/EventTooltipHelper.js] [Lines 306-324] [Old Code] No direct reference to nodeFront in constructor [Fixed Code] Added nodeFront reference and proper event listener toggling with security checks Note: While the changes appear to improve security by adding better event lifecycle management and more controlled event handling, it's not entirely clear if these were fixing specific known vulnerabilities or just general code improvements. The changes do address several potential security concerns that could lead to memory leaks or improper event 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.gradient.radial.transform.1.worker.js+++ /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.gradient.radial.transform.1.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'); var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); g.addColorStop(0, '#0f0');@@ -25,9 +25,9 @@ ctx.translate(50, 25); ctx.scale(10, 10); ctx.fillRect(-5, -2.5, 10, 5);-_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255");+_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); t.done(); });
Based on the provided code diff, here's the analysis following the required format: Vulnerability Existed: no No security vulnerability found [testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js] [Lines 13-25] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); _assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); _assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); The changes appear to be purely a variable name change from `offscreenCanvas` to `canvas` for consistency or readability, with no security implications. The functionality remains identical, just using a different variable name. No security vulnerabilities were fixed 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/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js+++ /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.gradient.object.invalidcolour.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'); var g = ctx.createLinearGradient(0, 0, 100, 0); assert_throws_dom("SYNTAX_ERR", function() { g.addColorStop(0, ""); });
Analysis of the provided code diff: 1. Vulnerability Existed: no No specific vulnerability found [File] [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` - The functionality remains exactly the same, just with a different variable name - No security implications or vulnerabilities are apparent in this change - The test continues to check for proper error handling of invalid color stops in canvas gradients
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-contain/contain-strict-011.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-contain/contain-strict-011.html@@ -8,7 +8,6 @@ <link rel="help" href="https://drafts.csswg.org/css-contain/#contain-property"> <link rel="match" href="reference/contain-strict-011-ref.html">- <meta name="flags" content=""> <meta name="assert" content="'contain: strict' turns on style containment. So, in this test, the counter of spans should not be reset and must not be reset."> <style>
Analyzing the provided code diff: 1. Vulnerability Existed: no No specific vulnerability [File] testing/web-platform/tests/css/css-contain/contain-strict-011.html [Lines] 8 [Old Code] `<meta name="flags" content="">` [Fixed Code] (line removed) Additional Details: - This appears to be a simple cleanup of an empty meta tag rather than a security fix - No vulnerability indicators found in the removed line - The change doesn't appear to address any security-related functionality Note: Without seeing the full file context or more of the diff, I can only analyze the specific changes shown. The modification shown appears to be a benign 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/testing/web-platform/tests/css/css-shapes/shape-outside/shape-box/shape-outside-margin-box-border-radius-008.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-shapes/shape-outside/shape-box/shape-outside-margin-box-border-radius-008.html@@ -9,7 +9,6 @@ <link rel="author" title="Mozilla" href="http://www.mozilla.org/"> <link rel="help" href="https://drafts.csswg.org/css-shapes-1/#shapes-from-box-values"> <link rel="match" href="reference/shape-outside-margin-box-border-radius-008-ref.html">- <meta name="flags" content=""> <meta name="assert" content="Test the boxes are wrapping around the right float shape in ltr container defined by the margin-box and border-top-left-radius value."> <style> .bfc {
Based on the provided code diff, I'll analyze it for potential security vulnerabilities: Vulnerability Existed: no No specific vulnerability found [File] testing/web-platform/tests/css/css-shapes/shape-outside/shape-box/shape-outside-margin-box-border-radius-008.html [Lines] 9 [Old Code] <meta name="flags" content=""> [Fixed Code] (line removed) Additional Details: - The change simply removes an empty meta tag for "flags" which doesn't appear to be security-related - This seems to be a cleanup change rather than a security fix - No known vulnerability patterns or security issues are addressed by this change - The modification is part of test file maintenance rather than security hardening The diff shows no evidence of security vulnerabilities being fixed - it's a minor HTML cleanup change in a test file.
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/ipc/NeckoChild.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/netwerk/ipc/NeckoChild.h@@ -19,12 +19,15 @@ friend class PNeckoChild; public:+ NS_INLINE_DECL_THREADSAFE_REFCOUNTING(NeckoChild, override)+ NeckoChild() = default;- virtual ~NeckoChild(); static void InitNeckoChild(); protected:+ virtual ~NeckoChild();+ PStunAddrsRequestChild* AllocPStunAddrsRequestChild(); bool DeallocPStunAddrsRequestChild(PStunAddrsRequestChild* aActor);
Here's the analysis of the provided code diff: 1. Vulnerability Existed: not sure Potential Thread Safety Issue [File] netwerk/ipc/NeckoChild.h [Lines] 19-22 [Old Code] ```cpp public: NeckoChild() = default; virtual ~NeckoChild(); ``` [Fixed Code] ```cpp public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(NeckoChild, override) NeckoChild() = default; protected: virtual ~NeckoChild(); ``` Additional Details: The change adds thread-safe reference counting and moves the destructor to protected. While this improves thread safety, it's unclear if this was fixing an actual vulnerability or just a preventative measure. 2. Vulnerability Existed: not sure Potential Memory Management Issue [File] netwerk/ipc/NeckoChild.h [Lines] 19-22 [Old Code] ```cpp public: virtual ~NeckoChild(); ``` [Fixed Code] ```cpp protected: virtual ~NeckoChild(); ``` Additional Details: Moving the destructor to protected could prevent improper deletion of the object, but it's unclear if this was fixing an actual vulnerability or just improving code safety. Note: The changes appear to be related to improving thread safety and memory management, but without more context about how this class was being used, it's difficult to determine if these were fixing actual vulnerabilities or just preventative improvements. The addition of thread-safe reference counting suggests potential multi-threading concerns were addressed.
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/workers/MessageEventRunnable.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/workers/MessageEventRunnable.cpp@@ -11,7 +11,6 @@ #include "mozilla/TimelineConsumers.h" #include "mozilla/WorkerTimelineMarker.h" #include "nsQueryObject.h"-#include "WorkerPrivate.h" #include "WorkerScope.h" namespace mozilla {
Based on the provided diff, here's the analysis: Vulnerability Existed: not sure [Potentially unused header inclusion] [dom/workers/MessageEventRunnable.cpp] [Lines 11] [Old Code] #include "WorkerPrivate.h" [Fixed Code] [Removed line] Additional Details: - The diff shows removal of an unused header file inclusion ("WorkerPrivate.h") - While removing unused headers is generally good practice, it's not clear if this was related to a security vulnerability - Without more context about the functionality and whether WorkerPrivate.h contained vulnerable code, we can't determine if this was a security fix - This could potentially be part of a larger security fix where the header was no longer needed after other security-related changes Note: There doesn't appear to be any obvious security vulnerability fixed in this specific diff. The change seems to be more about code cleanup than 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/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.1.double.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.roundrect.2.radii.1.double.worker.js@@ -13,18 +13,18 @@ }); 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); ctx.roundRect(0, 0, 100, 50, [20, 0]); ctx.fillStyle = '#0f0'; ctx.fill();-_assertPixel(offscreenCanvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255");-_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");-_assertPixel(offscreenCanvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255");-_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");+_assertPixel(canvas, 1,1, 255,0,0,255, "1,1", "255,0,0,255");+_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");+_assertPixel(canvas, 98,48, 255,0,0,255, "98,48", "255,0,0,255");+_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "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 (from `offscreenCanvas` to `canvas`) and updating the corresponding assertions to use the new variable name. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found in this diff. The changes are purely variable renaming for consistency or clarity purposes. Additional Details: - The file is a test file for canvas functionality - The changes don't modify any security-relevant behavior - No security-related functions or patterns were modified - The test assertions remain functionally identical, just using a different variable name The diff shows no security fixes, only a refactoring of variable names in test 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/js/src/jit/arm/Simulator-arm.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/js/src/jit/arm/Simulator-arm.cpp@@ -2376,6 +2376,19 @@ int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32Int32General)( int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);+typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General)(+ int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);+typedef int32_t (+ *Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General)(+ int32_t, int32_t, float, float, int32_t, int32_t, int32_t, int32_t);+typedef int32_t (+ *Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General)(+ int32_t, int32_t, float, float, float, float, int32_t, int32_t, int32_t,+ int32_t, int32_t);+typedef int32_t (+ *Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General)(+ int32_t, int32_t, float, float, int32_t, float, float, int32_t, float,+ int32_t, int32_t, int32_t, int32_t, int32_t); typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32General)( int32_t, int32_t, int32_t, int32_t, int32_t); typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int64)(int32_t, int32_t,@@ -2463,6 +2476,11 @@ int32_t arg6 = stack_pointer[2]; int32_t arg7 = stack_pointer[3]; int32_t arg8 = stack_pointer[4];+ int32_t arg9 = stack_pointer[5];+ int32_t arg10 = stack_pointer[6];+ int32_t arg11 = stack_pointer[7];+ int32_t arg12 = stack_pointer[8];+ int32_t arg13 = stack_pointer[9]; int32_t saved_lr = get_register(lr); intptr_t external =@@ -2863,6 +2881,85 @@ reinterpret_cast< Prototype_Int32_GeneralInt32Int32Int32Int32General>(external); int64_t result = target(arg0, arg1, arg2, arg3, arg4, arg5);+ scratchVolatileRegisters(/* scratchFloat = true */);+ setCallResult(result);+ break;+ }+ case Args_Int32_GeneralInt32Int32Int32Int32Int32Int32General: {+ Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General target =+ reinterpret_cast<+ Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General>(+ external);+ int64_t result =+ target(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);+ scratchVolatileRegisters(/* scratchFloat = true */);+ setCallResult(result);+ break;+ }+ case Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General: {+ float fval0, fval1;+ if (UseHardFpABI()) {+ get_float_from_s_register(2, &fval0);+ get_float_from_s_register(3, &fval1);+ } else {+ fval0 = mozilla::BitwiseCast<float>(arg2);+ fval1 = mozilla::BitwiseCast<float>(arg3);+ }+ Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General+ target = reinterpret_cast<+ Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General>(+ external);+ int64_t result =+ target(arg0, arg1, fval0, fval1, arg4, arg5, arg6, arg7);+ scratchVolatileRegisters(/* scratchFloat = true */);+ setCallResult(result);+ break;+ }+ case Args_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General: {+ float fval0, fval1, fval2, fval3;+ if (UseHardFpABI()) {+ get_float_from_s_register(2, &fval0);+ get_float_from_s_register(3, &fval1);+ get_float_from_s_register(4, &fval2);+ get_float_from_s_register(5, &fval3);+ } else {+ fval0 = mozilla::BitwiseCast<float>(arg2);+ fval1 = mozilla::BitwiseCast<float>(arg3);+ fval2 = mozilla::BitwiseCast<float>(arg4);+ fval3 = mozilla::BitwiseCast<float>(arg5);+ }+ Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General+ target = reinterpret_cast<+ Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General>(+ external);+ int64_t result = target(arg0, arg1, fval0, fval1, fval2, fval3, arg6,+ arg7, arg8, arg9, arg10);+ scratchVolatileRegisters(/* scratchFloat = true */);+ setCallResult(result);+ break;+ }+ case Args_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General: {+ float fval0, fval1, fval2, fval3, fval4;+ if (UseHardFpABI()) {+ get_float_from_s_register(2, &fval0);+ get_float_from_s_register(3, &fval1);+ get_float_from_s_register(5, &fval2);+ get_float_from_s_register(6, &fval3);+ get_float_from_s_register(8, &fval4);+ } else {+ fval0 = mozilla::BitwiseCast<float>(arg2);+ fval1 = mozilla::BitwiseCast<float>(arg3);+ fval2 = mozilla::BitwiseCast<float>(arg5);+ fval3 = mozilla::BitwiseCast<float>(arg6);+ fval4 = mozilla::BitwiseCast<float>(arg8);+ }+ Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General+ target = reinterpret_cast<+ Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General>(+ external);+ int64_t result =+ target(arg0, arg1, fval0, fval1, arg4, fval2, fval3, arg7, fval4,+ arg9, arg10, arg11, arg12, arg13); scratchVolatileRegisters(/* scratchFloat = true */); setCallResult(result); break;
After analyzing the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be adding new function prototypes and handling cases for additional argument combinations in the ARM simulator code. Here's my analysis: 1. Vulnerability Existed: no No specific vulnerability [File] js/src/jit/arm/Simulator-arm.cpp [Lines] 2376-2881 [Old Code] (Only existing prototypes and cases) [Fixed Code] (Added new prototypes and cases for additional argument combinations) The changes primarily consist of: 1. Adding new function pointer typedefs for different argument combinations 2. Adding support for more arguments (up to 13) in the stack reading 3. Adding new case handlers for different argument patterns including mixed int/float arguments These appear to be functional enhancements rather than security fixes, likely to support more complex function calls in the ARM simulator. There's no evidence of patching buffer overflows, type confusion, or other common vulnerability patterns. If there were any security implications, they would be related to the correctness of argument handling, but the diff doesn't show any fixes to existing vulnerable code - only additions of new 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/tools/profiler/core/platform-linux-android.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/tools/profiler/core/platform-linux-android.cpp@@ -297,6 +297,25 @@ return aRawValue; }+static RunningTimes GetProcessRunningTimesDiff(+ PSLockRef aLock, RunningTimes& aPreviousRunningTimesToBeUpdated) {+ AUTO_PROFILER_STATS(GetProcessRunningTimes);++ RunningTimes newRunningTimes;+ {+ AUTO_PROFILER_STATS(GetProcessRunningTimes_clock_gettime);+ if (timespec ts; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts) == 0) {+ newRunningTimes.SetThreadCPUDelta(uint64_t(ts.tv_sec) * 1'000'000'000u ++ uint64_t(ts.tv_nsec));+ }+ newRunningTimes.SetPostMeasurementTimeStamp(TimeStamp::Now());+ };++ const RunningTimes diff = newRunningTimes - aPreviousRunningTimesToBeUpdated;+ aPreviousRunningTimesToBeUpdated = newRunningTimes;+ return diff;+}+ static RunningTimes GetThreadRunningTimesDiff( PSLockRef aLock, ThreadRegistration::UnlockedRWForLockedProfiler& aThreadData) {@@ -564,36 +583,21 @@ // // We provide no paf_child() function to run in the child after forking. This // is fine because we always immediately exec() after fork(), and exec()-// clobbers all process state. (At one point we did have a paf_child()-// function, but it caused problems related to locking gPSMutex. See bug-// 1348374.)+// clobbers all process state. Also, we don't want the sampler to resume in the+// child process between fork() and exec(), it would be wasteful. // // Unfortunately all this is only doable on non-Android because Bionic doesn't // have pthread_atfork.-// In the parent, before the fork, record IsSamplingPaused, and then pause.-static void paf_prepare() {- MOZ_RELEASE_ASSERT(CorePS::Exists());-- PSAutoLock lock;-- if (ActivePS::Exists(lock)) {- ActivePS::SetWasSamplingPaused(lock, ActivePS::IsSamplingPaused(lock));- ActivePS::SetIsSamplingPaused(lock, true);- }-}--// In the parent, after the fork, return IsSamplingPaused to the pre-fork state.-static void paf_parent() {- MOZ_RELEASE_ASSERT(CorePS::Exists());-- PSAutoLock lock;-- if (ActivePS::Exists(lock)) {- ActivePS::SetIsSamplingPaused(lock, ActivePS::WasSamplingPaused(lock));- ActivePS::SetWasSamplingPaused(lock, false);- }-}+// In the parent, before the fork, increase gSkipSampling to ensure that+// profiler sampling loops will be skipped. There could be one in progress now,+// causing a small delay, but further sampling will be skipped, allowing `fork`+// to complete.+static void paf_prepare() { ++gSkipSampling; }++// In the parent, after the fork, decrease gSkipSampling to let the sampler+// resume sampling (unless other places have made it non-zero as well).+static void paf_parent() { --gSkipSampling; } static void PlatformInit(PSLockRef aLock) { // Set up the fork handlers.
I'll analyze the provided code diff for security fixes following the specified format. 1. Vulnerability Existed: yes Race Condition in Fork Handling [tools/profiler/core/platform-linux-android.cpp] [Lines 564-583] [Old Code] static void paf_prepare() { MOZ_RELEASE_ASSERT(CorePS::Exists()); PSAutoLock lock; if (ActivePS::Exists(lock)) { ActivePS::SetWasSamplingPaused(lock, ActivePS::IsSamplingPaused(lock)); ActivePS::SetIsSamplingPaused(lock, true); } } static void paf_parent() { MOZ_RELEASE_ASSERT(CorePS::Exists()); PSAutoLock lock; if (ActivePS::Exists(lock)) { ActivePS::SetIsSamplingPaused(lock, ActivePS::WasSamplingPaused(lock)); ActivePS::SetWasSamplingPaused(lock, false); } } [Fixed Code] static void paf_prepare() { ++gSkipSampling; } static void paf_parent() { --gSkipSampling; } Additional Details: The old implementation used locks during fork handling which could lead to deadlocks or race conditions. The new implementation uses atomic increment/decrement operations which are safer in fork scenarios. 2. Vulnerability Existed: not sure Potential Time-of-Check-Time-of-Use (TOCTOU) [tools/profiler/core/platform-linux-android.cpp] [Lines 297-318] [Old Code] (None - this is a new function) [Fixed Code] static RunningTimes GetProcessRunningTimesDiff( PSLockRef aLock, RunningTimes& aPreviousRunningTimesToBeUpdated) { AUTO_PROFILER_STATS(GetProcessRunningTimes); RunningTimes newRunningTimes; { AUTO_PROFILER_STATS(GetProcessRunningTimes_clock_gettime); if (timespec ts; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts) == 0) { newRunningTimes.SetThreadCPUDelta(uint64_t(ts.tv_sec) * 1'000'000'000u + uint64_t(ts.tv_nsec)); } newRunningTimes.SetPostMeasurementTimeStamp(TimeStamp::Now()); }; const RunningTimes diff = newRunningTimes - aPreviousRunningTimesToBeUpdated; aPreviousRunningTimesToBeUpdated = newRunningTimes; return diff; } Additional Details: While this appears to be a new feature rather than a security fix, there could be potential TOCTOU issues with the time measurement if not properly synchronized, though the presence of PSLockRef suggests locking is handled elsewhere.
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.