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/css-shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-021.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/supported-shapes/polygon/shape-outside-polygon-021.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/#supported-basic-shapes"> <link rel="match" href="reference/shape-outside-polygon-021-ref.html">- <meta name="flags" content=""> <meta name="assert" content="Test the boxes are wrapping around the right float shape defined by the polygon(60px 20px, 100px 60px, 20px 60px, 60px 100px) border-box value under vertical-rl writing-mode."> <style> .container {
Based on the provided code diff, here's the analysis: Vulnerability Existed: no No security vulnerability found [File] [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 appears to be test-related configuration - No security implications were found in this change - The modification seems to be cleanup/refactoring rather than a security fix - No known vulnerability patterns (XSS, injection, etc.) are present in this change The analysis shows no security vulnerabilities were fixed in this diff. The change is purely removing an unused or unnecessary meta tag from the 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/browser/components/preferences/dialogs/colors.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/components/preferences/dialogs/colors.js@@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */-/* import-globals-from ../../../../toolkit/content/preferencesBindings.js */+/* import-globals-from /toolkit/content/preferencesBindings.js */ document .getElementById("ColorsDialog")
Let me analyze the code diff for potential security fixes: Vulnerability Existed: not sure [Potential Path Traversal or Improper Resource Path] [browser/components/preferences/dialogs/colors.js] [Lines 2] [Old Code] /* import-globals-from ../../../../toolkit/content/preferencesBindings.js */ [Fixed Code] /* import-globals-from /toolkit/content/preferencesBindings.js */ Additional Details: - The change involves modifying the path to an imported file from a relative path to an absolute path - While this might not represent a direct security vulnerability, it could be related to: 1. More reliable resource loading (preventing potential path traversal issues) 2. Better path resolution consistency 3. Fixing potential issues with relative path resolution in different contexts - Without more context, it's hard to determine if this was fixing an actual vulnerability or just improving code robustness
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.clip.source-over.worker.js+++ /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.clip.source-over.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';@@ -24,8 +24,8 @@ ctx.clip(); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 50, 50);-_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,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, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, here's the security assessment: 1. Vulnerability Existed: no No specific vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js [Lines] 13-24 [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); 2. Vulnerability Existed: no No specific vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.clip.source-over.worker.js [Lines] 24-25 [Old Code] _assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); _assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); [Fixed Code] _assertPixel(canvas, 25,25, 0,255,0,255, "25,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 variable name refactoring (renaming 'offscreenCanvas' to 'canvas') with no security implications. The functionality remains identical, just with a different variable name. No security vulnerabilities were identified 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/remote/marionette/browser.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/remote/marionette/browser.js@@ -14,6 +14,7 @@ AppInfo: "chrome://remote/content/marionette/appinfo.js", error: "chrome://remote/content/shared/webdriver/Errors.jsm", MessageManagerDestroyedPromise: "chrome://remote/content/marionette/sync.js",+ TabManager: "chrome://remote/content/shared/TabManager.jsm", waitForEvent: "chrome://remote/content/marionette/sync.js", WebElementEventTarget: "chrome://remote/content/marionette/dom.js", windowManager: "chrome://remote/content/shared/WindowManager.jsm",@@ -61,91 +62,6 @@ Context.Content = "content"; this.Context = Context;-// GeckoView shim for Desktop's gBrowser-class MobileTabBrowser {- constructor(window) {- this.window = window;- }-- get tabs() {- return [this.window.tab];- }-- get selectedTab() {- return this.window.tab;- }-- set selectedTab(tab) {- if (tab != this.selectedTab) {- throw new Error("GeckoView only supports a single tab");- }-- // Synthesize a custom TabSelect event to indicate that a tab has been- // selected even when we don't change it.- const event = this.window.CustomEvent("TabSelect", {- bubbles: true,- cancelable: false,- detail: {- previousTab: this.selectedTab,- },- });- this.window.document.dispatchEvent(event);- }-- get selectedBrowser() {- return this.selectedTab.linkedBrowser;- }-- addEventListener() {- this.window.addEventListener(...arguments);- }-- removeEventListener() {- this.window.removeEventListener(...arguments);- }-}--/**- * Get the <code><xul:browser></code> for the specified tab.- *- * @param {Tab} tab- * The tab whose browser needs to be returned.- *- * @return {Browser}- * The linked browser for the tab or null if no browser can be found.- */-browser.getBrowserForTab = function(tab) {- if (tab && "linkedBrowser" in tab) {- return tab.linkedBrowser;- }-- return null;-};--/**- * Return the tab browser for the specified chrome window.- *- * @param {ChromeWindow} win- * Window whose <code>tabbrowser</code> needs to be accessed.- *- * @return {Tab}- * Tab browser or null if it's not a browser window.- */-browser.getTabBrowser = function(window) {- // GeckoView- if (AppInfo.isAndroid) {- return new MobileTabBrowser(window);- // Firefox- } else if ("gBrowser" in window) {- return window.gBrowser;- // Thunderbird- } else if (window.document.getElementById("tabmail")) {- return window.document.getElementById("tabmail");- }-- return null;-};- /** * Creates a browsing context wrapper. *@@ -165,7 +81,7 @@ // In Firefox this is <xul:tabbrowser> (not <xul:browser>!) // and MobileTabBrowser in GeckoView.- this.tabBrowser = browser.getTabBrowser(this.window);+ this.tabBrowser = TabManager.getTabBrowser(this.window); // Used to set curFrameId upon new session this.newSession = true;@@ -186,7 +102,7 @@ */ get contentBrowser() { if (this.tab) {- return browser.getBrowserForTab(this.tab);+ return TabManager.getBrowserForTab(this.tab); } else if ( this.tabBrowser && this.driver.isReftestBrowser(this.tabBrowser)@@ -374,7 +290,7 @@ if (window) { this.window = window;- this.tabBrowser = browser.getTabBrowser(this.window);+ this.tabBrowser = TabManager.getTabBrowser(this.window); } if (!this.tabBrowser) {
Based on the provided code diff, I'll analyze the changes for potential security fixes: 1. Vulnerability Existed: not sure [Potential Code Organization/Modularization Improvement] [remote/marionette/browser.js] [Lines 14, 61-91, 165, 186, 374] [Old Code] Various direct function calls to browser.getTabBrowser and browser.getBrowserForTab [Fixed Code] Using TabManager.getTabBrowser and TabManager.getBrowserForTab instead The main change appears to be moving browser tab management functionality into a separate TabManager module. While this doesn't directly indicate a security vulnerability fix, it could be part of a larger security improvement by: 1. Better encapsulating tab-related operations 2. Centralizing security checks 3. Following principle of least privilege However, without seeing the implementation of TabManager.jsm, I can't confirm if this was specifically for security purposes or just code organization. Note: There are no clear vulnerability names associated with this change, and the modification appears to be more architectural than directly security-related. The removal of the MobileTabBrowser class and related functions suggests a refactoring rather than a direct 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/dom/media/CanvasCaptureMediaStream.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/media/CanvasCaptureMediaStream.h@@ -67,6 +67,12 @@ NS_INLINE_DECL_THREADSAFE_REFCOUNTING(OutputStreamDriver); /*+ * Called from js' requestFrame() when it wants the next painted frame to be+ * explicitly captured.+ */+ virtual void RequestFrameCapture() = 0;++ /* * Sub classes can SetImage() to update the image being appended to the * output stream. It will be appended on the next NotifyPull from MTG. */@@ -77,12 +83,6 @@ * requested for it. */ void EndTrack();-- /*- * Makes sure any internal resources this driver is holding that may create- * reference cycles are released.- */- virtual void Forget() {} const RefPtr<SourceMediaTrack> mSourceStream; const PrincipalHandle mPrincipalHandle;
Analyzing the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Resource Management Issue] [dom/media/CanvasCaptureMediaStream.h] [Lines 77-83] [Old Code] /* * Makes sure any internal resources this driver is holding that may create * reference cycles are released. */ virtual void Forget() {} [Fixed Code] [Removed in the diff] Additional Details: - The diff shows removal of a virtual `Forget()` method that was previously used to release resources that might create reference cycles. While this could potentially lead to resource management issues if not properly handled elsewhere, there's no clear evidence this was a security vulnerability. The change might be part of a refactoring or cleanup. 2. Vulnerability Existed: no [Functionality Addition] [dom/media/CanvasCaptureMediaStream.h] [Lines 67-72] [Old Code] [Empty - new code added] [Fixed Code] /* * Called from js' requestFrame() when it wants the next painted frame to be * explicitly captured. */ virtual void RequestFrameCapture() = 0; Additional Details: - This is clearly an addition of new functionality (frame capture request capability) rather than a security fix. No vulnerabilities are being addressed here. Note: The diff shows structural changes but doesn't clearly indicate any security vulnerabilities being fixed. The removal of `Forget()` might warrant further investigation, but without more context, it's impossible to determine if this was security-related.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/xpcom/rust/xpcom/src/services.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/xpcom/rust/xpcom/src/services.rs@@ -6,4 +6,4 @@ //! //! The contents of this file are generated from `xpcom/build/Services.py`.-include!(concat!(env!("MOZ_TOPOBJDIR"), "/xpcom/build/services.rs"));+include!(mozbuild::objdir_path!("xpcom/build/services.rs"));
Here's the analysis of the provided code diff: Vulnerability Existed: not sure [Potential Path Injection] [xpcom/rust/xpcom/src/services.rs] [Lines 6] [Old Code] `include!(concat!(env!("MOZ_TOPOBJDIR"), "/xpcom/build/services.rs"));` [Fixed Code] `include!(mozbuild::objdir_path!("xpcom/build/services.rs"));` Additional Details: 1. The change replaces a direct environment variable concatenation with a more controlled path construction method. 2. While not a confirmed vulnerability, using environment variables directly in path construction could potentially lead to path injection if the environment variable can be controlled by an attacker. 3. The new version uses a dedicated macro (`mozbuild::objdir_path!`) which likely provides safer path 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/third_party/rust/darling/src/lib.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/darling/src/lib.rs@@ -43,7 +43,7 @@ //! ### `FromField` //! |Field name|Type|Meaning| //! |---|---|---|-//! |`ident`|`syn::Ident`|The identifier of the passed-in field|+//! |`ident`|`Option<syn::Ident>`|The identifier of the passed-in field, or `None` for tuple fields| //! |`vis`|`syn::Visibility`|The visibility of the passed-in field| //! |`ty`|`syn::Type`|The type of the passed-in field| //! |`attrs`|`Vec<syn::Attribute>`|The forwarded attributes from the passed in field. These are controlled using the `forward_attrs` attribute.|@@ -55,9 +55,16 @@ //! |`bounds`|`Vec<syn::TypeParamBound>`|The bounds applied to the type param| //! |`default`|`Option<syn::Type>`|The default type of the parameter, if one exists| //! |`attrs`|`Vec<syn::Attribute>`|The forwarded attributes from the passed in type param. These are controlled using the `forward_attrs` attribute.|+//!+//! ### `FromVariant`+//! |Field name|Type|Meaning|+//! |---|---|---|+//! |`ident`|`syn::Ident`|The identifier of the passed-in variant|+//! |`discriminant`|`Option<syn::Expr>`|For a variant such as `Example = 2`, the `2`|+//! |`fields`|`Option<darling::ast::Fields<__>>`|The fields associated with the variant|+//! |`attrs`|`Vec<syn::Attribute>`|The forwarded attributes from the passed in variant. These are controlled using the `forward_attrs` attribute.| extern crate core;-extern crate darling_core; #[allow(unused_imports)] #[macro_use]@@ -67,8 +74,10 @@ pub use darling_macro::*; #[doc(inline)]-pub use darling_core::{FromDeriveInput, FromField, FromGenericParam, FromGenerics, FromMeta,- FromTypeParam, FromVariant};+pub use darling_core::{+ FromAttributes, FromDeriveInput, FromField, FromGenericParam, FromGenerics, FromMeta,+ FromTypeParam, FromVariant,+}; #[doc(inline)] pub use darling_core::{Error, Result};@@ -90,8 +99,8 @@ pub use core::default::Default; pub use core::option::Option::{self, None, Some}; pub use core::result::Result::{self, Err, Ok};+ pub use std::string::ToString; pub use std::vec::Vec;- pub use std::string::ToString; } #[macro_use]
After analyzing the provided code diff, I don't find any security vulnerabilities. The changes appear to be documentation updates and minor code reorganization rather than security fixes. Here's the analysis following your requested format: 1. Vulnerability Existed: no No security vulnerability found in the diff. The changes are: - Documentation updates for `FromField` and `FromVariant` traits - Removal of `extern crate darling_core` (now using direct re-exports) - Reorganization of imports - Addition of `FromAttributes` to the re-exported items - Reordering of some `use` statements The changes are primarily documentation improvements and code cleanup rather than security-related fixes. The most notable changes are: 1. Changing `ident` type in `FromField` documentation from `syn::Ident` to `Option<syn::Ident>` 2. Adding documentation for the `FromVariant` trait 3. Reorganizing imports and exports None of these changes appear to address any security vulnerabilities. They seem to be routine maintenance and documentation improvements.
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/pixel-manipulation/2d.imageData.put.clip.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.put.clip.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)@@ -25,8 +25,8 @@ ctx.rect(0, 0, 50, 50); ctx.clip(); ctx.putImageData(imgdata, 0, 0);-_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); 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: Vulnerability Existed: no No security vulnerability found [File] [Lines 13-14, 25-26] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _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] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _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 only involve renaming the variable from `offscreenCanvas` to `canvas` and updating the references accordingly. There are no security implications to these changes.
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/webconsole/components/Input/EvaluationContextSelector.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/webconsole/components/Input/EvaluationContextSelector.js@@ -154,7 +154,10 @@ } }- const items = [mainTarget];+ // Note that while debugging popups, we might have a small period+ // of time where we don't have any top level target when we reload+ // the original tab+ const items = mainTarget ? [mainTarget] : []; for (const [targetType, menuItems] of Object.entries(dict)) { if (menuItems.length > 0) {
Let me analyze the code diff for potential security vulnerabilities. Vulnerability Existed: not sure Potential Null Reference Vulnerability [File] [Lines 154-157] [Old Code] const items = [mainTarget]; [Fixed Code] // Note that while debugging popups, we might have a small period // of time where we don't have any top level target when we reload // the original tab const items = mainTarget ? [mainTarget] : []; Additional Details: The change adds a null check for `mainTarget` before using it in an array. While this prevents potential null reference errors, it's not clear if this was an actual security vulnerability or just a defensive programming improvement. The comment suggests it's related to debugging scenarios where `mainTarget` might be temporarily unavailable. Without more context about how this array is used later in the code, we can't be certain if this could have led to 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.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/dom/media/mediasink/AudioSink.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/media/mediasink/AudioSink.h@@ -78,11 +78,14 @@ nsresult InitializeAudioStream(const PlaybackParams& aParams); // Interface of AudioStream::DataSource.- // Called on the callback thread of cubeb.- UniquePtr<AudioStream::Chunk> PopFrames(uint32_t aFrames) override;+ // Called on the callback thread of cubeb. Returns the number of frames that+ // were available.+ uint32_t PopFrames(AudioDataValue* aBuffer, uint32_t aFrames,+ bool aAudioThreadChanged) override; bool Ended() const override;- void CheckIsAudible(const AudioData* aData);+ void CheckIsAudible(const Span<AudioDataValue>& aInterleaved,+ size_t aChannel); // The audio stream resource. Used on the task queue of MDSM only. RefPtr<AudioStream> mAudioStream;@@ -106,23 +109,9 @@ // Used on the task queue of MDSM only. bool mPlaying;- /*- * Members to implement AudioStream::DataSource.- * Used on the callback thread of cubeb.- */- // The AudioData at which AudioStream::DataSource is reading.- RefPtr<AudioData> mCurrentData;-- // Monitor protecting access to mCursor, mWritten and mCurrentData.- // mCursor is created/destroyed on the cubeb thread, while we must also- // ensure that mWritten and mCursor::Available() get modified simultaneously.- // (written on cubeb thread, and read on MDSM task queue).- mutable Monitor mMonitor;- // Keep track of the read position of mCurrentData.- UniquePtr<AudioBufferCursor> mCursor;-- // PCM frames written to the stream so far.- int64_t mWritten;+ // PCM frames written to the stream so far. Written on the callback thread,+ // read on the MDSM thread.+ Atomic<int64_t> mWritten; // True if there is any error in processing audio data like overflow. Atomic<bool> mErrored;@@ -130,7 +119,7 @@ const RefPtr<AbstractThread> mOwnerThread; // Audio Processing objects and methods- void OnAudioPopped(const RefPtr<AudioData>& aSample);+ void OnAudioPopped(); void OnAudioPushed(const RefPtr<AudioData>& aSample); void NotifyAudioNeeded(); // Drain the converter and add the output to the processed audio queue.@@ -138,13 +127,12 @@ uint32_t DrainConverter(uint32_t aMaxFrames = UINT32_MAX); already_AddRefed<AudioData> CreateAudioFromBuffer( AlignedAudioBuffer&& aBuffer, AudioData* aReference);- // Add data to the processsed queue, update mProcessedQueueLength and- // return the number of frames added.+ // Add data to the processsed queue return the number of frames added. uint32_t PushProcessedAudio(AudioData* aData);+ uint32_t AudioQueuedInRingBufferMS() const;+ uint32_t SampleToFrame(uint32_t aSamples) const; UniquePtr<AudioConverter> mConverter;- MediaQueue<AudioData> mProcessedQueue;- // Length in microseconds of the ProcessedQueue- Atomic<uint64_t> mProcessedQueueLength;+ UniquePtr<SPSCQueue<AudioDataValue>> mProcessedSPSCQueue; MediaEventListener mAudioQueueListener; MediaEventListener mAudioQueueFinishListener; MediaEventListener mProcessedQueueListener;@@ -160,8 +148,12 @@ AudibilityMonitor mAudibilityMonitor; bool mIsAudioDataAudible; MediaEventProducer<bool> mAudibleEvent;+ // Only signed on the real-time audio thread.+ MediaEventProducer<void> mAudioPopped;+ Atomic<bool> mProcessedQueueFinished; MediaQueue<AudioData>& mAudioQueue;+ const float mProcessedQueueThresholdMS; }; } // namespace mozilla
I'll analyze the code diff for security fixes following the specified format. Here are the identified vulnerabilities: 1. Vulnerability Existed: yes Race Condition Vulnerability [AudioSink.h] [Lines 106-111] [Old Code] mutable Monitor mMonitor; UniquePtr<AudioBufferCursor> mCursor; int64_t mWritten; [Fixed Code] Atomic<int64_t> mWritten; Details: The old code used a Monitor to protect shared state (mCursor, mWritten) between threads, which could lead to race conditions if not properly synchronized. The fix replaces this with atomic operations for mWritten, which is a more reliable thread-safe solution. 2. Vulnerability Existed: yes Thread Safety Vulnerability [AudioSink.h] [Lines 78-81] [Old Code] UniquePtr<AudioStream::Chunk> PopFrames(uint32_t aFrames) override; [Fixed Code] uint32_t PopFrames(AudioDataValue* aBuffer, uint32_t aFrames, bool aAudioThreadChanged) override; Details: The interface change suggests the old implementation might have had thread safety issues in frame popping. The new version includes a thread change flag and uses a buffer parameter instead of returning a unique pointer, making the operation more thread-safe. 3. Vulnerability Existed: not sure Potential Memory Safety Vulnerability [AudioSink.h] [Lines 138-142] [Old Code] MediaQueue<AudioData> mProcessedQueue; Atomic<uint64_t> mProcessedQueueLength; [Fixed Code] UniquePtr<SPSCQueue<AudioDataValue>> mProcessedSPSCQueue; Details: The change from a MediaQueue to a single-producer single-consumer queue (SPSCQueue) might address potential memory safety issues in multi-threaded access, but without seeing the implementation details, I can't be certain. 4. Vulnerability Existed: not sure Potential Data Race Vulnerability [AudioSink.h] [Lines 160-161] [Old Code] (No equivalent in old code) [Fixed Code] MediaEventProducer<void> mAudioPopped; Atomic<bool> mProcessedQueueFinished; Details: The addition of these thread-synchronization primitives suggests there might have been potential data races in the audio processing pipeline that needed to be addressed. Note: The changes overall appear to focus on improving thread safety in the audio processing pipeline, particularly around shared state between the cubeb callback thread and the MDSM task queue. The most clear-cut vulnerability fix is the replacement of the Monitor with atomic operations for shared variables.
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/typenum/CHANGELOG.md+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/typenum/CHANGELOG.md@@ -6,6 +6,12 @@ against this Rust version. ### Unreleased++### 1.15.0 (2021-12-25)+- [fixed] Cross-compilation issue due to doing math in build script. (PR #177)+- [added] New feature `scale_info` for using inside+ [Substrate](https://github.com/paritytech/substrate.git)-based runtimes (PR+ #175) ### 1.14.0 (2021-09-01) - [changed] Sealed all marker traits. Documentation already stated that these
Based on the provided diff content, which shows changes to a CHANGELOG.md file, I don't see any direct security fixes or vulnerabilities being addressed. The changes appear to be routine updates and feature additions. Answer Format for Each Vulnerability: Vulnerability Existed: no No specific vulnerability found in this changelog update [third_party/rust/typenum/CHANGELOG.md] [Lines 6-12] [Old Changelog content] [Updated Changelog with new version and fixes] Additional Notes: - The changes mention a "Cross-compilation issue" fix, but this appears to be a build system improvement rather than a security vulnerability - The update adds a new feature for Substrate compatibility, which is a feature addition, not a security fix - Without seeing the actual code changes referenced in PR #177, we can't determine if there was an underlying security issue being fixed
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/taskcluster/gecko_taskgraph/transforms/base.py+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/taskcluster/gecko_taskgraph/transforms/base.py@@ -4,9 +4,9 @@ import attr+from taskgraph.config import GraphConfig+from taskgraph.parameters import Parameters-from ..config import GraphConfig-from ..parameters import Parameters from ..util.schema import Schema, validate_schema
Based on the provided diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be related to import statement reorganization rather than security fixes. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [taskcluster/gecko_taskgraph/transforms/base.py] [Lines 4-9] [Old Code] from ..config import GraphConfig from ..parameters import Parameters [Fixed Code] from taskgraph.config import GraphConfig from taskgraph.parameters import Parameters Additional Details: The changes simply modify the import statements from relative imports to absolute imports. This is likely a code style or maintainability improvement rather than a security fix. No security-related functionality appears to be affected by 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/third_party/jpeg-xl/lib/jxl/splines.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/jpeg-xl/lib/jxl/splines.h@@ -62,9 +62,9 @@ int32_t quantization_adjustment, float ytox, float ytob);- Spline Dequantize(const Spline::Point& starting_point,- int32_t quantization_adjustment, float ytox,- float ytob) const;+ Status Dequantize(const Spline::Point& starting_point,+ int32_t quantization_adjustment, float ytox, float ytob,+ Spline& result) const; Status Decode(const std::vector<uint8_t>& context_map, ANSSymbolReader* decoder, BitReader* br,@@ -109,6 +109,8 @@ void AddTo(Image3F* opsin, const Rect& opsin_rect, const Rect& image_rect) const;+ void AddToRow(float* JXL_RESTRICT row_x, float* JXL_RESTRICT row_y,+ float* JXL_RESTRICT row_b, const Rect& image_row) const; void SubtractFrom(Image3F* opsin) const; const std::vector<QuantizedSpline>& QuantizedSplines() const {@@ -124,6 +126,9 @@ const ColorCorrelationMap& cmap); private:+ template <bool>+ void ApplyToRow(float* JXL_RESTRICT row_x, float* JXL_RESTRICT row_y,+ float* JXL_RESTRICT row_b, const Rect& image_row) const; template <bool> void Apply(Image3F* opsin, const Rect& opsin_rect, const Rect& image_rect) const;
I'll analyze the provided code diff for security fixes following the specified format. 1. Vulnerability Existed: not sure [Return Type Change] [third_party/jpeg-xl/lib/jxl/splines.h] [Lines 62-65] [Old Code] Spline Dequantize(const Spline::Point& starting_point, int32_t quantization_adjustment, float ytox, float ytob) const; [Fixed Code] Status Dequantize(const Spline::Point& starting_point, int32_t quantization_adjustment, float ytox, float ytob, Spline& result) const; [Additional Details] The return type changed from Spline to Status, and the result is now passed by reference. This might indicate better error handling but doesn't clearly indicate a security vulnerability. 2. Vulnerability Existed: not sure [New Method Added] [third_party/jpeg-xl/lib/jxl/splines.h] [Lines 109-110] [Old Code] (No equivalent code existed) [Fixed Code] void AddToRow(float* JXL_RESTRICT row_x, float* JXL_RESTRICT row_y, float* JXL_RESTRICT row_b, const Rect& image_row) const; [Additional Details] This appears to be a new method added for functionality rather than a security fix. 3. Vulnerability Existed: not sure [New Private Method Added] [third_party/jpeg-xl/lib/jxl/splines.h] [Lines 126-128] [Old Code] (No equivalent code existed) [Fixed Code] template <bool> void ApplyToRow(float* JXL_RESTRICT row_x, float* JXL_RESTRICT row_y, float* JXL_RESTRICT row_b, const Rect& image_row) const; [Additional Details] This appears to be a new internal helper method added, but no clear security implication is evident. The diff shows several changes but none clearly indicate security vulnerability fixes. The changes appear to be more about API modifications and adding new functionality rather than addressing specific security issues. The most significant change is the return type modification of Dequantize(), which might improve error handling but doesn't clearly fix a known 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/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.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.fill.closed.basic.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);@@ -24,7 +24,7 @@ ctx.lineTo(100, 50); ctx.lineTo(0, 50); 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 cosmetic/refactoring changes where a variable name was changed from `offscreenCanvas` to `canvas` for consistency or readability purposes. Here's the structured response: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.fill.closed.basic.worker.js] [Lines 13-14, 24] [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 don't affect security, functionality, or introduce any new security considerations. It's simply a variable renaming 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/filters/2d.filter.canvasFilterObject.colorMatrix.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.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'); assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: undefined}); }); assert_throws_js(TypeError, function() { new CanvasFilter({filter: "colorMatrix", values: "foo"}); });@@ -25,23 +25,23 @@ ctx.fillStyle = "#f00"; ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 0}); ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 10,10, 255,0,0,255, "10,10", "255,0,0,255", 2);+_assertPixelApprox(canvas, 10,10, 255,0,0,255, "10,10", "255,0,0,255", 2); ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 90}); ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 10,10, 0,91,0,255, "10,10", "0,91,0,255", 2);+_assertPixelApprox(canvas, 10,10, 0,91,0,255, "10,10", "0,91,0,255", 2); ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 180}); ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 10,10, 0,109,109,255, "10,10", "0,109,109,255", 2);+_assertPixelApprox(canvas, 10,10, 0,109,109,255, "10,10", "0,109,109,255", 2); ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "hueRotate", values: 270}); ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 10,10, 109,18,255,255, "10,10", "109,18,255,255", 2);+_assertPixelApprox(canvas, 10,10, 109,18,255,255, "10,10", "109,18,255,255", 2); ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "saturate", values: 0.5}); ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 10,10, 155,27,27,255, "10,10", "155,27,27,255", 2);+_assertPixelApprox(canvas, 10,10, 155,27,27,255, "10,10", "155,27,27,255", 2); ctx.clearRect(0, 0, 100, 50); ctx.filter = new CanvasFilter({filter: "colorMatrix", type: "luminanceToAlpha"}); ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 10,10, 0,0,0,54, "10,10", "0,0,0,54", 2);+_assertPixelApprox(canvas, 10,10, 0,0,0,54, "10,10", "0,0,0,54", 2); ctx.filter = new CanvasFilter({filter: "colorMatrix", values: [ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,@@ -55,10 +55,10 @@ ctx.fillRect(0, 25, 50, 25); ctx.fillStyle = "#fff"; ctx.fillRect(50, 25, 50, 25);-_assertPixelApprox(offscreenCanvas, 10,10, 0,255,0,255, "10,10", "0,255,0,255", 2);-_assertPixelApprox(offscreenCanvas, 60,10, 0,255,0,255, "60,10", "0,255,0,255", 2);-_assertPixelApprox(offscreenCanvas, 10,30, 0,255,0,255, "10,30", "0,255,0,255", 2);-_assertPixelApprox(offscreenCanvas, 60,30, 0,255,0,255, "60,30", "0,255,0,255", 2);+_assertPixelApprox(canvas, 10,10, 0,255,0,255, "10,10", "0,255,0,255", 2);+_assertPixelApprox(canvas, 60,10, 0,255,0,255, "60,10", "0,255,0,255", 2);+_assertPixelApprox(canvas, 10,30, 0,255,0,255, "10,30", "0,255,0,255", 2);+_assertPixelApprox(canvas, 60,30, 0,255,0,255, "60,30", "0,255,0,255", 2); t.done(); });
After analyzing the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely cosmetic, renaming a variable from `offscreenCanvas` to `canvas` and updating all references to it. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found File: testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.colorMatrix.worker.js [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'); The rest of the changes are simply updates to variable references throughout the file to match the new variable name. There are no changes to security-related functionality, input validation, or any other security-sensitive areas. The changes appear to be for code consistency/readability rather than security fixes.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/layout/reftests/css-grid/grid-fragmentation-026-ref.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/layout/reftests/css-grid/grid-fragmentation-026-ref.html@@ -21,7 +21,7 @@ -ms-column-fill: auto; -webkit-column-fill: auto; column-fill: auto;- border: 2px dashed;+ border: 2px solid salmon; margin-bottom: 5px; }
After analyzing the provided code diff, here's the security assessment: Vulnerability Existed: no [No security vulnerability found] [layout/reftests/css-grid/grid-fragmentation-026-ref.html] [Lines 21] [Old Code: border: 2px dashed;] [Fixed Code: border: 2px solid salmon;] Additional Details: The change appears to be purely cosmetic/visual, modifying the border style from dashed to solid and changing the color to salmon. This doesn't appear to address any security vulnerability but rather improves the visual reference for testing purposes. The modification is in a test file (reftest) which typically doesn't contain security-sensitive 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/threading/ProtectedData.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/js/src/threading/ProtectedData.h@@ -255,7 +255,13 @@ // Enum describing which helper threads (GC tasks or Ion compilations) may // access data even though they do not have exclusive access to any zone.-enum class AllowedHelperThread { None, GCTask, IonCompile, GCTaskOrIonCompile };+enum class AllowedHelperThread {+ None,+ GCTask,+ ParseTask,+ IonCompile,+ GCTaskOrIonCompile+}; template <AllowedHelperThread Helper> class CheckMainThread {@@ -276,6 +282,10 @@ template <typename T> using MainThreadOrIonCompileData = ProtectedDataNoCheckArgs<CheckMainThread<AllowedHelperThread::IonCompile>,+ T>;+template <typename T>+using MainThreadOrParseData =+ ProtectedDataNoCheckArgs<CheckMainThread<AllowedHelperThread::ParseTask>, T>; template <AllowedHelperThread Helper>
Based on the provided diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be adding functionality (a new `ParseTask` enum value and corresponding type alias) rather than fixing security issues. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [js/src/threading/ProtectedData.h] [Lines 255-282] [Old Code] enum class AllowedHelperThread { None, GCTask, IonCompile, GCTaskOrIonCompile }; [No MainThreadOrParseData type alias] [Fixed Code] enum class AllowedHelperThread { None, GCTask, ParseTask, IonCompile, GCTaskOrIonCompile }; [Added MainThreadOrParseData type alias] The changes are: 1. Added `ParseTask` to the `AllowedHelperThread` enum 2. Added a new `MainThreadOrParseData` type alias These appear to be feature additions rather than security fixes. No CVE or known vulnerability patterns are evident 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.pattern.repeat.case.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.pattern.repeat.case.worker.js@@ -13,10 +13,10 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d');-assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(offscreenCanvas, "Repeat"); });+assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); }); t.done(); });
Here's the analysis of the provided code diff following the specified format: Vulnerability Existed: no [No specific vulnerability] [testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js] [Lines 13-16] [Old Code] ``` var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(offscreenCanvas, "Repeat"); }); ``` [Fixed Code] ``` var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); assert_throws_dom("SYNTAX_ERR", function() { ctx.createPattern(canvas, "Repeat"); }); ``` The changes appear to be purely cosmetic/refactoring, renaming the variable `offscreenCanvas` to `canvas`. There's no indication of a security vulnerability being fixed - the functionality remains the same, just with a different variable name. The test continues to verify that passing an invalid pattern repetition mode ("Repeat" instead of "repeat") throws a SYNTAX_ERR as expected.
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/webauthn/winwebauthn/webauthn.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/webauthn/winwebauthn/webauthn.h@@ -72,7 +72,27 @@ // - WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_PROTECT //-#define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_2+#define WEBAUTHN_API_VERSION_3 3+// WEBAUTHN_API_VERSION_3 : Delta From WEBAUTHN_API_VERSION_2+// Data Structures and their sub versions:+// - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 4+// - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 5+// - WEBAUTHN_CREDENTIAL_ATTESTATION : 4+// - WEBAUTHN_ASSERTION : 2+// Added Extensions:+// - WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_BLOB+// - WEBAUTHN_EXTENSIONS_IDENTIFIER_MIN_PIN_LENGTH+//++#define WEBAUTHN_API_VERSION_4 4+// WEBAUTHN_API_VERSION_4 : Delta From WEBAUTHN_API_VERSION_3+// Data Structures and their sub versions:+// - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 5+// - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 6+// - WEBAUTHN_ASSERTION : 3+//++#define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_4 //+------------------------------------------------------------------------------------------ // Information about an RP Entity@@ -259,6 +279,45 @@ PWEBAUTHN_CREDENTIAL_EX *ppCredentials; } WEBAUTHN_CREDENTIAL_LIST, *PWEBAUTHN_CREDENTIAL_LIST; typedef const WEBAUTHN_CREDENTIAL_LIST *PCWEBAUTHN_CREDENTIAL_LIST;++//+------------------------------------------------------------------------------------------+// PRF values.+//-------------------------------------------------------------------------------------------++#define WEBAUTHN_CTAP_ONE_HMAC_SECRET_LENGTH 32++typedef struct _WEBAUTHN_HMAC_SECRET_SALT {+ // Size of pbFirst.+ DWORD cbFirst;+ _Field_size_bytes_(cbFirst)+ PBYTE pbFirst; // Required++ // Size of pbSecond.+ DWORD cbSecond;+ _Field_size_bytes_(cbSecond)+ PBYTE pbSecond;+} WEBAUTHN_HMAC_SECRET_SALT, *PWEBAUTHN_HMAC_SECRET_SALT;+typedef const WEBAUTHN_HMAC_SECRET_SALT *PCWEBAUTHN_HMAC_SECRET_SALT;++typedef struct _WEBAUTHN_CRED_WITH_HMAC_SECRET_SALT {+ // Size of pbCredID.+ DWORD cbCredID;+ _Field_size_bytes_(cbCredID)+ PBYTE pbCredID; // Required++ // PRF Values for above credential+ PWEBAUTHN_HMAC_SECRET_SALT pHmacSecretSalt; // Required+} WEBAUTHN_CRED_WITH_HMAC_SECRET_SALT, *PWEBAUTHN_CRED_WITH_HMAC_SECRET_SALT;+typedef const WEBAUTHN_CRED_WITH_HMAC_SECRET_SALT *PCWEBAUTHN_CRED_WITH_HMAC_SECRET_SALT;++typedef struct _WEBAUTHN_HMAC_SECRET_SALT_VALUES {+ PWEBAUTHN_HMAC_SECRET_SALT pGlobalHmacSalt;++ DWORD cCredWithHmacSecretSaltList;+ _Field_size_(cCredWithHmacSecretSaltList)+ PWEBAUTHN_CRED_WITH_HMAC_SECRET_SALT pCredWithHmacSecretSaltList;+} WEBAUTHN_HMAC_SECRET_SALT_VALUES, *PWEBAUTHN_HMAC_SECRET_SALT_VALUES;+typedef const WEBAUTHN_HMAC_SECRET_SALT_VALUES *PCWEBAUTHN_HMAC_SECRET_SALT_VALUES; //+------------------------------------------------------------------------------------------ // Hmac-Secret extension@@ -307,6 +366,50 @@ // GetAssertion Output Type: Not Supported //+------------------------------------------------------------------------------------------+// credBlob extension+//-------------------------------------------------------------------------------------------++typedef struct _WEBAUTHN_CRED_BLOB_EXTENSION {+ // Size of pbCredBlob.+ DWORD cbCredBlob;+ _Field_size_bytes_(cbCredBlob)+ PBYTE pbCredBlob;+} WEBAUTHN_CRED_BLOB_EXTENSION, *PWEBAUTHN_CRED_BLOB_EXTENSION;+typedef const WEBAUTHN_CRED_BLOB_EXTENSION *PCWEBAUTHN_CRED_BLOB_EXTENSION;+++#define WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_BLOB L"credBlob"+// Below type definitions is for WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_BLOB+// MakeCredential Input Type: WEBAUTHN_CRED_BLOB_EXTENSION.+// - pvExtension must point to a WEBAUTHN_CRED_BLOB_EXTENSION struct+// - cbExtension must contain the sizeof(WEBAUTHN_CRED_BLOB_EXTENSION).+// MakeCredential Output Type: BOOL.+// - pvExtension will point to a BOOL with the value TRUE if credBlob was successfully created+// - cbExtension will contain the sizeof(BOOL).+// GetAssertion Input Type: BOOL.+// - pvExtension must point to a BOOL with the value TRUE to request the credBlob.+// - cbExtension must contain the sizeof(BOOL).+// GetAssertion Output Type: WEBAUTHN_CRED_BLOB_EXTENSION.+// - pvExtension will point to a WEBAUTHN_CRED_BLOB_EXTENSION struct if the authenticator+// returns the credBlob in the signed extensions+// - cbExtension will contain the sizeof(WEBAUTHN_CRED_BLOB_EXTENSION).++//+------------------------------------------------------------------------------------------+// minPinLength extension+//-------------------------------------------------------------------------------------------++#define WEBAUTHN_EXTENSIONS_IDENTIFIER_MIN_PIN_LENGTH L"minPinLength"+// Below type definitions is for WEBAUTHN_EXTENSIONS_IDENTIFIER_MIN_PIN_LENGTH+// MakeCredential Input Type: BOOL.+// - pvExtension must point to a BOOL with the value TRUE to request the minPinLength.+// - cbExtension must contain the sizeof(BOOL).+// MakeCredential Output Type: DWORD.+// - pvExtension will point to a DWORD with the minimum pin length if returned by the authenticator+// - cbExtension will contain the sizeof(DWORD).+// GetAssertion Input Type: Not Supported+// GetAssertion Output Type: Not Supported++//+------------------------------------------------------------------------------------------ // Information about Extensions. //------------------------------------------------------------------------------------------- typedef struct _WEBAUTHN_EXTENSION {@@ -342,10 +445,20 @@ #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_INDIRECT 2 #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT 3+#define WEBAUTHN_ENTERPRISE_ATTESTATION_NONE 0+#define WEBAUTHN_ENTERPRISE_ATTESTATION_VENDOR_FACILITATED 1+#define WEBAUTHN_ENTERPRISE_ATTESTATION_PLATFORM_MANAGED 2++#define WEBAUTHN_LARGE_BLOB_SUPPORT_NONE 0+#define WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED 1+#define WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED 2+ #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_1 1 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_2 2 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3 3-#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4 4+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_5 5+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_5 typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS { // Version of this structure, to allow for modifications in the future.@@ -364,7 +477,7 @@ // Optional. Platform vs Cross-Platform Authenticators. DWORD dwAuthenticatorAttachment;- // Optional. Require key to be resident or not. Defaulting to FALSE;+ // Optional. Require key to be resident or not. Defaulting to FALSE. BOOL bRequireResidentKey; // User Verification Requirement.@@ -390,15 +503,45 @@ // Exclude Credential List. If present, "CredentialList" will be ignored. PWEBAUTHN_CREDENTIAL_LIST pExcludeCredentialList;+ //+ // The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4+ //++ // Enterprise Attestation+ DWORD dwEnterpriseAttestation;++ // Large Blob Support: none, required or preferred+ //+ // NTE_INVALID_PARAMETER when large blob required or preferred and+ // bRequireResidentKey isn't set to TRUE+ DWORD dwLargeBlobSupport;++ // Optional. Prefer key to be resident. Defaulting to FALSE. When TRUE,+ // overrides the above bRequireResidentKey.+ BOOL bPreferResidentKey;++ //+ // The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_5+ //++ // Optional. BrowserInPrivate Mode. Defaulting to FALSE.+ BOOL bBrowserInPrivateMode;+ } WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS; typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS;+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_NONE 0+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_GET 1+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_SET 2+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_DELETE 3 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_1 1 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_2 2 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_3 3 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_4 4-#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_4+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 5+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_6 6+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_6 typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS { // Version of this structure, to allow for modifications in the future.@@ -447,6 +590,27 @@ // Allow Credential List. If present, "CredentialList" will be ignored. PWEBAUTHN_CREDENTIAL_LIST pAllowCredentialList;++ //+ // The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5+ //++ DWORD dwCredLargeBlobOperation;++ // Size of pbCredLargeBlob+ DWORD cbCredLargeBlob;+ _Field_size_bytes_(cbCredLargeBlob)+ PBYTE pbCredLargeBlob;++ //+ // The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_6+ //++ // PRF values which will be converted into HMAC-SECRET values according to WebAuthn Spec.+ PWEBAUTHN_HMAC_SECRET_SALT_VALUES pHmacSecretSaltValues;++ // Optional. BrowserInPrivate Mode. Defaulting to FALSE.+ BOOL bBrowserInPrivateMode; } WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS; typedef const WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS;@@ -523,7 +687,8 @@ #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_1 1 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_2 2 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_3 3-#define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_3+#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 4+#define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION { // Version of this structure, to allow for modifications in the future.@@ -578,6 +743,14 @@ // the transport that was used. DWORD dwUsedTransport;+ //+ // Following fields have been added in WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4+ //++ BOOL bEpAtt;+ BOOL bLargeBlobSupported;+ BOOL bResidentKey;+ } WEBAUTHN_CREDENTIAL_ATTESTATION, *PWEBAUTHN_CREDENTIAL_ATTESTATION; typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION;@@ -586,7 +759,21 @@ // authenticatorGetAssertion output. //--------------------------------------------------------------------------------------------#define WEBAUTHN_ASSERTION_CURRENT_VERSION 1+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NONE 0+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_SUCCESS 1+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_SUPPORTED 2+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_DATA 3+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_PARAMETER 4+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_FOUND 5+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_MULTIPLE_CREDENTIALS 6+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_LACK_OF_SPACE 7+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_PLATFORM_ERROR 8+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_AUTHENTICATOR_ERROR 9++#define WEBAUTHN_ASSERTION_VERSION_1 1+#define WEBAUTHN_ASSERTION_VERSION_2 2+#define WEBAUTHN_ASSERTION_VERSION_3 3+#define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_3 typedef struct _WEBAUTHN_ASSERTION { // Version of this structure, to allow for modifications in the future.@@ -612,6 +799,26 @@ // UserId _Field_size_bytes_(cbUserId) PBYTE pbUserId;++ //+ // Following fields have been added in WEBAUTHN_ASSERTION_VERSION_2+ //++ WEBAUTHN_EXTENSIONS Extensions;++ // Size of pbCredLargeBlob+ DWORD cbCredLargeBlob;+ _Field_size_bytes_(cbCredLargeBlob)+ PBYTE pbCredLargeBlob;++ DWORD dwCredLargeBlobStatus;++ //+ // Following fields have been added in WEBAUTHN_ASSERTION_VERSION_3+ //++ PWEBAUTHN_HMAC_SECRET_SALT pHmacSecret;+ } WEBAUTHN_ASSERTION, *PWEBAUTHN_ASSERTION; typedef const WEBAUTHN_ASSERTION *PCWEBAUTHN_ASSERTION;
After analyzing the provided code diff, I don't find any clear security vulnerabilities being fixed. The changes appear to be feature additions and version updates to the WebAuthn API structures. Here's my analysis: 1. Vulnerability Existed: no No specific vulnerability found File: dom/webauthn/winwebauthn/webauthn.h The changes primarily involve: - Adding new API versions (WEBAUTHN_API_VERSION_3 and WEBAUTHN_API_VERSION_4) - Adding new structures for HMAC secret handling - Adding new extensions (credBlob and minPinLength) - Adding new fields to existing structures - Version number updates The changes appear to be functional enhancements rather than security fixes. The modifications include: - New PRF/HMAC secret handling capabilities - Credential blob extension support - Minimum PIN length extension - Large blob support - Enterprise attestation support - Browser private mode flags - Additional versioning for structures These are all feature additions that expand the WebAuthn functionality rather than patching security issues. The code maintains proper field size annotations and appears to follow secure coding practices in the new additions. If any security implications exist, they would be related to the proper implementation of these new features rather than vulnerabilities in the code changes themselves.
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.image.section.worker.js+++ /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.image.section.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);@@ -32,9 +32,9 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 50, 0, 50, 50, 0, -50, 50, 50);- _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,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, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); }, t_fail); }).then(t_pass, t_fail);
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 corresponding updates to the variable name in the assertions. Here's the analysis following your format: Vulnerability Existed: no No security vulnerability found File: testing/web-platform/tests/html/canvas/offscreen/shadows/2d.shadow.image.section.worker.js Lines: 13-14, 32-34 Old Code: var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); Fixed Code: var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,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/refactoring in nature and don't address any security issues. The functionality remains exactly the same, just with a different variable name.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.