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/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp@@ -1892,4 +1892,33 @@ status == nsIGfxInfo::FEATURE_STATUS_OK; }+Maybe<int> WebrtcVideoConduit::ActiveSendPayloadType() const {+ MOZ_ASSERT(mCallThread->IsOnCurrentThread());++ if (!mSendStream) {+ return Nothing();+ }++ if (mSendStreamConfig.rtp.payload_type == -1) {+ return Nothing();+ }++ return Some(mSendStreamConfig.rtp.payload_type);+}++Maybe<int> WebrtcVideoConduit::ActiveRecvPayloadType() const {+ MOZ_ASSERT(mCallThread->IsOnCurrentThread());++ auto stats = GetReceiverStats();+ if (!stats) {+ return Nothing();+ }++ if (stats->current_payload_type == -1) {+ return Nothing();+ }++ return Some(stats->current_payload_type);+}+ } // namespace mozilla
Based on the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be adding new functionality (methods to get active payload types) rather than fixing security issues. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found [File] dom/media/webrtc/libwebrtcglue/VideoConduit.cpp [Lines] 1892-1925 [Old Code] (No previous implementation of these methods) [Fixed Code] (New methods added for payload type checking) The changes consist of: 1. Adding ActiveSendPayloadType() method to check send stream payload type 2. Adding ActiveRecvPayloadType() method to check receiver stats payload type These appear to be new feature additions rather than security fixes. The methods follow safe practices by: - Checking thread safety with MOZ_ASSERT - Properly handling null/empty cases with Maybe/Nothing - Checking for invalid payload type (-1) - Using proper encapsulation of member variables No known vulnerability patterns (like buffer overflows, injection risks, etc.) are present 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/element/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html@@ -21,7 +21,6 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);- ctx.fillStyle = '#f00'; ctx.fillRect(Infinity, 0, 100, 50); ctx.fillRect(-Infinity, 0, 100, 50);@@ -46,7 +45,6 @@ ctx.fillRect(0, Infinity, Infinity, Infinity); ctx.fillRect(0, Infinity, 100, Infinity); ctx.fillRect(0, 0, Infinity, Infinity);- _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");
Analyzing the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be related to test formatting and organization rather than security fixes. Here's my analysis: 1. Vulnerability Existed: no No security vulnerability found [File] testing/web-platform/tests/html/canvas/element/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html [Lines] 21-46 [Old Code] Included extra blank lines between test operations [Fixed Code] Removed some blank lines for cleaner formatting The changes consist of: 1. Removing a blank line after `ctx.fillRect(0, 0, 100, 50);` 2. Removing a blank line before `_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");` These appear to be purely cosmetic changes to the test file, likely made for better code organization or readability. The test continues to check how the canvas handles non-finite (Infinity) values in fillRect operations, which is a functional test rather than a security fix.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/transformations/2d.transformation.setTransform.skewed.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'); // Create green with a red square ring inside it ctx.fillStyle = '#0f0';@@ -40,14 +40,14 @@ for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); ctx.fill();-_assertPixel(offscreenCanvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255");-_assertPixel(offscreenCanvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255");-_assertPixel(offscreenCanvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255");-_assertPixel(offscreenCanvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255");-_assertPixel(offscreenCanvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255");-_assertPixel(offscreenCanvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255");-_assertPixel(offscreenCanvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255");-_assertPixel(offscreenCanvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255");+_assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255");+_assertPixel(canvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255");+_assertPixel(canvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255");+_assertPixel(canvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255");+_assertPixel(canvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255");+_assertPixel(canvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255");+_assertPixel(canvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255");+_assertPixel(canvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't find any security vulnerabilities. The changes appear to be purely cosmetic, renaming a variable from `offscreenCanvas` to `canvas` and updating the corresponding assertions to use the new variable name. Here's the structured response: Vulnerability Existed: no No security vulnerability found [File] [Lines 17-18, 40-47] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixel(offscreenCanvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); [etc...] [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixel(canvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); [etc...] The changes are purely variable naming improvements with no security implications. The functionality remains exactly the same, just with a more concise 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/futures-sink/.cargo-checksum.json+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/futures-sink/.cargo-checksum.json@@ -1 +1 @@-{"files":{"Cargo.toml":"7632dfc3867d05e50aa520b300be44f1f0b345d5a16a460618b05b510a9051db","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","README.md":"a509e1ce84f285190130def6d2b9e3861988f9be725f7697f09fba347601d86f","src/lib.rs":"90c41f91e4b6764a218d4f337a9a46fba1e256f59f67b0afa5352ba92bf641c0"},"package":"996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af"}+{"files":{"Cargo.toml":"0d41bfc59fc07239fd6c7a084dbfe9379398a2e9a081160476229bf30da16ecd","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","README.md":"a509e1ce84f285190130def6d2b9e3861988f9be725f7697f09fba347601d86f","src/lib.rs":"90c41f91e4b6764a218d4f337a9a46fba1e256f59f67b0afa5352ba92bf641c0"},"package":"e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508"}=========widget/gtk/nsNativeThemeGTK.h========--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/widget/gtk/nsNativeThemeGTK.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/widget/gtk/nsNativeThemeGTK.h@@ -9,15 +9,14 @@ #include "nsITheme.h" #include "nsCOMPtr.h" #include "nsAtom.h"-#include "nsNativeTheme.h"-#include "nsStyleConsts.h"-#include "nsNativeBasicTheme.h"-#include "ScrollbarDrawingGTK.h"+#include "Theme.h" #include <gtk/gtk.h> #include "gtkdrawing.h"-class nsNativeThemeGTK final : public nsNativeBasicTheme {+class nsNativeThemeGTK final : public mozilla::widget::Theme {+ using Theme = mozilla::widget::Theme;+ public: // The nsITheme interface. NS_IMETHOD DrawWidgetBackground(gfxContext* aContext, nsIFrame* aFrame,@@ -81,8 +80,6 @@ bool ThemeNeedsComboboxDropmarker() override; Transparency GetWidgetTransparency(nsIFrame*, StyleAppearance) override;- ScrollbarSizes GetScrollbarSizes(nsPresContext*, StyleScrollbarWidth,- Overlay) override; nsNativeThemeGTK();
I'll analyze the provided code diff for security fixes following the specified format. 1. For the first file (futures-sink/.cargo-checksum.json): Vulnerability Existed: no No specific vulnerability - checksum update [third_party/rust/futures-sink/.cargo-checksum.json] [1] Old checksum: "7632dfc3867d05e50aa520b300be44f1f0b345d5a16a460618b05b510a9051db" Fixed checksum: "0d41bfc59fc07239fd6c7a084dbfe9379398a2e9a081160476229bf30da16ecd" This appears to be a routine update of package checksums without any security implications. 2. For the second file (widget/gtk/nsNativeThemeGTK.h): Vulnerability Existed: not sure Potential inheritance/interface change [widget/gtk/nsNativeThemeGTK.h] [9-15,81] Old code: "class nsNativeThemeGTK final : public nsNativeBasicTheme" Fixed code: "class nsNativeThemeGTK final : public mozilla::widget::Theme" The changes involve: - Changing the base class from nsNativeBasicTheme to Theme - Removing ScrollbarSizes GetScrollbarSizes method override - Removing some header includes While this could potentially affect security if the inheritance change modifies behavior in unexpected ways, there's no clear evidence of a security vulnerability being fixed. The changes appear more architectural in nature.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/base.py+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/base.py@@ -1,9 +1,14 @@ import enum+import errno import os import platform import socket+import traceback from abc import ABCMeta, abstractmethod+import mozprocess++from ..environment import wait_for_service from ..wptcommandline import require_arg # noqa: F401 here = os.path.dirname(__file__)@@ -275,3 +280,118 @@ self.logger.process_output(self.pid, line.decode("utf8", "replace"), command=" ".join(self.command) if self.command else "")+++class WebDriverBrowser(Browser):+ __metaclass__ = ABCMeta++ def __init__(self, logger, binary, webdriver_binary, webdriver_args=None,+ host="127.0.0.1", port=None, base_path="/", env=None, **kwargs):+ super().__init__(logger)++ if webdriver_binary is None:+ raise ValueError("WebDriver server binary must be given "+ "to --webdriver-binary argument")++ self.logger = logger+ self.binary = binary+ self.webdriver_binary = webdriver_binary++ self.host = host+ self._port = port++ self.base_path = base_path+ self.env = os.environ.copy() if env is None else env+ self.webdriver_args = webdriver_args if webdriver_args is not None else []++ self.url = f"http://{self.host}:{self.port}{self.base_path}"++ self._output_handler = None+ self._cmd = None+ self._proc = None++ def make_command(self):+ """Returns the full command for starting the server process as a list."""+ return [self.webdriver_binary] + self.webdriver_args++ def start(self, group_metadata, **kwargs):+ try:+ self._run_server(group_metadata, **kwargs)+ except KeyboardInterrupt:+ self.stop()++ def create_output_handler(self, cmd):+ """Return an instance of the class used to handle application output.++ This can be overridden by subclasses which have particular requirements+ for parsing, or otherwise using, the output."""+ return OutputHandler(self.logger, cmd)++ def _run_server(self, group_metadata, **kwargs):+ cmd = self.make_command()+ self._output_handler = self.create_output_handler(cmd)++ self._proc = mozprocess.ProcessHandler(+ cmd,+ processOutputLine=self._output_handler,+ env=self.env,+ storeOutput=False)++ self.logger.debug("Starting WebDriver: %s" % ' '.join(cmd))+ try:+ self._proc.run()+ except OSError as e:+ if e.errno == errno.ENOENT:+ raise IOError(+ "WebDriver executable not found: %s" % self.webdriver_binary)+ raise+ self._output_handler.after_process_start(self._proc.pid)++ try:+ wait_for_service(self.logger, self.host, self.port)+ except Exception:+ self.logger.error(+ "WebDriver was not accessible "+ f"within the timeout:\n{traceback.format_exc()}")+ raise+ self._output_handler.start(group_metadata=group_metadata, **kwargs)+ self.logger.debug("_run complete")++ def stop(self, force=False):+ self.logger.debug("Stopping WebDriver")+ clean = True+ if self.is_alive():+ kill_result = self._proc.kill()+ if force and kill_result != 0:+ clean = False+ self._proc.kill(9)+ success = not self.is_alive()+ if success and self._output_handler is not None:+ # Only try to do output post-processing if we managed to shut down+ self._output_handler.after_process_stop(clean)+ self._output_handler = None+ return success++ def is_alive(self):+ return hasattr(self._proc, "proc") and self._proc.poll() is None++ @property+ def pid(self):+ if self._proc is not None:+ return self._proc.pid++ @property+ def port(self):+ # If no port is supplied, we'll get a free port right before we use it.+ # Nothing guarantees an absence of race conditions here.+ if self._port is None:+ self._port = get_free_port()+ return self._port++ def cleanup(self):+ self.stop()++ def executor_browser(self):+ return ExecutorBrowser, {"webdriver_url": self.url,+ "host": self.host,+ "port": self.port}
I'll analyze the code diff for security fixes following the specified format. 1. Vulnerability Existed: not sure [Potential Race Condition in Port Allocation] [testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/base.py] [Lines 283-286] [Old Code] Not shown in diff (likely didn't exist before) [Fixed Code] @property def port(self): # If no port is supplied, we'll get a free port right before we use it. # Nothing guarantees an absence of race conditions here. if self._port is None: self._port = get_free_port() return self._port Additional Details: The comment explicitly mentions a potential race condition in port allocation, though it's unclear if this was an actual vulnerability or just a general warning. The code doesn't show any mitigation for this race condition. 2. Vulnerability Existed: yes [Insufficient Error Handling for WebDriver Process] [testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/base.py] [Lines 317-323] [Old Code] Not shown in diff (likely didn't exist before) [Fixed Code] try: self._proc.run() except OSError as e: if e.errno == errno.ENOENT: raise IOError( "WebDriver executable not found: %s" % self.webdriver_binary) raise Additional Details: The added error handling specifically checks for ENOENT (file not found) when trying to run the WebDriver process, which prevents potential security issues that could arise from silently failing when the WebDriver binary is missing. 3. Vulnerability Existed: yes [Improved Process Cleanup] [testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/base.py] [Lines 325-344] [Old Code] Not shown in diff (likely didn't exist before) [Fixed Code] def stop(self, force=False): self.logger.debug("Stopping WebDriver") clean = True if self.is_alive(): kill_result = self._proc.kill() if force and kill_result != 0: clean = False self._proc.kill(9) success = not self.is_alive() if success and self._output_handler is not None: # Only try to do output post-processing if we managed to shut down self._output_handler.after_process_stop(clean) self._output_handler = None return success Additional Details: The improved process cleanup mechanism helps prevent potential resource leaks or orphaned processes by: 1. Properly checking if process is alive before killing 2. Implementing a force kill option (SIGKILL) if normal termination fails 3. Only performing cleanup if shutdown was successful 4. Vulnerability Existed: not sure [Added Service Accessibility Check] [testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/base.py] [Lines 325-330] [Old Code] Not shown in diff (likely didn't exist before) [Fixed Code] try: wait_for_service(self.logger, self.host, self.port) except Exception: self.logger.error( "WebDriver was not accessible " f"within the timeout:\n{traceback.format_exc()}") raise Additional Details: The addition of service accessibility checking could potentially address security concerns related to: - Ensuring the WebDriver service is properly accessible - Preventing race conditions between service startup and usage - Providing better error reporting when service is unavailable However, it's unclear if this was fixing a specific vulnerability or just improving reliability.
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/ci/build/windows.yml+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/taskcluster/ci/build/windows.yml@@ -103,7 +103,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -210,7 +210,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -369,7 +369,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -482,7 +482,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -540,7 +540,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -591,7 +591,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -643,7 +643,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -695,7 +695,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -747,7 +747,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -1273,7 +1273,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -1332,7 +1332,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -1447,7 +1447,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -1654,7 +1654,7 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross+ - linux64-clang - linux64-rust-cross - linux64-rust-size - linux64-nasm@@ -1817,18 +1817,18 @@ fetches: toolchain: - linux64-binutils- - linux64-clang-win-cross- - linux64-rust-cross- - linux64-rust-size- - linux64-nasm- - linux64-node- - linux64-cbindgen- - linux64-dump_syms- - linux64-wine- - linux64-liblowercase- - linux64-winchecksec- - nsis- - sysroot-x86_64-linux-gnu- - sysroot-wasm32-wasi- fetch:- - upx-3.95-win+ - linux64-clang+ - linux64-rust-cross+ - linux64-rust-size+ - linux64-nasm+ - linux64-node+ - linux64-cbindgen+ - linux64-dump_syms+ - linux64-wine+ - linux64-liblowercase+ - linux64-winchecksec+ - nsis+ - sysroot-x86_64-linux-gnu+ - sysroot-wasm32-wasi+ fetch:+ - upx-3.95-win
After analyzing the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be toolchain updates where `linux64-clang-win-cross` is being replaced with `linux64-clang` in multiple locations. This seems more like a build system improvement or toolchain standardization rather than a security fix. Here's the structured analysis: 1. Vulnerability Existed: no [Toolchain Update] [taskcluster/ci/build/windows.yml] [Multiple lines throughout file] [Old Code: linux64-clang-win-cross] [Fixed Code: linux64-clang] Additional Notes: - The change appears consistently across multiple sections of the file - The modification is purely in the toolchain specification - No security-related functionality appears to be affected - This seems to be a build system change rather than a security fix If there were any security implications to this change, they would be related to the toolchain itself rather than the configuration change shown here, but that would require analysis of the actual toolchain components being referenced.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/browser/extensions/webcompat/data/ua_overrides.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/extensions/webcompat/data/ua_overrides.js@@ -792,6 +792,35 @@ }, }, },+ {+ /*+ * Bug 1751232 - Add override for sites returning desktop layout for Android 12+ * Webcompat issue #92978 - https://github.com/webcompat/web-bugs/issues/92978+ *+ * A number of news sites returns desktop layout for Android 12 only. Changing it+ * to Android 12.0 fixes the issue+ */+ id: "bug1751232",+ platform: "android",+ domain: "Sites with desktop layout for Android 12",+ bug: "1751232",+ config: {+ matches: [+ "*://*.dw.com/*",+ "*://*.abc10.com/*",+ "*://*.wnep.com/*",+ "*://*.dn.se/*",+ "*://*.dailymail.co.uk/*",+ ],+ uaTransformer: originalUA => {+ if (!originalUA.includes("Android 12;")) {+ return originalUA;+ }++ return originalUA.replace("Android 12;", "Android 12.0;");+ },+ },+ }, ]; module.exports = AVAILABLE_UA_OVERRIDES;
Analysis of the provided code diff: 1. Vulnerability Existed: no User-Agent Override for Android 12 Sites [browser/extensions/webcompat/data/ua_overrides.js] [Lines 792-827] [Old Code] (No previous entry for these domains) [Fixed Code] { /* * Bug 1751232 - Add override for sites returning desktop layout for Android 12 * Webcompat issue #92978 - https://github.com/webcompat/web-bugs/issues/92978 * * A number of news sites returns desktop layout for Android 12 only. Changing it * to Android 12.0 fixes the issue */ id: "bug1751232", platform: "android", domain: "Sites with desktop layout for Android 12", bug: "1751232", config: { matches: [ "*://*.dw.com/*", "*://*.abc10.com/*", "*://*.wnep.com/*", "*://*.dn.se/*", "*://*.dailymail.co.uk/*", ], uaTransformer: originalUA => { if (!originalUA.includes("Android 12;")) { return originalUA; } return originalUA.replace("Android 12;", "Android 12.0;"); }, }, } This appears to be a user-agent override addition to fix layout issues on specific sites for Android 12 devices. The change modifies the user-agent string from "Android 12;" to "Android 12.0;" for the listed domains. This is a compatibility fix rather than a security vulnerability fix. No security vulnerabilities are being addressed in this change.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.js@@ -13,8 +13,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -30,7 +30,7 @@ ctx.moveTo(50, 25); ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); ctx.stroke();-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
Based on the provided diff, I'll analyze it for potential security vulnerabilities: 1. Vulnerability Existed: no No specific vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.js [Lines] 13-30 [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); The changes appear to be purely variable renaming (from 'offscreenCanvas' to 'canvas') with no security implications. The functionality remains exactly the same, just with a different variable name. There are no security vulnerabilities being fixed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/js/src/jit/x86-shared/MacroAssembler-x86-shared.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/js/src/jit/x86-shared/MacroAssembler-x86-shared.h@@ -401,6 +401,12 @@ FloatRegister), void (MacroAssembler::*constOp)(const SimdConstant&, FloatRegister));+ void binarySimd128(+ FloatRegister lhs, const SimdConstant& rhs, FloatRegister dest,+ void (MacroAssembler::*regOp)(const Operand&, FloatRegister,+ FloatRegister),+ void (MacroAssembler::*constOp)(const SimdConstant&, FloatRegister,+ FloatRegister)); void binarySimd128(const SimdConstant& rhs, FloatRegister lhsDest, void (MacroAssembler::*regOp)(const Operand&, FloatRegister),@@ -457,16 +463,16 @@ void compareInt8x16(FloatRegister lhs, Operand rhs, Assembler::Condition cond, FloatRegister output);- void compareInt8x16(Assembler::Condition cond, const SimdConstant& rhs,- FloatRegister lhsDest);+ void compareInt8x16(Assembler::Condition cond, FloatRegister lhs,+ const SimdConstant& rhs, FloatRegister dest); void compareInt16x8(FloatRegister lhs, Operand rhs, Assembler::Condition cond, FloatRegister output);- void compareInt16x8(Assembler::Condition cond, const SimdConstant& rhs,- FloatRegister lhsDest);+ void compareInt16x8(Assembler::Condition cond, FloatRegister lhs,+ const SimdConstant& rhs, FloatRegister dest); void compareInt32x4(FloatRegister lhs, Operand rhs, Assembler::Condition cond, FloatRegister output);- void compareInt32x4(Assembler::Condition cond, const SimdConstant& rhs,- FloatRegister lhsDest);+ void compareInt32x4(Assembler::Condition cond, FloatRegister lhs,+ const SimdConstant& rhs, FloatRegister dest); void compareForEqualityInt64x2(FloatRegister lhs, Operand rhs, Assembler::Condition cond, FloatRegister output);@@ -475,12 +481,12 @@ FloatRegister temp2, FloatRegister output); void compareFloat32x4(FloatRegister lhs, Operand rhs, Assembler::Condition cond, FloatRegister output);- void compareFloat32x4(Assembler::Condition cond, const SimdConstant& rhs,- FloatRegister lhsDest);+ void compareFloat32x4(Assembler::Condition cond, FloatRegister lhs,+ const SimdConstant& rhs, FloatRegister dest); void compareFloat64x2(FloatRegister lhs, Operand rhs, Assembler::Condition cond, FloatRegister output);- void compareFloat64x2(Assembler::Condition cond, const SimdConstant& rhs,- FloatRegister lhsDest);+ void compareFloat64x2(Assembler::Condition cond, FloatRegister lhs,+ const SimdConstant& rhs, FloatRegister dest); void minMaxFloat32x4(bool isMin, FloatRegister lhs, Operand rhs, FloatRegister temp1, FloatRegister temp2,@@ -573,7 +579,7 @@ vmovdqa(src, dest); } }- FloatRegister reusedInputInt32x4(FloatRegister src, FloatRegister dest) {+ FloatRegister moveSimd128IntIfNotAVX(FloatRegister src, FloatRegister dest) { MOZ_ASSERT(src.isSimd128() && dest.isSimd128()); if (HasAVX()) { return src;@@ -639,7 +645,8 @@ vmovaps(src, dest); } }- FloatRegister reusedInputSimd128Float(FloatRegister src, FloatRegister dest) {+ FloatRegister moveSimd128FloatIfNotAVX(FloatRegister src,+ FloatRegister dest) { MOZ_ASSERT(src.isSimd128() && dest.isSimd128()); if (HasAVX()) { return src;@@ -647,9 +654,9 @@ moveSimd128Float(src, dest); return dest; }- FloatRegister reusedInputSimd128FloatIfNotOther(FloatRegister src,- FloatRegister dest,- FloatRegister other) {+ FloatRegister moveSimd128FloatIfNotAVXOrOther(FloatRegister src,+ FloatRegister dest,+ FloatRegister other) { MOZ_ASSERT(src.isSimd128() && dest.isSimd128()); if (HasAVX() && src != other) { return src;@@ -657,6 +664,7 @@ moveSimd128Float(src, dest); return dest; }+ void loadUnalignedSimd128(const Operand& src, FloatRegister dest) { vmovups(src, dest); }@@ -680,140 +688,6 @@ void moveHighPairToLowPairFloat32(FloatRegister src, FloatRegister dest) { vmovhlps(src, dest, dest); }- void shuffleFloat32(uint32_t mask, FloatRegister src, FloatRegister dest) {- // The shuffle instruction on x86 is such that it moves 2 words from- // the dest and 2 words from the src operands. To simplify things, just- // clobber the output with the input and apply the instruction- // afterwards.- // Note: this is useAtStart-safe because src isn't read afterwards.- FloatRegister srcCopy = reusedInputSimd128Float(src, dest);- vshufps(mask, srcCopy, srcCopy, dest);- }-- // Unused SIMD methods, defined in MacroAssemble-x86-shared-SIMD-unused.cpp.- // Don't use these without moving them out of that file and moving the- // declaration into the list above.-- void checkedConvertFloat32x4ToInt32x4(FloatRegister src, FloatRegister dest,- Register temp, Label* oolCheck,- Label* rejoin);- void oolConvertFloat32x4ToInt32x4(FloatRegister src, Register temp,- Label* rejoin, Label* onConversionError);- void checkedConvertFloat32x4ToUint32x4(FloatRegister src, FloatRegister dest,- Register temp, FloatRegister tempF,- Label* failed);- void createInt32x4(Register lane0, Register lane1, Register lane2,- Register lane3, FloatRegister dest);- void createFloat32x4(FloatRegister lane0, FloatRegister lane1,- FloatRegister lane2, FloatRegister lane3,- FloatRegister temp, FloatRegister output);- void reinterpretSimd(bool isIntegerLaneType, FloatRegister input,- FloatRegister output);- void extractLaneSimdBool(FloatRegister input, Register output,- unsigned numLanes, unsigned lane);- void allTrueSimdBool(FloatRegister input, Register output);- void anyTrueSimdBool(FloatRegister input, Register output);- void swizzleInt32x4(FloatRegister input, FloatRegister output,- unsigned lanes[4]);- void swizzleFloat32x4(FloatRegister input, FloatRegister output,- unsigned lanes[4]);- void oldSwizzleInt8x16(FloatRegister input, FloatRegister output,- const mozilla::Maybe<Register>& temp,- int8_t lanes[16]);- void shuffleX4(FloatRegister lhs, Operand rhs, FloatRegister out,- const mozilla::Maybe<FloatRegister>& maybeTemp,- unsigned lanes[4]);- void minNumFloat32x4(FloatRegister lhs, Operand rhs, FloatRegister temp,- FloatRegister output);- void maxNumFloat32x4(FloatRegister lhs, Operand rhs, FloatRegister temp,- FloatRegister output);-- // Unused inline methods ditto.-- void bitwiseAndSimdInt(FloatRegister lhs, const Operand& rhs,- FloatRegister dest) {- vpand(rhs, lhs, dest);- }- void bitwiseOrSimdInt(FloatRegister lhs, const Operand& rhs,- FloatRegister dest) {- vpor(rhs, lhs, dest);- }- void bitwiseOrFloat32x4(FloatRegister lhs, const Operand& rhs,- FloatRegister dest) {- vorps(rhs, lhs, dest);- }- void bitwiseAndNotFloat32x4(FloatRegister lhs, const Operand& rhs,- FloatRegister dest) {- vandnps(rhs, lhs, dest);- }- FloatRegister reusedInputAlignedInt32x4(const Operand& src,- FloatRegister dest) {- MOZ_ASSERT(dest.isSimd128());- if (HasAVX() && src.kind() == Operand::FPREG) {- return FloatRegister::FromCode(src.fpu());- }- loadAlignedSimd128Int(src, dest);- return dest;- }- void packedAddInt8(const Operand& src, FloatRegister dest) {- vpaddb(src, dest, dest);- }- void packedSubInt8(const Operand& src, FloatRegister dest) {- vpsubb(src, dest, dest);- }- void packedAddInt16(const Operand& src, FloatRegister dest) {- vpaddw(src, dest, dest);- }- void packedSubInt16(const Operand& src, FloatRegister dest) {- vpsubw(src, dest, dest);- }- void packedAddInt32(const Operand& src, FloatRegister dest) {- vpaddd(src, dest, dest);- }- void packedSubInt32(const Operand& src, FloatRegister dest) {- vpsubd(src, dest, dest);- }- void packedRcpApproximationFloat32x4(const Operand& src, FloatRegister dest) {- // This function is an approximation of the result, this might need- // fix up if the spec requires a given precision for this operation.- // TODO See also bug 1068028.- vrcpps(src, dest);- }- void packedRcpSqrtApproximationFloat32x4(const Operand& src,- FloatRegister dest) {- // TODO See comment above. See also bug 1068028.- vrsqrtps(src, dest);- }- FloatRegister reusedInputAlignedSimd128Float(const Operand& src,- FloatRegister dest) {- MOZ_ASSERT(dest.isSimd128());- if (HasAVX() && src.kind() == Operand::FPREG) {- return FloatRegister::FromCode(src.fpu());- }- loadAlignedSimd128Float(src, dest);- return dest;- }- void packedAddFloat32(const Operand& src, FloatRegister dest) {- vaddps(src, dest, dest);- }- void packedSubFloat32(const Operand& src, FloatRegister dest) {- vsubps(src, dest, dest);- }- void packedMulFloat32(const Operand& src, FloatRegister dest) {- vmulps(src, dest, dest);- }- void packedDivFloat32(const Operand& src, FloatRegister dest) {- vdivps(src, dest, dest);- }- void shuffleMix(uint32_t mask, const Operand& src, FloatRegister dest) {- // Note this uses vshufps, which is a cross-domain penalty on CPU where it- // applies, but that's the way clang and gcc do it.- vshufps(mask, src, dest, dest);- }- void selectX4(FloatRegister mask, FloatRegister onTrue, FloatRegister onFalse,- FloatRegister temp, FloatRegister output);- // End unused SIMD.- void moveFloatAsDouble(Register src, FloatRegister dest) { vmovd(src, dest); vcvtss2sd(dest, dest, dest);
I'll analyze the code diff for security fixes following the specified format. 1. Vulnerability Existed: not sure [Potential API Misuse/Confusion] [js/src/jit/x86-shared/MacroAssembler-x86-shared.h] [Lines 401-406, 457-482] [Old Code] void compareInt8x16(Assembler::Condition cond, const SimdConstant& rhs, FloatRegister lhsDest); [Fixed Code] void compareInt8x16(Assembler::Condition cond, FloatRegister lhs, const SimdConstant& rhs, FloatRegister dest); Additional Details: The function signatures for SIMD comparison operations were changed to be more consistent and explicit about input/output registers, potentially preventing register misuse. 2. Vulnerability Existed: not sure [Potential Register Handling Issue] [js/src/jit/x86-shared/MacroAssembler-x86-shared.h] [Lines 573-581, 639-666] [Old Code] FloatRegister reusedInputInt32x4(FloatRegister src, FloatRegister dest) FloatRegister reusedInputSimd128Float(FloatRegister src, FloatRegister dest) FloatRegister reusedInputSimd128FloatIfNotOther(FloatRegister src, FloatRegister dest, FloatRegister other) [Fixed Code] FloatRegister moveSimd128IntIfNotAVX(FloatRegister src, FloatRegister dest) FloatRegister moveSimd128FloatIfNotAVX(FloatRegister src, FloatRegister dest) FloatRegister moveSimd128FloatIfNotAVXOrOther(FloatRegister src, FloatRegister dest, FloatRegister other) Additional Details: The function names were changed to be more descriptive of their actual behavior (moving rather than reusing registers), which might prevent misuse of these operations. 3. Vulnerability Existed: not sure [Potential Code Cleanup/Dead Code Removal] [js/src/jit/x86-shared/MacroAssembler-x86-shared.h] [Lines 680-688] [Old Code] Various unused SIMD methods and inline functions [Fixed Code] Removed unused code Additional Details: Removal of unused code could potentially eliminate attack surfaces, though no specific vulnerability was identified in the removed code. Note: While these changes appear to be primarily about code organization and API consistency rather than fixing specific known vulnerabilities, they could potentially prevent certain classes of bugs that might lead to security issues. The changes make the code's behavior more explicit and remove unused functionality.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.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 = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -39,12 +39,12 @@ ctx.fillRect(-48, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 50);- _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");- _assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255");- _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");- _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");- _assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255");- _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255");+ _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");+ _assertPixel(canvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255");+ _assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");+ _assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");+ _assertPixel(canvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255");+ _assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); }, t_fail); }).then(t_pass, t_fail);
After analyzing the provided code diff, I don't find any security vulnerabilities. The changes appear to be purely cosmetic/refactoring changes where a variable name was changed from `offscreenCanvas` to `canvas`. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html] [Lines 17-18, 39-44] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); The changes are simply variable name refactoring with no security implications. The functionality remains exactly the same, just using a different variable name. No security vulnerabilities were introduced or fixed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/third_party/rust/crossbeam-epoch/benches/pin.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/crossbeam-epoch/benches/pin.rs@@ -8,7 +8,7 @@ #[bench] fn single_pin(b: &mut Bencher) {- b.iter(|| epoch::pin());+ b.iter(epoch::pin); } #[bench]
Based on the provided code diff, I'll analyze it for security vulnerabilities: Vulnerability Existed: no No Vulnerability Found [File] [Lines 8-8] [Old Code] b.iter(|| epoch::pin()); [Fixed Code] b.iter(epoch::pin); Additional Details: This appears to be a simple optimization change in benchmark code where a closure was replaced with direct function reference. The change doesn't affect security but rather improves performance by avoiding unnecessary closure overhead. The functionality remains the same - both versions call `epoch::pin()` during benchmarking. No security implications are apparent in this change. Note: The file is in benchmark code (benches directory) which typically doesn't contain security-sensitive logic, further supporting that this is just a performance optimization.
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/webrtc/jsapi/RTCRtpReceiver.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/media/webrtc/jsapi/RTCRtpReceiver.cpp@@ -24,6 +24,7 @@ #include "mozilla/dom/RTCRtpSourcesBinding.h" #include "RTCStatsReport.h" #include "mozilla/Preferences.h"+#include "PeerConnectionCtx.h" #include "TransceiverImpl.h" #include "libwebrtcglue/AudioConduit.h" #include "RTCStatsIdGenerator.h"@@ -160,15 +161,42 @@ return nullptr; }- // Two promises; one for RTP/RTCP stats, another for ICE stats.- auto promises = GetStatsInternal();- RTCStatsPromise::All(mMainThread, promises)+ if (NS_WARN_IF(!mTransceiverImpl)) {+ // TODO(bug 1056433): When we stop nulling this out when the PC is closed+ // (or when the transceiver is stopped), we can remove this code. We+ // resolve instead of reject in order to make this eventual change in+ // behavior a little smaller.+ promise->MaybeResolve(new RTCStatsReport(mWindow));+ return promise.forget();+ }++ nsTArray<RTCCodecStats> codecStats;+ if (PeerConnectionCtx::isActive()) {+ PeerConnectionCtx* ctx = PeerConnectionCtx::GetInstance();+ if (PeerConnectionImpl* pc = ctx->GetPeerConnection(mPCHandle); pc) {+ codecStats = pc->GetCodecStats(pc->GetTimestampMaker().GetNow());+ }+ }++ AutoTArray<+ std::tuple<TransceiverImpl*, RefPtr<RTCStatsPromise::AllPromiseType>>, 1>+ statsPromises;+ nsTArray<RefPtr<RTCStatsPromise>> stats = GetStatsInternal();+ statsPromises.AppendElement(std::make_tuple(+ mTransceiverImpl.get(), RTCStatsPromise::All(mMainThread, stats)));++ TransceiverImpl::ApplyCodecStats(std::move(codecStats),+ std::move(statsPromises)) ->Then( mMainThread, __func__,- [promise, window = mWindow, idGen = mIdGenerator](- const nsTArray<UniquePtr<RTCStatsCollection>>& aStats) {+ [promise, window = mWindow,+ idGen = mIdGenerator](UniquePtr<RTCStatsCollection> aStats) mutable {+ // Rewrite ids and merge stats collections into the final report.+ AutoTArray<UniquePtr<RTCStatsCollection>, 1> stats;+ stats.AppendElement(std::move(aStats));+ RTCStatsCollection opaqueStats;- idGen->RewriteIds(aStats, &opaqueStats);+ idGen->RewriteIds(std::move(stats), &opaqueStats); RefPtr<RTCStatsReport> report(new RTCStatsReport(window)); report->Incorporate(opaqueStats);@@ -293,6 +321,13 @@ return; }+ if (!audioStats->last_packet_received_timestamp_ms) {+ // By spec: "The lifetime of all RTP monitored objects starts+ // when the RTP stream is first used: When the first RTP packet+ // is sent or received on the SSRC it represents"+ return;+ }+ // First, fill in remote stat with rtcp sender data, if present. if (audioStats->last_sender_report_timestamp_ms) { RTCRemoteOutboundRtpStreamStats remote;@@ -378,6 +413,13 @@ Maybe<webrtc::VideoReceiveStream::Stats> videoStats = aConduit->GetReceiverStats(); if (videoStats.isNothing()) {+ return;+ }++ if (!videoStats->rtp_stats.last_packet_received_timestamp_ms) {+ // By spec: "The lifetime of all RTP monitored objects starts+ // when the RTP stream is first used: When the first RTP packet+ // is sent or received on the SSRC it represents" return; }
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure Potential Null Pointer Dereference [File] dom/media/webrtc/jsapi/RTCRtpReceiver.cpp [Lines] 160-161 [Old Code] ```cpp auto promises = GetStatsInternal(); RTCStatsPromise::All(mMainThread, promises) ``` [Fixed Code] ```cpp if (NS_WARN_IF(!mTransceiverImpl)) { promise->MaybeResolve(new RTCStatsReport(mWindow)); return promise.forget(); } ``` Additional Details: Added null check for mTransceiverImpl to prevent potential null pointer dereference. 2. Vulnerability Existed: not sure Missing Initialization Check [File] dom/media/webrtc/jsapi/RTCRtpReceiver.cpp [Lines] 293-321 [Old Code] ```cpp if (audioStats.isNothing()) { return; } ``` [Fixed Code] ```cpp if (!audioStats->last_packet_received_timestamp_ms) { return; } ``` Additional Details: Added check for last_packet_received_timestamp_ms to ensure proper initialization before use. 3. Vulnerability Existed: not sure Missing Initialization Check [File] dom/media/webrtc/jsapi/RTCRtpReceiver.cpp [Lines] 378-413 [Old Code] ```cpp if (videoStats.isNothing()) { return; } ``` [Fixed Code] ```cpp if (!videoStats->rtp_stats.last_packet_received_timestamp_ms) { return; } ``` Additional Details: Added check for rtp_stats.last_packet_received_timestamp_ms to ensure proper initialization before use. Note: While these changes appear to be defensive programming improvements, I couldn't identify specific CVE-worthy vulnerabilities. The changes seem to focus on making the code more robust against edge cases rather than fixing known security vulnerabilities.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/netwerk/dns/nsHostRecord.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/netwerk/dns/nsHostRecord.cpp@@ -412,9 +412,8 @@ break; }- if (mResolverType == DNSResolverType::TRR &&- !StaticPrefs::network_trr_strict_native_fallback() && !mTRRSuccess &&- mNativeSuccess && TRRService::Get()) {+ if (mResolverType == DNSResolverType::TRR && !mTRRSuccess && mNativeSuccess &&+ !LoadGetTtl() && TRRService::Get()) { TRRService::Get()->AddToBlocklist(nsCString(host), originSuffix, pb, true); } }
Here's the analysis following the specified format: Vulnerability Existed: yes Race Condition/Inconsistent State Vulnerability [netwerk/dns/nsHostRecord.cpp] [Lines 412-416] [Old Code] if (mResolverType == DNSResolverType::TRR && !StaticPrefs::network_trr_strict_native_fallback() && !mTRRSuccess && mNativeSuccess && TRRService::Get()) { [Fixed Code] if (mResolverType == DNSResolverType::TRR && !mTRRSuccess && mNativeSuccess && !LoadGetTtl() && TRRService::Get()) { Additional Details: 1. The vulnerability appears to be related to DNS resolution race conditions where the code could potentially add domains to the blocklist under inconsistent states. 2. The fix removes the dependency on `StaticPrefs::network_trr_strict_native_fallback()` and adds a check for `!LoadGetTtl()` instead, which likely provides a more reliable condition for determining when to blocklist. 3. The change suggests the previous condition could lead to premature or incorrect blocklisting due to race conditions between TRR (Trusted Recursive Resolver) and native DNS resolution paths. Note: While the exact CVE name isn't identifiable from this diff alone, the pattern matches known DNS resolution race condition vulnerabilities in browser implementations.
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-round-display/polar-origin-and-anchor-003.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-round-display/polar-origin-and-anchor-003.html@@ -4,7 +4,6 @@ <title>CSS Test: Position an element with 'polar-origin' and 'polar-anchor'</title> <link rel="author" title="Jihye Hong" href="mailto:[email protected]" /> <link rel="help" href="https://www.w3.org/TR/motion-1/#motion-paths-overview/">- <meta name="flags" content=""> <meta name="assert" content="Test checks that the position of an element specified with 'polar-origin' and 'polar-anchor'."> <style type="text/css"> .container {
Based on the provided code diff, I'll analyze it for potential security vulnerabilities: Vulnerability Existed: no No security vulnerability found [testing/web-platform/tests/css/css-round-display/polar-origin-and-anchor-003.html] [Lines 4-7] [Old Code] <meta name="flags" content=""> [Fixed Code] (removed line) Additional Details: 1. The change simply removes an empty meta tag for "flags" which appears to be test-related metadata. 2. This modification doesn't affect security as it was just removing unused test configuration. 3. No actual security vulnerability was present in either version of the code. 4. The change appears to be part of test cleanup rather than a security fix.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/media/libwebp/src/dsp/neon.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/media/libwebp/src/dsp/neon.h@@ -12,9 +12,11 @@ #ifndef WEBP_DSP_NEON_H_ #define WEBP_DSP_NEON_H_+#include "src/dsp/dsp.h"++#if defined(WEBP_USE_NEON)+ #include <arm_neon.h>--#include "src/dsp/dsp.h" // Right now, some intrinsics functions seem slower, so we disable them // everywhere except newer clang/gcc or aarch64 where the inline assembly is@@ -98,4 +100,5 @@ } while (0) #endif+#endif // WEBP_USE_NEON #endif // WEBP_DSP_NEON_H_
Based on the provided diff, I'll analyze it for security vulnerabilities: 1. Vulnerability Existed: no Build Configuration Guard [File] media/libwebp/src/dsp/neon.h [Lines] 12-15, 100 [Old Code] #ifndef WEBP_DSP_NEON_H_ #define WEBP_DSP_NEON_H_ #include <arm_neon.h> [Fixed Code] #ifndef WEBP_DSP_NEON_H_ #define WEBP_DSP_NEON_H_ #include "src/dsp/dsp.h" #if defined(WEBP_USE_NEON) #include <arm_neon.h> Additional Details: The changes primarily involve better organization of header includes and adding a proper build configuration guard (WEBP_USE_NEON) around the NEON-specific code. This isn't a security fix but rather an improvement in code structure and conditional compilation. The change ensures NEON-specific code is only included when the build configuration explicitly enables NEON support, which is good practice but doesn't address any specific vulnerability. No actual security vulnerabilities were fixed in this diff. The changes are related to build system improvements and code organization.
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/test/mochitest/test_bug1121701.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/docshell/test/mochitest/test_bug1121701.html@@ -11,12 +11,11 @@ <script type="application/javascript"> /** Test for Bug 1121701 **/+ SimpleTest.waitForExplicitFinish(); var testUrl1 = "file_bug1121701_1.html"; var testUrl2 = "file_bug1121701_2.html";- var bc = new BroadcastChannel("file_bug1121701_1");- var bc2 = new BroadcastChannel("file_bug1121701_2"); var page1LoadCount = 0; let page1Done = {}; page1Done.promise = new Promise(resolve => {@@ -27,49 +26,64 @@ page2Done.resolve = resolve; });- async function scheduleFinish() {- await Promise.all([page1Done.promise, page2Done.promise]);- bc2.close();- bc.close();- SimpleTest.finish();- }- bc.onmessage = (msgEvent) => {- var msg = msgEvent.data;- var command = msg.command;- if (command == "child1PageShow") {- ++page1LoadCount;- var persisted = msg.persisted;- var pageHideAsserts = msg.pageHideAsserts;- if (pageHideAsserts) {- ok(pageHideAsserts.persisted, "onpagehide: test page 1 should get persisted");- is(pageHideAsserts.innerHTML, "modified", "onpagehide: innerHTML text is 'modified'");+ addLoadEvent(async function() {++ // Bug 1746646: Make mochitests work with TCP enabled (cookieBehavior = 5)+ // Acquire storage access permission here so that the BroadcastChannel used to+ // communicate with the opened windows works in xorigin tests. Otherwise,+ // the iframe containing this page is isolated from first-party storage access,+ // which isolates BroadcastChannel communication.+ if (isXOrigin) {+ SpecialPowers.wrap(document).notifyUserGestureActivation();+ await SpecialPowers.addPermission("storageAccessAPI", true, window.location.href);+ await SpecialPowers.wrap(document).requestStorageAccess();+ }++ var bc = new BroadcastChannel("file_bug1121701_1");+ var bc2 = new BroadcastChannel("file_bug1121701_2");++ async function scheduleFinish() {+ await Promise.all([page1Done.promise, page2Done.promise]);+ bc2.close();+ bc.close();+ SimpleTest.finish();+ }++ bc.onmessage = (msgEvent) => {+ var msg = msgEvent.data;+ var command = msg.command;+ if (command == "child1PageShow") {+ ++page1LoadCount;+ var persisted = msg.persisted;+ var pageHideAsserts = msg.pageHideAsserts;+ if (pageHideAsserts) {+ ok(pageHideAsserts.persisted, "onpagehide: test page 1 should get persisted");+ is(pageHideAsserts.innerHTML, "modified", "onpagehide: innerHTML text is 'modified'");+ }+ if (page1LoadCount == 1) {+ SimpleTest.executeSoon(function() {+ is(persisted, false, "Initial page load shouldn't be persisted.");+ bc.postMessage({command: "setInnerHTML", testUrl2});+ });+ } else if (page1LoadCount == 2) {+ is(persisted, true, "Page load from bfcache should be persisted.");+ is(msg.innerHTML, "modified", "innerHTML text is 'modified'");+ bc.postMessage({command: "close"});+ }+ } else if (command == "closed") {+ page1Done.resolve(); }- if (page1LoadCount == 1) {- SimpleTest.executeSoon(function() {- is(persisted, false, "Initial page load shouldn't be persisted.");- bc.postMessage({command: "setInnerHTML", testUrl2});- });- } else if (page1LoadCount == 2) {- is(persisted, true, "Page load from bfcache should be persisted.");- is(msg.innerHTML, "modified", "innerHTML text is 'modified'");- bc.postMessage({command: "close"});+ }+ bc2.onmessage = (msgEvent) => {+ var msg = msgEvent.data;+ var command = msg.command;+ if (command == "child2PageShow") {+ bc2.postMessage({command: "setInnerHTML", location: location.href});+ } else if (command == "onmessage") {+ page2Done.resolve(); }- } else if (command == "closed") {- page1Done.resolve(); }- }- bc2.onmessage = (msgEvent) => {- var msg = msgEvent.data;- var command = msg.command;- if (command == "child2PageShow") {- bc2.postMessage({command: "setInnerHTML", location: location.href});- } else if (command == "onmessage") {- page2Done.resolve();- }- }- SimpleTest.waitForExplicitFinish();- addLoadEvent(async function() { scheduleFinish(); // If Fission is disabled, the pref is no-op. SpecialPowers.pushPrefEnv({set: [["fission.bfcacheInParent", true]]}, () => {
Analyzing the provided code diff for security fixes: 1. Vulnerability Existed: yes Cross-Origin Storage Access Issue [File] docshell/test/mochitest/test_bug1121701.html [Lines] 11-12, 26-40 [Old Code] ```javascript var bc = new BroadcastChannel("file_bug1121701_1"); var bc2 = new BroadcastChannel("file_bug1121701_2"); ``` [Fixed Code] ```javascript // Bug 1746646: Make mochitests work with TCP enabled (cookieBehavior = 5) // Acquire storage access permission here so that the BroadcastChannel used to // communicate with the opened windows works in xorigin tests. Otherwise, // the iframe containing this page is isolated from first-party storage access, // which isolates BroadcastChannel communication. if (isXOrigin) { SpecialPowers.wrap(document).notifyUserGestureActivation(); await SpecialPowers.addPermission("storageAccessAPI", true, window.location.href); await SpecialPowers.wrap(document).requestStorageAccess(); } var bc = new BroadcastChannel("file_bug1121701_1"); var bc2 = new BroadcastChannel("file_bug1121701_2"); ``` The fix addresses a potential cross-origin storage access issue where BroadcastChannel communication could fail in cross-origin tests due to storage isolation. The solution adds proper storage access permission handling. 2. Vulnerability Existed: not sure Potential Race Condition in Test Initialization [File] docshell/test/mochitest/test_bug1121701.html [Lines] 11 [Old Code] ```javascript // No explicit wait for test finish at start ``` [Fixed Code] ```javascript SimpleTest.waitForExplicitFinish(); ``` [Details] While not clearly a security vulnerability, the addition of `waitForExplicitFinish()` at the start of the script could prevent potential race conditions in test initialization, though this appears to be more of a test reliability improvement than a security fix. The main security-related change is the addition of storage access permission handling for cross-origin scenarios, which prevents potential communication failures in test environments with strict storage isolation policies.
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.closePath.nextpoint.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.closePath.nextpoint.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);@@ -25,7 +25,7 @@ ctx.closePath(); ctx.lineTo(1000, 25); ctx.stroke();-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, here's the security assessment: 1. Vulnerability Existed: no No security vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.closePath.nextpoint.worker.js [Lines] 13-25 [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); The changes appear to be purely variable renaming (from `offscreenCanvas` to `canvas`) with no security implications. The functionality remains exactly the same, and there are no security-related patterns or vulnerabilities being addressed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/line-styles/2d.line.width.scaledefault.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);@@ -23,11 +23,11 @@ ctx.moveTo(0, 0.5); ctx.lineTo(2, 0.5); ctx.stroke();-_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 50,5, 0,255,0,255, "50,5", "0,255,0,255");-_assertPixel(offscreenCanvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255");+_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255");+_assertPixel(canvas, 50,5, 0,255,0,255, "50,5", "0,255,0,255");+_assertPixel(canvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't identify any security vulnerabilities. The changes appear to be purely variable renaming (from `offscreenCanvas` to `canvas`) and corresponding updates to function calls. Here's the structured response: Vulnerability Existed: no No security vulnerability found [File] [Lines 13-23] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); The changes are purely cosmetic/refactoring in nature and don't affect security. The functionality remains identical, just with a renamed variable for better clarity or consistency.
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.fillStyle.parse.css-color-4-rgb-6.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.fillStyle.parse.css-color-4-rgb-6.worker.js@@ -13,14 +13,14 @@ }); 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.fillStyle = 'rgb(0 255 0 / 20%)'; ctx.fillRect(0, 0, 100, 50);-_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51");+_assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); t.done(); });
Based on the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely cosmetic/refactoring changes (variable renaming) rather than security fixes. Here's the analysis: Vulnerability Existed: no No security vulnerability found File: testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixel(canvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); The changes only involve renaming the variable `offscreenCanvas` to `canvas` and updating the references to it. There are no changes to the actual security-sensitive operations or data handling in the 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/devtools/client/debugger/src/components/PrimaryPanes/Outline.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/debugger/src/components/PrimaryPanes/Outline.js@@ -23,7 +23,6 @@ import OutlineFilter from "./OutlineFilter"; import "./Outline.css"; import PreviewFunction from "../shared/PreviewFunction";-import { sortBy } from "lodash"; // Set higher to make the fuzzaldrin filter more specific const FUZZALDRIN_FILTER_THRESHOLD = 15000;@@ -246,19 +245,20 @@ renderFunctions(functions) { const { filter } = this.state; let classes = [...new Set(functions.map(({ klass }) => klass))];- let namedFunctions = functions.filter(+ const namedFunctions = functions.filter( ({ name, klass }) => filterOutlineItem(name, filter) && !klass && !classes.includes(name) );- let classFunctions = functions.filter(+ const classFunctions = functions.filter( ({ name, klass }) => filterOutlineItem(name, filter) && !!klass ); if (this.props.alphabetizeOutline) {- namedFunctions = sortBy(namedFunctions, "name");+ const sortByName = (a, b) => (a.name < b.name ? -1 : 1);+ namedFunctions.sort(sortByName); classes = classes.sort();- classFunctions = sortBy(classFunctions, "name");+ classFunctions.sort(sortByName); } return (
Analysis of the code diff: 1. Vulnerability Existed: no Dependency Removal [File] [Lines 23] Old Code: import { sortBy } from "lodash"; Fixed Code: (removed) The change removes an unused lodash import, which is a good practice for reducing bundle size but doesn't represent a security fix. 2. Vulnerability Existed: no Code Improvement [File] [Lines 246-258] Old Code: namedFunctions = sortBy(namedFunctions, "name"); classes = classes.sort(); classFunctions = sortBy(classFunctions, "name"); Fixed Code: const sortByName = (a, b) => (a.name < b.name ? -1 : 1); namedFunctions.sort(sortByName); classes = classes.sort(); classFunctions.sort(sortByName); The change replaces lodash's sortBy with native Array.sort() implementation. This is a performance/optimization change rather than a security fix. The functionality remains the same. No security vulnerabilities were identified in this diff. The changes appear to be focused on code optimization and dependency reduction 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.