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/third_party/rust/anyhow/tests/drop/mod.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/anyhow/tests/drop/mod.rs@@ -2,8 +2,7 @@ use std::error::Error as StdError; use std::fmt::{self, Display};-use std::sync::atomic::AtomicBool;-use std::sync::atomic::Ordering::SeqCst;+use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; #[derive(Debug)]@@ -19,7 +18,7 @@ } pub fn get(&self) -> bool {- self.atomic.load(SeqCst)+ self.atomic.load(Ordering::Relaxed) } }@@ -48,7 +47,7 @@ impl Drop for DetectDrop { fn drop(&mut self) {- let already_dropped = self.has_dropped.atomic.swap(true, SeqCst);+ let already_dropped = self.has_dropped.atomic.swap(true, Ordering::Relaxed); assert!(!already_dropped); } }
Let me analyze the code diff for security vulnerabilities: 1. Vulnerability Existed: no Atomic Ordering Change [third_party/rust/anyhow/tests/drop/mod.rs] [Lines 19, 48] Old Code: `self.atomic.load(SeqCst)` and `self.has_dropped.atomic.swap(true, SeqCst)` Fixed Code: `self.atomic.load(Ordering::Relaxed)` and `self.has_dropped.atomic.swap(true, Ordering::Relaxed)` Additional Details: This change switches from sequential consistency (SeqCst) to relaxed memory ordering. While this affects performance characteristics, it doesn't represent a security vulnerability as this appears to be test code for drop detection where strict ordering isn't required. 2. Vulnerability Existed: no Import Consolidation [third_party/rust/anyhow/tests/drop/mod.rs] [Lines 2-3] Old Code: Separate imports for AtomicBool and Ordering::SeqCst Fixed Code: Consolidated import statement Additional Details: This is purely a code style/readability improvement with no security implications. The changes appear to be optimizations and code cleanup rather than security fixes. The memory ordering changes could potentially affect thread synchronization behavior, but since this is test code for drop detection, it doesn't represent a security 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/compositing/2d.composite.solid.xor.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = 'rgba(0, 255, 255, 1.0)';@@ -26,7 +26,7 @@ ctx.globalCompositeOperation = 'xor'; ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5);+_assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); t.done(); });
Based on the provided diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely cosmetic/refactoring changes (variable renaming) rather than security-related fixes. Here's the analysis: Vulnerability Existed: no No vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.solid.xor.html [Lines] 17-26 [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixelApprox(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); The changes simply rename the variable `offscreenCanvas` to `canvas` and update the references accordingly. There are no security implications to these changes. The functionality remains exactly the same, only the variable name has changed.
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/debugger/src/actions/source-actors.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/debugger/src/actions/source-actors.js@@ -6,7 +6,7 @@ getSourceActor, getSourceActorBreakableLines, getSourceActorBreakpointColumns,-} from "../reducers/source-actors";+} from "../selectors/source-actors"; import { memoizeableAction } from "../utils/memoizableAction"; import { PROMISE } from "./utils/middleware/promise";
Let me analyze the code diff for security fixes: Vulnerability Existed: not sure [Potential Path Traversal or Module Import Vulnerability] [devtools/client/debugger/src/actions/source-actors.js] [Lines 6-9] [Old Code] } from "../reducers/source-actors"; [Fixed Code] } from "../selectors/source-actors"; Additional Details: - The change involves moving imports from "../reducers/source-actors" to "../selectors/source-actors" - While this doesn't directly show a security vulnerability, it could be part of a larger security refactoring - The change suggests a reorganization of code structure rather than a direct security fix - Without seeing the content of these files, we can't determine if there was an actual vulnerability 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/devtools/client/shared/components/menu/MenuItem.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/shared/components/menu/MenuItem.js@@ -8,12 +8,16 @@ // A command in a menu. const {+ createFactory, createRef, PureComponent, } = require("devtools/client/shared/vendor/react"); const PropTypes = require("devtools/client/shared/vendor/react-prop-types"); const dom = require("devtools/client/shared/vendor/react-dom-factories"); const { button, li, span } = dom;+loader.lazyGetter(this, "Localized", () =>+ createFactory(require("devtools/client/shared/vendor/fluent-react").Localized)+); class MenuItem extends PureComponent { static get propTypes() {@@ -46,8 +50,11 @@ // An optional ID to be assigned to the item. id: PropTypes.string,- // The item label.- label: PropTypes.string.isRequired,+ // The item label for use with legacy localization systems.+ label: PropTypes.string,++ // The Fluent ID for localizing the label.+ l10nID: PropTypes.string, // An optional callback to be invoked when the item is selected. onClick: PropTypes.func,@@ -153,11 +160,32 @@ attr["aria-checked"] = true; }- const textLabel = span(- { key: "label", className: "label", ref: this.labelRef },- this.props.label- );- const children = [textLabel];+ const children = [];+ const className = "label";++ // Add the text label.+ if (this.props.l10nID) {+ // Fluent localized label.+ children.push(+ Localized(+ { id: this.props.l10nID, key: "label" },+ span({ className, ref: this.labelRef })+ )+ );+ } else {+ children.push(+ span({ key: "label", className, ref: this.labelRef }, this.props.label)+ );+ }++ if (this.props.l10nID && this.props.label) {+ console.warn(+ "<MenuItem> should only take either an l10nID or a label, not both"+ );+ }+ if (!this.props.l10nID && !this.props.label) {+ console.warn("<MenuItem> requires either an l10nID, or a label prop.");+ } if (typeof this.props.accelerator !== "undefined") { const acceleratorLabel = span(
Here's the analysis of the provided code diff following the specified format: 1. Vulnerability Existed: no XSS Vulnerability [devtools/client/shared/components/menu/MenuItem.js] [Lines 153-160] Old Code: const textLabel = span( { key: "label", className: "label", ref: this.labelRef }, this.props.label ); Fixed Code: // Add the text label. if (this.props.l10nID) { // Fluent localized label. children.push( Localized( { id: this.props.l10nID, key: "label" }, span({ className, ref: this.labelRef }) ) ); } else { children.push( span({ key: "label", className, ref: this.labelRef }, this.props.label) ); } Additional Details: The change doesn't appear to fix a security vulnerability but rather implements better localization support through Fluent. The old code directly used the label prop in a span, while the new code adds support for localized labels via l10nID while maintaining backward compatibility. 2. Vulnerability Existed: no Input Validation Improvement [devtools/client/shared/components/menu/MenuItem.js] [Lines 46-50, 178-185] Old Code: // The item label. label: PropTypes.string.isRequired, Fixed Code: // The item label for use with legacy localization systems. label: PropTypes.string, // The Fluent ID for localizing the label. l10nID: PropTypes.string, [...] if (this.props.l10nID && this.props.label) { console.warn( "<MenuItem> should only take either an l10nID or a label, not both" ); } if (!this.props.l10nID && !this.props.label) { console.warn("<MenuItem> requires either an l10nID, or a label prop."); } Additional Details: This change improves input validation by making the label prop optional when using l10nID, and adds warnings for improper usage. While not fixing a specific vulnerability, it helps prevent potential bugs in localization implementation. The changes appear to be primarily focused on adding Fluent localization support rather than fixing security vulnerabilities. No clear security vulnerabilities are being addressed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/gfx/layers/apz/src/AsyncPanZoomController.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/gfx/layers/apz/src/AsyncPanZoomController.cpp@@ -2128,12 +2128,13 @@ // to checking if it is scrollable without adjusting its delta. // 2. For a non-auto-dir scroll, simply check if it is scrollable without // adjusting its delta.- if (scrollWheelInput.IsAutoDir()) {+ if (scrollWheelInput.IsAutoDir(mScrollMetadata.ForceMousewheelAutodir())) { RecursiveMutexAutoLock lock(mRecursiveMutex); auto deltaX = scrollWheelInput.mDeltaX; auto deltaY = scrollWheelInput.mDeltaY; bool isRTL =- IsContentOfHonouredTargetRightToLeft(scrollWheelInput.HonoursRoot());+ IsContentOfHonouredTargetRightToLeft(scrollWheelInput.HonoursRoot(+ mScrollMetadata.ForceMousewheelAutodirHonourRoot())); APZAutoDirWheelDeltaAdjuster adjuster(deltaX, deltaY, mX, mY, isRTL); if (adjuster.ShouldBeAdjusted()) { // If we detect that the delta values should be adjusted for an auto-dir@@ -2288,11 +2289,12 @@ auto deltaX = aEvent.mDeltaX; auto deltaY = aEvent.mDeltaY; ParentLayerPoint delta;- if (aEvent.IsAutoDir()) {+ if (aEvent.IsAutoDir(mScrollMetadata.ForceMousewheelAutodir())) { // It's an auto-dir scroll, so check if its delta should be adjusted, if so, // adjust it. RecursiveMutexAutoLock lock(mRecursiveMutex);- bool isRTL = IsContentOfHonouredTargetRightToLeft(aEvent.HonoursRoot());+ bool isRTL = IsContentOfHonouredTargetRightToLeft(+ aEvent.HonoursRoot(mScrollMetadata.ForceMousewheelAutodirHonourRoot())); APZAutoDirWheelDeltaAdjuster adjuster(deltaX, deltaY, mX, mY, isRTL); if (adjuster.ShouldBeAdjusted()) { adjuster.Adjust();@@ -4307,7 +4309,7 @@ : APZScrollAnimationType::TriggeredByUserInput; } RepaintRequest request(aFrameMetrics, aDisplayportMargins, aUpdateType,- animationType);+ animationType, mScrollGeneration); // If we're trying to paint what we already think is painted, discard this // request since it's a pointless paint.@@ -4386,6 +4388,13 @@ TimeDuration sampleTimeDelta = aSampleTime - mLastSampleTime; mLastSampleTime = aSampleTime;+ // Bump the scroll generation before we call RequestContentRepaint below+ // so that the RequestContentRepaint call will surely use the new+ // generation.+ if (APZCTreeManager* treeManagerLocal = GetApzcTreeManager()) {+ mScrollGeneration = treeManagerLocal->NewAPZScrollGeneration();+ }+ if (mAnimation) { bool continueAnimation = mAnimation->Sample(Metrics(), sampleTimeDelta); bool wantsRepaints = mAnimation->WantsRepaints();@@ -4486,13 +4495,14 @@ } AsyncTransform AsyncPanZoomController::GetCurrentAsyncTransform(- AsyncTransformConsumer aMode, AsyncTransformComponents aComponents) const {+ AsyncTransformConsumer aMode, AsyncTransformComponents aComponents,+ std::size_t aSampleIndex) const { RecursiveMutexAutoLock lock(mRecursiveMutex); AutoApplyAsyncTestAttributes testAttributeApplier(this, lock); CSSToParentLayerScale effectiveZoom; if (aComponents.contains(AsyncTransformComponent::eVisual)) {- effectiveZoom = GetEffectiveZoom(aMode, lock);+ effectiveZoom = GetEffectiveZoom(aMode, lock, aSampleIndex); } else { effectiveZoom = Metrics().LayersPixelsPerCSSPixel() * LayerToParentLayerScale(1.0f);@@ -4507,8 +4517,8 @@ // is entirely async. CSSPoint currentVisualOffset =- GetEffectiveScrollOffset(aMode, lock) -- GetEffectiveLayoutViewport(aMode, lock).TopLeft();+ GetEffectiveScrollOffset(aMode, lock, aSampleIndex) -+ GetEffectiveLayoutViewport(aMode, lock, aSampleIndex).TopLeft(); translation += currentVisualOffset * effectiveZoom; }@@ -4519,7 +4529,7 @@ } CSSPoint currentLayoutOffset =- GetEffectiveLayoutViewport(aMode, lock).TopLeft();+ GetEffectiveLayoutViewport(aMode, lock, aSampleIndex).TopLeft(); translation += (currentLayoutOffset - lastPaintLayoutOffset) * effectiveZoom;@@ -4530,9 +4540,10 @@ AsyncTransformComponentMatrix AsyncPanZoomController::GetCurrentAsyncTransformWithOverscroll(- AsyncTransformConsumer aMode, AsyncTransformComponents aComponents) const {+ AsyncTransformConsumer aMode, AsyncTransformComponents aComponents,+ std::size_t aSampleIndex) const { AsyncTransformComponentMatrix asyncTransform =- GetCurrentAsyncTransform(aMode, aComponents);+ GetCurrentAsyncTransform(aMode, aComponents, aSampleIndex); // The overscroll transform is considered part of the visual component of // the async transform, because it should apply to fixed content as well. if (aComponents.contains(AsyncTransformComponent::eVisual)) {@@ -4549,6 +4560,49 @@ return scale / Metrics().GetDevPixelsPerCSSPixel(); }+AutoTArray<wr::SampledScrollOffset, 2>+AsyncPanZoomController::GetSampledScrollOffsets() const {+ AssertOnSamplerThread();++ RecursiveMutexAutoLock lock(mRecursiveMutex);++ const AsyncTransformComponents asyncTransformComponents =+ GetZoomAnimationId()+ ? AsyncTransformComponents{AsyncTransformComponent::eLayout}+ : LayoutAndVisual;++ // If layerTranslation includes only the layout component of the async+ // transform then it has not been scaled by the async zoom, so we want to+ // divide it by the resolution. If layerTranslation includes the visual+ // component, then we should use the pinch zoom scale, which includes the+ // async zoom. However, we only use LayoutAndVisual for non-zoomable APZCs,+ // so it makes no difference.+ LayoutDeviceToParentLayerScale resolution =+ GetCumulativeResolution() * LayerToParentLayerScale(1.0f);++ AutoTArray<wr::SampledScrollOffset, 2> sampledOffsets;++ for (std::deque<SampledAPZCState>::size_type index = 0;+ index < mSampledState.size(); index++) {+ ParentLayerPoint layerTranslation =+ GetCurrentAsyncTransformWithOverscroll(+ AsyncPanZoomController::eForCompositing, asyncTransformComponents,+ index)+ .TransformPoint(ParentLayerPoint(0, 0));++ // The positive translation means the painted content is supposed to+ // move down (or to the right), and that corresponds to a reduction in+ // the scroll offset. Since we are effectively giving WR the async+ // scroll delta here, we want to negate the translation.+ LayoutDevicePoint asyncScrollDelta = -layerTranslation / resolution;+ sampledOffsets.AppendElement(wr::SampledScrollOffset{+ wr::ToLayoutVector2D(asyncScrollDelta),+ wr::ToWrAPZScrollGeneration(mSampledState[index].Generation())});+ }++ return sampledOffsets;+}+ bool AsyncPanZoomController::SuppressAsyncScrollOffset() const { return mScrollMetadata.IsApzForceDisabled() || (Metrics().IsMinimalDisplayPort() &&@@ -4556,37 +4610,37 @@ } CSSRect AsyncPanZoomController::GetEffectiveLayoutViewport(- AsyncTransformConsumer aMode,- const RecursiveMutexAutoLock& aProofOfLock) const {+ AsyncTransformConsumer aMode, const RecursiveMutexAutoLock& aProofOfLock,+ std::size_t aSampleIndex) const { if (aMode == eForCompositing && SuppressAsyncScrollOffset()) { return mLastContentPaintMetrics.GetLayoutViewport(); } if (aMode == eForCompositing) {- return mSampledState.front().GetLayoutViewport();+ return mSampledState[aSampleIndex].GetLayoutViewport(); } return Metrics().GetLayoutViewport(); } CSSPoint AsyncPanZoomController::GetEffectiveScrollOffset(- AsyncTransformConsumer aMode,- const RecursiveMutexAutoLock& aProofOfLock) const {+ AsyncTransformConsumer aMode, const RecursiveMutexAutoLock& aProofOfLock,+ std::size_t aSampleIndex) const { if (aMode == eForCompositing && SuppressAsyncScrollOffset()) { return mLastContentPaintMetrics.GetVisualScrollOffset(); } if (aMode == eForCompositing) {- return mSampledState.front().GetVisualScrollOffset();+ return mSampledState[aSampleIndex].GetVisualScrollOffset(); } return Metrics().GetVisualScrollOffset(); } CSSToParentLayerScale AsyncPanZoomController::GetEffectiveZoom(- AsyncTransformConsumer aMode,- const RecursiveMutexAutoLock& aProofOfLock) const {+ AsyncTransformConsumer aMode, const RecursiveMutexAutoLock& aProofOfLock,+ std::size_t aSampleIndex) const { if (aMode == eForCompositing && SuppressAsyncScrollOffset()) { return mLastContentPaintMetrics.GetZoom(); } if (aMode == eForCompositing) {- return mSampledState.front().GetZoom();+ return mSampledState[aSampleIndex].GetZoom(); } return Metrics().GetZoom(); }@@ -4604,7 +4658,8 @@ const RecursiveMutexAutoLock& aProofOfLock) { MOZ_ASSERT(mSampledState.size() <= 2); bool sampleChanged = (mSampledState.back() != SampledAPZCState(Metrics()));- mSampledState.emplace_back(Metrics(), std::move(mScrollPayload));+ mSampledState.emplace_back(Metrics(), std::move(mScrollPayload),+ mScrollGeneration); return sampleChanged; }@@ -4613,7 +4668,10 @@ // This only gets called during testing situations, so the fact that this // drops the scroll payload from mSampledState.front() is not really a // problem.- mSampledState.front() = SampledAPZCState(Metrics());+ if (APZCTreeManager* treeManagerLocal = GetApzcTreeManager()) {+ mScrollGeneration = treeManagerLocal->NewAPZScrollGeneration();+ }+ mSampledState.front() = SampledAPZCState(Metrics(), {}, mScrollGeneration); } void AsyncPanZoomController::ApplyAsyncTestAttributes(@@ -4888,12 +4946,6 @@ mCheckerboardEvent->UpdateRendertraceProperty( CheckerboardEvent::PaintedDisplayPort, GetPaintedRect(aLayerMetrics), str);- if (!aLayerMetrics.GetCriticalDisplayPort().IsEmpty()) {- mCheckerboardEvent->UpdateRendertraceProperty(- CheckerboardEvent::PaintedCriticalDisplayPort,- aLayerMetrics.GetCriticalDisplayPort() +- aLayerMetrics.GetLayoutScrollOffset());- } } }@@ -5054,6 +5106,10 @@ aScrollMetadata.GetIsRDMTouchSimulationActive()); mScrollMetadata.SetPrefersReducedMotion( aScrollMetadata.PrefersReducedMotion());+ mScrollMetadata.SetForceMousewheelAutodir(+ aScrollMetadata.ForceMousewheelAutodir());+ mScrollMetadata.SetForceMousewheelAutodirHonourRoot(+ aScrollMetadata.ForceMousewheelAutodirHonourRoot()); mScrollMetadata.SetDisregardedDirection( aScrollMetadata.GetDisregardedDirection()); mScrollMetadata.SetOverscrollBehavior(
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Race Condition] [gfx/layers/apz/src/AsyncPanZoomController.cpp] [Lines 4386-4393] [Old Code] (None - new code added) [Fixed Code] // Bump the scroll generation before we call RequestContentRepaint below // so that the RequestContentRepaint call will surely use the new // generation. if (APZCTreeManager* treeManagerLocal = GetApzcTreeManager()) { mScrollGeneration = treeManagerLocal->NewAPZScrollGeneration(); } Additional Details: The change introduces scroll generation management which could help prevent race conditions in scroll handling, though it's not clear if this was fixing an existing vulnerability. 2. Vulnerability Existed: not sure [Potential Scroll Spoofing] [gfx/layers/apz/src/AsyncPanZoomController.cpp] [Lines 2128-2135, 2288-2293] [Old Code] if (scrollWheelInput.IsAutoDir()) { ... bool isRTL = IsContentOfHonouredTargetRightToLeft(scrollWheelInput.HonoursRoot()); [Fixed Code] if (scrollWheelInput.IsAutoDir(mScrollMetadata.ForceMousewheelAutodir())) { ... bool isRTL = IsContentOfHonouredTargetRightToLeft(scrollWheelInput.HonoursRoot( mScrollMetadata.ForceMousewheelAutodirHonourRoot())); Additional Details: The changes add metadata-based control over auto-direction scrolling behavior, which could potentially prevent scroll spoofing attacks, though the exact security implications aren't clear from the diff. 3. Vulnerability Existed: not sure [Potential Information Leak] [gfx/layers/apz/src/AsyncPanZoomController.cpp] [Lines 4888-4896] [Old Code] if (!aLayerMetrics.GetCriticalDisplayPort().IsEmpty()) { mCheckerboardEvent->UpdateRendertraceProperty( CheckerboardEvent::PaintedCriticalDisplayPort, aLayerMetrics.GetCriticalDisplayPort() + aLayerMetrics.GetLayoutScrollOffset()); } [Fixed Code] (Removed) Additional Details: The removal of critical display port information from checkerboard events could potentially be related to preventing information leaks, though this isn't certain. 4. Vulnerability Existed: not sure [Potential Synchronization Issue] [gfx/layers/apz/src/AsyncPanZoomController.cpp] [Lines 4307-4309] [Old Code] RepaintRequest request(aFrameMetrics, aDisplayportMargins, aUpdateType, animationType); [Fixed Code] RepaintRequest request(aFrameMetrics, aDisplayportMargins, aUpdateType, animationType, mScrollGeneration); Additional Details: The addition of scroll generation to repaint requests could help prevent synchronization issues, though it's not clear if this was fixing an existing vulnerability. Note: Many of these changes appear to be adding scroll generation tracking and improving scroll direction handling, which could have security implications for preventing scroll-related attacks or race conditions, but without more context about the specific vulnerabilities being addressed, it's difficult to be certain.
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_about_downloads.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/components/downloads/test/browser/browser_about_downloads.js@@ -26,7 +26,7 @@ BrowserTestUtils.loadURI(browser, "about:downloads"); await downloadsLoaded; await SpecialPowers.spawn(browser, [], async function() {- let box = content.document.getElementById("downloadsRichListBox");+ let box = content.document.getElementById("downloadsListBox"); ok(box, "Should have list of downloads"); is(box.children.length, 2, "Should have 2 downloads."); for (let kid of box.children) {
Based on the provided diff, I'll analyze it for potential security vulnerabilities: Vulnerability Existed: no [Element ID Change] [browser/components/downloads/test/browser/browser_about_downloads.js] [Lines 26] [Old Code] let box = content.document.getElementById("downloadsRichListBox"); [Fixed Code] let box = content.document.getElementById("downloadsListBox"); Additional Details: This appears to be a simple element ID change in the test code, likely reflecting a UI change in Firefox where the downloads list box element was renamed from "downloadsRichListBox" to "downloadsListBox". There's no indication of a security vulnerability being fixed here - it's just a test update to match the new element ID. The functionality being tested remains the same.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/layout/generic/nsGridContainerFrame.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/layout/generic/nsGridContainerFrame.h@@ -558,6 +558,10 @@ CachedBAxisMeasurement() = default; bool IsValidFor(const nsIFrame* aFrame, const LogicalSize& aCBSize) const {+ if (aFrame->IsSubtreeDirty()) {+ return false;+ }+ if (!CanCacheMeasurement(aFrame, aCBSize)) { return false; }
Here's the analysis following your requested format: Vulnerability Existed: not sure [Potential Cache Invalidation Issue] [layout/generic/nsGridContainerFrame.h] [Lines 558-562] [Old Code] bool IsValidFor(const nsIFrame* aFrame, const LogicalSize& aCBSize) const { if (!CanCacheMeasurement(aFrame, aCBSize)) { return false; } [Fixed Code] bool IsValidFor(const nsIFrame* aFrame, const LogicalSize& aCBSize) const { if (aFrame->IsSubtreeDirty()) { return false; } if (!CanCacheMeasurement(aFrame, aCBSize)) { return false; } Analysis: 1. The fix adds a check for `IsSubtreeDirty()` before validating cached measurements 2. This appears to be a defensive programming change to handle cases where cached layout information might be invalid 3. While this could potentially prevent use of stale/invalid cached layout data, I can't definitively determine if this was fixing a security vulnerability or just improving robustness 4. If this were a security fix, it would likely be preventing some form of layout manipulation or cache poisoning attack, but there's no clear evidence of this in the diff
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/devtools/client/performance-new/@types/perf.d.ts+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/performance-new/@types/perf.d.ts@@ -14,7 +14,12 @@ export interface PanelWindow { gToolbox?: any; gStore?: Store;- gInit(perfFront: PerfFront, pageContext: PageContext): Promise<void>;+ gInit(+ perfFront: PerfFront,+ traits: RootTraits,+ pageContext: PageContext,+ openAboutProfiling: () => void+ ): Promise<void>; gDestroy(): void; gIsPanelDestroyed?: boolean; }@@ -39,6 +44,13 @@ */ export interface Commands { client: any;+ targetCommand: {+ targetFront: {+ getTrait: (+ traitName: "noDisablingOnPrivateBrowsing"+ ) => boolean | undefined;+ };+ }; } /**@@ -72,6 +84,16 @@ setCharPref: (prefName: string, value: string) => Promise<void>; getIntPref: (prefName: string) => Promise<number>; setIntPref: (prefName: string, value: number) => Promise<void>;+}++export interface RootTraits {+ // In Firefox >= 98, this will be true, and will be missing for older+ // versions. The functionality controlled by this property can be removed once+ // Firefox 98 hits release.+ noDisablingOnPrivateBrowsing?: boolean;++ // There are other properties too, but we don't use them here as they're not+ // related to the performance panel. } export type RecordingState =@@ -376,6 +398,13 @@ * test the profile injection mechanism. */ UIBaseUrlPathPref: "devtools.performance.recording.ui-base-url-path";+ /**+ * This controls whether we enable the active tab view when capturing in web+ * developer preset.+ * We're not enabling the active-tab view in all environments until we+ * iron out all its issues.+ */+ UIEnableActiveTabView: "devtools.performance.recording.active-tab-view.enabled"; /** * The profiler popup has some introductory text explaining what it is the first * time that you open it. After that, it is not displayed by default.
I'll analyze the provided code diff for security fixes following the specified format. 1. Vulnerability Existed: not sure [Potential Information Leak] [devtools/client/performance-new/@types/perf.d.ts] [Lines 14-20] [Old Code] gInit(perfFront: PerfFront, pageContext: PageContext): Promise<void>; [Fixed Code] gInit( perfFront: PerfFront, traits: RootTraits, pageContext: PageContext, openAboutProfiling: () => void ): Promise<void>; Additional Details: The change adds more parameters including a callback function, which might be related to security but the exact impact isn't clear. 2. Vulnerability Existed: not sure [Potential Privilege Escalation] [devtools/client/performance-new/@types/perf.d.ts] [Lines 39-46] [Old Code] export interface Commands { client: any; } [Fixed Code] export interface Commands { client: any; targetCommand: { targetFront: { getTrait: ( traitName: "noDisablingOnPrivateBrowsing" ) => boolean | undefined; }; }; } Additional Details: The addition of targetCommand and getTrait suggests added security controls around private browsing, but the exact security implications aren't clear. 3. Vulnerability Existed: not sure [Potential Security Control] [devtools/client/performance-new/@types/perf.d.ts] [Lines 72-81] [Old Code] (No equivalent old code) [Fixed Code] export interface RootTraits { noDisablingOnPrivateBrowsing?: boolean; } Additional Details: The new interface appears to add security controls around private browsing mode, but the exact vulnerability being addressed isn't clear. 4. Vulnerability Existed: not sure [Potential Feature Control] [devtools/client/performance-new/@types/perf.d.ts] [Lines 376-383] [Old Code] (No equivalent old code) [Fixed Code] UIEnableActiveTabView: "devtools.performance.recording.active-tab-view.enabled"; Additional Details: The addition suggests tighter control over a potentially sensitive feature, but the exact security implications aren't clear. Note: The changes appear to be related to security controls (particularly around private browsing) and feature flags, but since this is a type definition file and we don't see the implementation, it's difficult to determine the exact vulnerabilities being addressed. The changes suggest improved security controls but don't clearly indicate specific vulnerabilities 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/testing/web-platform/tests/css/css-values/calc-height-block-1.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-values/calc-height-block-1.html@@ -5,7 +5,6 @@ <link rel="author" title="L. David Baron" href="https://dbaron.org/"> <link rel="help" href="http://www.w3.org/TR/css3-values/#calc-notation"> <link rel="match" href="calc-height-block-1-ref.html">- <meta name="flags" content=""> <style type="text/css"> body { margin: 0 } body > div { float: left; height: 100px; width: 1px; }
Let me analyze the provided code diff for security fixes. Vulnerability Existed: no [No specific vulnerability found] [testing/web-platform/tests/css/css-values/calc-height-block-1.html] [Lines 5] [Old Code] <meta name="flags" content=""> [Fixed Code] [removed line] Additional Details: - The change simply removes an empty meta tag that wasn't serving any purpose - This appears to be a test file cleanup rather than a security fix - No actual security vulnerability was present in the removed code - The change doesn't relate to any known vulnerability patterns The modification is likely part of general code maintenance rather than addressing a security issue. The removed meta tag was empty and didn't pose any security risk.
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.nonfinite.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50)@@ -108,8 +108,8 @@ ctx.lineTo(0, 50); ctx.fillStyle = '#0f0'; ctx.fill();-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "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. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.roundrect.nonfinite.html] [Lines 17-18, 108-109] [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"); _assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "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"); _assertPixel(canvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); The changes don't address any security issues but rather improve code readability/maintainability by using a more concise variable name. No security-related functionality was modified in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.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/path-objects/2d.path.arc.zero.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'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -23,7 +23,7 @@ ctx.beginPath(); ctx.arc(50, 25, 50, 0, 0, true); ctx.stroke();-_assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255");+_assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "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. Here's the structured response: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.arc.zero.1.worker.js] [Lines 13-14, 23] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); The changes are purely variable naming changes with no security implications. The functionality remains exactly the same, just using a different variable name.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/devtools/shared/commands/target/target-command.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/shared/commands/target/target-command.js@@ -8,19 +8,6 @@ const EventEmitter = require("devtools/shared/event-emitter"); const BROWSERTOOLBOX_FISSION_ENABLED = "devtools.browsertoolbox.fission";--const {- LegacyProcessesWatcher,-} = require("devtools/shared/commands/target/legacy-target-watchers/legacy-processes-watcher");-const {- LegacyServiceWorkersWatcher,-} = require("devtools/shared/commands/target/legacy-target-watchers/legacy-serviceworkers-watcher");-const {- LegacySharedWorkersWatcher,-} = require("devtools/shared/commands/target/legacy-target-watchers/legacy-sharedworkers-watcher");-const {- LegacyWorkersWatcher,-} = require("devtools/shared/commands/target/legacy-target-watchers/legacy-workers-watcher"); class TargetCommand extends EventEmitter { #selectedTargetFront;@@ -88,29 +75,7 @@ this._onTargetDestroyed = this._onTargetDestroyed.bind(this); this._onTargetSelected = this._onTargetSelected.bind(this);- this.legacyImplementation = {- process: new LegacyProcessesWatcher(- this,- this._onTargetAvailable,- this._onTargetDestroyed- ),- worker: new LegacyWorkersWatcher(- this,- this._onTargetAvailable,- this._onTargetDestroyed- ),- shared_worker: new LegacySharedWorkersWatcher(- this,- this._onTargetAvailable,- this._onTargetDestroyed- ),- service_worker: new LegacyServiceWorkersWatcher(- this,- this._onTargetAvailable,- this._onTargetDestroyed,- this.commands- ),- };+ this.legacyImplementation = {}; // Public flag to allow listening for workers even if the fission pref is off // This allows listening for workers in the content toolbox outside of fission contexts@@ -238,10 +203,16 @@ // We only consider the top level target to be switched const isDestroyedTargetSwitching = target == this.targetFront; const isServiceWorker = target.targetType === this.TYPES.SERVICE_WORKER;-- // Only notify about service worker targets if this.destroyServiceWorkersOnNavigation- // is true- if (!isServiceWorker || this.destroyServiceWorkersOnNavigation) {+ const isPopup = target.targetForm.isPopup;++ // Never destroy the popup targets when the top level target is destroyed+ // as the popup follow a different lifecycle.+ // Also avoid destroying service worker targets for similar reason,+ // unless this.destroyServiceWorkersOnNavigation is true.+ if (+ !isPopup &&+ (!isServiceWorker || this.destroyServiceWorkersOnNavigation)+ ) { this._onTargetDestroyed(target, { isTargetSwitching: isDestroyedTargetSwitching, // Do not destroy service worker front as we may want to keep using it.@@ -460,7 +431,16 @@ if (!isTargetSwitching) { await this.watcherFront.watchTargets(type); }- } else if (this.legacyImplementation[type]) {+ } else if (LegacyTargetWatchers[type]) {+ // Instantiate the legacy listener only once for each TargetCommand, and reuse it if we stop and restart listening+ if (!this.legacyImplementation[type]) {+ this.legacyImplementation[type] = new LegacyTargetWatchers[type](+ this,+ this._onTargetAvailable,+ this._onTargetDestroyed,+ this.commands+ );+ } await this.legacyImplementation[type].listen(); } else { throw new Error(`Unsupported target type '${type}'`);@@ -996,7 +976,7 @@ } getParentTarget(targetFront) {- // Note that there is three temporary edgecases:+ // Note that there are edgecases: // * Until bug 1741927 is fixed and we remove non-EFT codepath entirely, // we may receive a `parentInnerWindowId` that doesn't relate to any target. // This happens when the parent document of the targetFront is a document loaded in the@@ -1007,9 +987,6 @@ // Once we can stop using getParentWindowGlobalTarget for the other edgecase we will be able to // replace it with such fallback: `return this.targetFront;`. // browser_target_command_frames.js will help you get things right.- // @backward-compat { version 96 } Fx 96 started exposing `parentInnerWindowId`- // * And backward compat. This targetForm attribute is new. Once we drop 95 support,- // we can simply remove this last bullet point as the other two edgecase may still be valid. const { parentInnerWindowId } = targetFront.targetForm; if (parentInnerWindowId) { const targets = this.getAllTargets([TargetCommand.TYPES.FRAME]);@@ -1028,13 +1005,6 @@ // It should be: MBT, regular tab toolbox and web extension. // The others which still don't support watcher don't spawn FRAME targets: // browser content toolbox and service workers.-- // @backward-compat { version 96 } WebExtension targets only support the- // watcher starting with version 96. This if block can be fully removed when- // version 96 hits the release channel (cf. comment above).- if (!this.watcherFront) {- return null;- } return this.watcherFront.getParentWindowGlobalTarget( targetFront.browsingContextID@@ -1081,4 +1051,26 @@ TargetCommand.TYPES );+const LegacyTargetWatchers = {};+loader.lazyRequireGetter(+ LegacyTargetWatchers,+ TargetCommand.TYPES.PROCESS,+ "devtools/shared/commands/target/legacy-target-watchers/legacy-processes-watcher"+);+loader.lazyRequireGetter(+ LegacyTargetWatchers,+ TargetCommand.TYPES.WORKER,+ "devtools/shared/commands/target/legacy-target-watchers/legacy-workers-watcher"+);+loader.lazyRequireGetter(+ LegacyTargetWatchers,+ TargetCommand.TYPES.SHARED_WORKER,+ "devtools/shared/commands/target/legacy-target-watchers/legacy-sharedworkers-watcher"+);+loader.lazyRequireGetter(+ LegacyTargetWatchers,+ TargetCommand.TYPES.SERVICE_WORKER,+ "devtools/shared/commands/target/legacy-target-watchers/legacy-serviceworkers-watcher"+);+ module.exports = TargetCommand;
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Legacy Code Removal] [devtools/shared/commands/target/target-command.js] [Lines 8-19, 88-108] [Old Code] ```javascript const { LegacyProcessesWatcher, } = require("devtools/shared/commands/target/legacy-target-watchers/legacy-processes-watcher"); const { LegacyServiceWorkersWatcher, } = require("devtools/shared/commands/target/legacy-target-watchers/legacy-serviceworkers-watcher"); const { LegacySharedWorkersWatcher, } = require("devtools/shared/commands/target/legacy-target-watchers/legacy-sharedworkers-watcher"); const { LegacyWorkersWatcher, } = require("devtools/shared/commands/target/legacy-target-watchers/legacy-workers-watcher"); ... this.legacyImplementation = { process: new LegacyProcessesWatcher( this, this._onTargetAvailable, this._onTargetDestroyed ), worker: new LegacyWorkersWatcher( this, this._onTargetAvailable, this._onTargetDestroyed ), shared_worker: new LegacySharedWorkersWatcher( this, this._onTargetAvailable, this._onTargetDestroyed ), service_worker: new LegacyServiceWorkersWatcher( this, this._onTargetAvailable, this._onTargetDestroyed, this.commands ), }; ``` [Fixed Code] ```javascript this.legacyImplementation = {}; ... const LegacyTargetWatchers = {}; loader.lazyRequireGetter( LegacyTargetWatchers, TargetCommand.TYPES.PROCESS, "devtools/shared/commands/target/legacy-target-watchers/legacy-processes-watcher" ); // similar lazyRequireGetter calls for other watchers ``` Additional Details: The change moves from direct imports and instantiation to lazy loading of legacy watchers. While this might improve performance, it's unclear if there was a security vulnerability being fixed. 2. Vulnerability Existed: not sure [Target Destruction Logic Improvement] [devtools/shared/commands/target/target-command.js] [Lines 238-246] [Old Code] ```javascript if (!isServiceWorker || this.destroyServiceWorkersOnNavigation) { ``` [Fixed Code] ```javascript if ( !isPopup && (!isServiceWorker || this.destroyServiceWorkersOnNavigation) ) { ``` Additional Details: The change adds a check for popup targets to prevent their destruction. While this improves target lifecycle management, it's unclear if it fixes a specific security vulnerability. 3. Vulnerability Existed: not sure [Backward Compatibility Removal] [devtools/shared/commands/target/target-command.js] [Lines 996-1028] [Old Code] ```javascript // @backward-compat { version 96 } Fx 96 started exposing `parentInnerWindowId` // * And backward compat. This targetForm attribute is new. Once we drop 95 support, // we can simply remove this last bullet point as the other two edgecase may still be valid. ... // @backward-compat { version 96 } WebExtension targets only support the // watcher starting with version 96. This if block can be fully removed when // version 96 hits the release channel (cf. comment above). if (!this.watcherFront) { return null; } ``` [Fixed Code] Removed these backward compatibility checks Additional Details: The removal of backward compatibility code might indicate these versions are no longer supported, but it's unclear if this was fixing a security issue or just cleanup.
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/tools/wptrunner/wptrunner/browsers/ie.py+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/ie.py@@ -1,12 +1,12 @@-from .base import require_arg-from .base import NullBrowser, get_timeout_multiplier # noqa: F401+from .base import require_arg, WebDriverBrowser+from .base import get_timeout_multiplier # noqa: F401 from ..executors import executor_kwargs as base_executor_kwargs-from ..executors.executorinternetexplorer import InternetExplorerDriverWdspecExecutor # noqa: F401+from ..executors.base import WdspecExecutor # noqa: F401 __wptrunner__ = {"product": "ie", "check_args": "check_args",- "browser": "NullBrowser",- "executor": {"wdspec": "InternetExplorerDriverWdspecExecutor"},+ "browser": "WebDriverBrowser",+ "executor": {"wdspec": "WdspecExecutor"}, "browser_kwargs": "browser_kwargs", "executor_kwargs": "executor_kwargs", "env_extras": "env_extras",@@ -17,9 +17,11 @@ def check_args(**kwargs): require_arg(kwargs, "webdriver_binary")+ def browser_kwargs(logger, test_type, run_info_data, config, **kwargs): return {"webdriver_binary": kwargs["webdriver_binary"], "webdriver_args": kwargs.get("webdriver_args")}+ def executor_kwargs(logger, test_type, test_environment, run_info_data, **kwargs):@@ -32,8 +34,15 @@ executor_kwargs["capabilities"] = capabilities return executor_kwargs+ def env_extras(**kwargs): return []+ def env_options(): return {"supports_debugger": False}+++class InternetExplorerBrowser(WebDriverBrowser):+ def make_command(self):+ return [self.binary, f"--port={self.port}"] + self.webdriver_args
Analyzing the provided code diff, here are the potential security vulnerabilities: 1. Vulnerability Existed: not sure [Potential Improper Input Validation] [File: testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/ie.py] [Lines: browser_kwargs function] [Old Code] ```python def browser_kwargs(logger, test_type, run_info_data, config, **kwargs): return {"webdriver_binary": kwargs["webdriver_binary"], "webdriver_args": kwargs.get("webdriver_args")} ``` [Fixed Code] ```python def browser_kwargs(logger, test_type, run_info_data, config, **kwargs): return {"webdriver_binary": kwargs["webdriver_binary"], "webdriver_args": kwargs.get("webdriver_args")} ``` Additional Details: While the function signature remains the same, the change in browser implementation (from NullBrowser to WebDriverBrowser) might introduce new security considerations for input validation. 2. Vulnerability Existed: not sure [Potential Command Injection] [File: testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/ie.py] [Lines: InternetExplorerBrowser class] [Old Code] ```python # No equivalent old code (new class added) ``` [Fixed Code] ```python class InternetExplorerBrowser(WebDriverBrowser): def make_command(self): return [self.binary, f"--port={self.port}"] + self.webdriver_args ``` Additional Details: The new class introduces command construction that concatenates webdriver_args without apparent validation, which could potentially lead to command injection if webdriver_args contains untrusted input. 3. Vulnerability Existed: not sure [Potential Information Exposure] [File: testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/ie.py] [Lines: env_options function] [Old Code] ```python def env_options(): return {"supports_debugger": False} ``` [Fixed Code] ```python def env_options(): return {"supports_debugger": False} ``` Additional Details: While the code remains unchanged, the change in executor (from InternetExplorerDriverWdspecExecutor to WdspecExecutor) might affect how debug information is handled, potentially leading to information exposure. Note: The diff shows significant architectural changes (moving from NullBrowser to WebDriverBrowser and changing executor implementations) which could have security implications, but without more context about how these components are used, it's difficult to identify specific vulnerabilities. The changes appear to be more about functionality than direct 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/devtools/client/debugger/src/selectors/getCallStackFrames.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/debugger/src/selectors/getCallStackFrames.js@@ -6,10 +6,11 @@ getSources, getSelectedSource, getSourceInSources,-} from "../reducers/sources";-import { getCurrentThreadFrames } from "../reducers/pause";+ getBlackBoxRanges,+} from "../selectors/sources";+import { getCurrentThreadFrames } from "./pause"; import { annotateFrames } from "../utils/pause/frames";-import { isOriginal } from "../utils/source";+import { isFrameBlackBoxed } from "../utils/source"; import { createSelector } from "reselect"; function getLocation(frame, isGeneratedSource) {@@ -24,7 +25,7 @@ } function appendSource(sources, frame, selectedSource) {- const isGeneratedSource = selectedSource && !isOriginal(selectedSource);+ const isGeneratedSource = selectedSource && !selectedSource.isOriginal; return { ...frame, location: getLocation(frame, isGeneratedSource),@@ -32,7 +33,12 @@ }; }-export function formatCallStackFrames(frames, sources, selectedSource) {+export function formatCallStackFrames(+ frames,+ sources,+ selectedSource,+ blackboxedRanges+) { if (!frames) { return null; }@@ -40,7 +46,7 @@ const formattedFrames = frames .filter(frame => getSourceForFrame(sources, frame)) .map(frame => appendSource(sources, frame, selectedSource))- .filter(frame => !frame?.source?.isBlackBoxed);+ .filter(frame => !isFrameBlackBoxed(frame, frame.source, blackboxedRanges)); return annotateFrames(formattedFrames); }@@ -50,5 +56,6 @@ getCurrentThreadFrames, getSources, getSelectedSource,+ getBlackBoxRanges, formatCallStackFrames );
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Import Path Manipulation] [devtools/client/debugger/src/selectors/getCallStackFrames.js] [Lines 6-10] [Old Code] ``` import { getSources, getSelectedSource, getSourceInSources, } from "../reducers/sources"; import { getCurrentThreadFrames } from "../reducers/pause"; ``` [Fixed Code] ``` import { getSources, getSelectedSource, getSourceInSources, getBlackBoxRanges, } from "../selectors/sources"; import { getCurrentThreadFrames } from "./pause"; ``` 2. Vulnerability Existed: not sure [Potential Information Leak via Blackboxing] [devtools/client/debugger/src/selectors/getCallStackFrames.js] [Lines 32-40] [Old Code] ``` export function formatCallStackFrames(frames, sources, selectedSource) { ... .filter(frame => !frame?.source?.isBlackBoxed); ``` [Fixed Code] ``` export function formatCallStackFrames( frames, sources, selectedSource, blackboxedRanges ) { ... .filter(frame => !isFrameBlackBoxed(frame, frame.source, blackboxedRanges)); ``` 3. Vulnerability Existed: not sure [Potential Source Validation Issue] [devtools/client/debugger/src/selectors/getCallStackFrames.js] [Lines 24-25] [Old Code] ``` const isGeneratedSource = selectedSource && !isOriginal(selectedSource); ``` [Fixed Code] ``` const isGeneratedSource = selectedSource && !selectedSource.isOriginal; ``` Note: While I couldn't identify any clear security vulnerabilities (no CVE or common vulnerability patterns), I've noted potential areas where security improvements might have been made. The changes appear to be more about code organization and functionality improvements rather than direct security fixes. The most significant change is the improved blackboxing implementation which could potentially relate to information hiding/security, but I can't confirm if this was fixing a 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/testing/web-platform/tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.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/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js@@ -14,8 +14,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);@@ -31,10 +31,10 @@ promise.then(function(response) { createImageBitmap(response).then(bitmap => { ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50);- _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); }, t_fail); }).then(t_pass, t_fail);
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 corresponding updates to the variable name in the assertions. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js] [Lines 14-31] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixelApprox(canvas, 0,0, 0,255,0,255, "0,0", "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.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/third_party/rust/thin-vec/README.md+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/thin-vec/README.md@@ -1,4 +1,9 @@+ [](https://crates.io/crates/thin-vec) [](https://docs.rs/thin-vec)++# thin-vec+ ThinVec is a Vec that stores its length and capacity inline, making it take up-less space. Currently this crate mostly exists to facilitate gecko ffi. The-crate isn't quite ready for use elsewhere, as it currently unconditionally-uses the libc allocator.+less space.++Currently this crate mostly exists to facilitate Gecko (Firefox) FFI, but it+works perfectly fine as a native rust library as well.
Based on the provided diff content, I'll analyze it for security vulnerabilities: 1. Vulnerability Existed: no No specific vulnerability [third_party/rust/thin-vec/README.md] [Lines 1-9] Old Code: Basic description of ThinVec without badges or clear usage information Fixed Code: Added CI badges, crate info, and clarified usage scope The changes appear to be documentation improvements rather than security fixes. The modifications include: 1. Adding CI and version badges 2. Adding a proper header (# thin-vec) 3. Clarifying the crate's usage (now stating it works as a native Rust library) 4. Removing mention of unconditional libc allocator usage There are no clear security vulnerabilities being addressed in this README.md change. The modifications are primarily documentation improvements and project status updates.
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/docshell/base/BrowsingContext.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/docshell/base/BrowsingContext.cpp@@ -368,7 +368,7 @@ nsILoadInfo::OPENER_POLICY_SAME_ORIGIN_ALLOW_POPUPS); }- nsContentUtils::GenerateUUIDInPlace(fields.mHistoryID);+ fields.mHistoryID = nsID::GenerateUUID(); fields.mExplicitActive = [&] { if (parentBC) { // Non-root browsing-contexts inherit their status from its parent.@@ -3499,13 +3499,21 @@ /* static */ bool BrowsingContext::ShouldAddEntryForRefresh( nsIURI* aCurrentURI, const SessionHistoryInfo& aInfo) {- if (aInfo.GetPostData()) {+ return ShouldAddEntryForRefresh(aCurrentURI, aInfo.GetURI(),+ aInfo.GetPostData());+}++/* static */+bool BrowsingContext::ShouldAddEntryForRefresh(nsIURI* aCurrentURI,+ nsIURI* aNewURI,+ bool aHasPostData) {+ if (aHasPostData) { return true; } bool equalsURI = false; if (aCurrentURI) {- aCurrentURI->Equals(aInfo.GetURI(), &equalsURI);+ aCurrentURI->Equals(aNewURI, &equalsURI); } return !equalsURI; }@@ -3513,7 +3521,7 @@ void BrowsingContext::SessionHistoryCommit( const LoadingSessionHistoryInfo& aInfo, uint32_t aLoadType, nsIURI* aCurrentURI, bool aHadActiveEntry, bool aPersist,- bool aCloneEntryChildren, bool aChannelExpired) {+ bool aCloneEntryChildren, bool aChannelExpired, uint32_t aCacheKey) { nsID changeID = {}; if (XRE_IsContentProcess()) { RefPtr<ChildSHistory> rootSH = Top()->GetChildSessionHistory();@@ -3544,11 +3552,11 @@ ContentChild* cc = ContentChild::GetSingleton(); mozilla::Unused << cc->SendHistoryCommit( this, aInfo.mLoadId, changeID, aLoadType, aPersist, aCloneEntryChildren,- aChannelExpired);+ aChannelExpired, aCacheKey); } else { Canonical()->SessionHistoryCommit(aInfo.mLoadId, changeID, aLoadType, aPersist, aCloneEntryChildren,- aChannelExpired);+ aChannelExpired, aCacheKey); } }
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure UUID Generation Change [docshell/base/BrowsingContext.cpp] [Lines 368] Old Code: `nsContentUtils::GenerateUUIDInPlace(fields.mHistoryID);` Fixed Code: `fields.mHistoryID = nsID::GenerateUUID();` Note: The change in UUID generation method might be related to security, but without more context about the implementation differences, it's unclear if this fixes a specific vulnerability. 2. Vulnerability Existed: yes POST Data Refresh Check Refactoring [docshell/base/BrowsingContext.cpp] [Lines 3499-3519] Old Code: Single function checking POST data and URI equality Fixed Code: Split into two functions with clearer parameter passing Note: The refactoring appears to make the POST data refresh check more robust by explicitly passing parameters rather than relying on the SessionHistoryInfo object. This could prevent potential security issues with refresh handling. 3. Vulnerability Existed: not sure Session History Commit Parameter Addition [docshell/base/BrowsingContext.cpp] [Lines 3513-3544] Old Code: Missing `aCacheKey` parameter Fixed Code: Added `aCacheKey` parameter Note: The addition of a cache key parameter suggests improved cache handling, but without more context, it's unclear if this fixes a specific vulnerability or is just a feature enhancement. The most significant potential security improvement appears to be in the POST data refresh check refactoring, though the exact vulnerability being addressed isn't specified in the diff. The other changes might be security-related improvements or general code quality enhancements.
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/lint/eslint/eslint-plugin-mozilla/lib/helpers.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/tools/lint/eslint/eslint-plugin-mozilla/lib/helpers.js@@ -176,6 +176,8 @@ " " + this.getASTSource(node.right) );+ case "UnaryExpression":+ return node.operator + " " + this.getASTSource(node.argument); default: throw new Error("getASTSource unsupported node type: " + node.type); }
Let me analyze the code diff for security fixes. Vulnerability Existed: not sure [Potential AST Parsing Incomplete Handling] [tools/lint/eslint/eslint-plugin-mozilla/lib/helpers.js] [Lines 176-178] [Old Code] ```javascript " " + this.getASTSource(node.right) ); default: throw new Error("getASTSource unsupported node type: " + node.type); ``` [Fixed Code] ```javascript " " + this.getASTSource(node.right) ); case "UnaryExpression": return node.operator + " " + this.getASTSource(node.argument); default: throw new Error("getASTSource unsupported node type: " + node.type); ``` The change adds support for UnaryExpression nodes in the AST parsing logic. While this doesn't appear to fix a specific known vulnerability, incomplete AST parsing could potentially lead to security issues if the linter fails to properly analyze certain code patterns. The fix ensures more complete code analysis coverage, which could prevent security-relevant code from being overlooked. However, without more context about how this function is used, I can't definitively say this was fixing a security 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/darling_core/src/codegen/from_field.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/darling_core/src/codegen/from_field.rs@@ -1,10 +1,12 @@ use proc_macro2::TokenStream; use quote::ToTokens;-use syn::{self, Ident};+use syn::Ident;-use codegen::{ExtractAttribute, OuterFromImpl, TraitImpl};-use options::ForwardAttrs;-use util::PathList;+use crate::{+ codegen::{ExtractAttribute, OuterFromImpl, TraitImpl},+ options::ForwardAttrs,+ util::PathList,+}; /// `impl FromField` generator. This is used for parsing an individual /// field and its attributes.@@ -35,7 +37,8 @@ self.base.fallback_decl() };- let passed_ident = self.ident+ let passed_ident = self+ .ident .as_ref() .map(|i| quote!(#i: #input.ident.clone(),)); let passed_vis = self.vis.as_ref().map(|i| quote!(#i: #input.vis.clone(),));@@ -44,10 +47,10 @@ // Determine which attributes to forward (if any). let grab_attrs = self.extractor();- let map = self.base.map_fn();+ let post_transform = self.base.post_transform_call(); self.wrap(- quote!{+ quote! { fn from_field(#input: &::syn::Field) -> ::darling::Result<Self> { #error_declaration@@ -65,7 +68,7 @@ #passed_vis #passed_attrs #initializers- }) #map+ }) #post_transform } },@@ -76,7 +79,7 @@ impl<'a> ExtractAttribute for FromFieldImpl<'a> { fn attr_names(&self) -> &PathList {- &self.attr_names+ self.attr_names } fn forwarded_attrs(&self) -> Option<&ForwardAttrs> {
Analyzing the provided code diff, I don't see any obvious security vulnerabilities being fixed. The changes appear to be primarily code style improvements and minor refactoring. Here's the analysis: 1. Vulnerability Existed: no No security vulnerability [third_party/rust/darling_core/src/codegen/from_field.rs] [Various lines] The changes include: - Updated import statements to use crate-relative paths - Formatting improvements (line breaks, spacing) - Renamed `map_fn()` to `post_transform_call()` - Minor syntax improvements 2. Vulnerability Existed: no No security vulnerability [third_party/rust/darling_core/src/codegen/from_field.rs] [Lines 76-82] The changes in the ExtractAttribute implementation are: - Changed `&self.attr_names` to `self.attr_names` (equivalent behavior) - No functional changes to the security properties The diff shows typical maintenance improvements rather than security fixes. The changes don't appear to address any specific vulnerabilities or introduce new security concerns.
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/streams/writable-streams/error.any.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/streams/writable-streams/error.any.js@@ -1,4 +1,4 @@-// META: global=window,worker,jsshell+// META: global=window,worker 'use strict'; const error1 = new Error('error1');
Analysis: 1. Vulnerability Existed: not sure [Potential Removal of jsshell Environment] [testing/web-platform/tests/streams/writable-streams/error.any.js] [Lines 1] [Old Code] // META: global=window,worker,jsshell [Fixed Code] // META: global=window,worker Additional Details: - The diff shows the removal of 'jsshell' from the META global directive. This could potentially affect test coverage or security testing in the jsshell environment, but it's not clear if this was fixing a security vulnerability or just a test configuration change. - Without more context about why 'jsshell' was removed, we can't definitively say this was a security fix. It might simply be a test scope reduction. - No specific vulnerability name can be associated with this change based on the available information.
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.