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/ash/src/extensions/ext/debug_report.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/ash/src/extensions/ext/debug_report.rs@@ -1,29 +1,23 @@ use crate::prelude::*; use crate::vk; use crate::RawPtr;-use crate::{EntryCustom, Instance};+use crate::{Entry, Instance}; use std::ffi::CStr; use std::mem; #[derive(Clone)] pub struct DebugReport { handle: vk::Instance,- debug_report_fn: vk::ExtDebugReportFn,+ fp: vk::ExtDebugReportFn, } impl DebugReport {- pub fn new<L>(entry: &EntryCustom<L>, instance: &Instance) -> Self {- let debug_report_fn = vk::ExtDebugReportFn::load(|name| unsafe {- mem::transmute(entry.get_instance_proc_addr(instance.handle(), name.as_ptr()))+ pub fn new(entry: &Entry, instance: &Instance) -> Self {+ let handle = instance.handle();+ let fp = vk::ExtDebugReportFn::load(|name| unsafe {+ mem::transmute(entry.get_instance_proc_addr(handle, name.as_ptr())) });- Self {- handle: instance.handle(),- debug_report_fn,- }- }-- pub fn name() -> &'static CStr {- vk::ExtDebugReportFn::name()+ Self { handle, fp } } #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDebugReportCallbackEXT.html>"]@@ -32,7 +26,7 @@ debug: vk::DebugReportCallbackEXT, allocation_callbacks: Option<&vk::AllocationCallbacks>, ) {- self.debug_report_fn.destroy_debug_report_callback_ext(+ self.fp.destroy_debug_report_callback_ext( self.handle, debug, allocation_callbacks.as_raw_ptr(),@@ -46,7 +40,7 @@ allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult<vk::DebugReportCallbackEXT> { let mut debug_cb = mem::zeroed();- self.debug_report_fn+ self.fp .create_debug_report_callback_ext( self.handle, create_info,@@ -56,8 +50,12 @@ .result_with_success(debug_cb) }+ pub fn name() -> &'static CStr {+ vk::ExtDebugReportFn::name()+ }+ pub fn fp(&self) -> &vk::ExtDebugReportFn {- &self.debug_report_fn+ &self.fp } pub fn instance(&self) -> vk::Instance {
Analyzing the provided code diff, here's the security assessment: 1. Vulnerability Existed: no No specific vulnerability found [File] third_party/rust/ash/src/extensions/ext/debug_report.rs [Lines] Various [Old Code] Uses EntryCustom<L> and debug_report_fn naming [Fixed Code] Uses Entry and fp naming The changes appear to be primarily refactoring and code organization improvements rather than security fixes. The main changes are: 1. Changed from EntryCustom<L> to Entry (simplifying the interface) 2. Renamed debug_report_fn to fp (field pointer) for consistency 3. Reordered some functions (name() moved down) 4. Simplified the new() constructor No actual security vulnerabilities appear to be addressed in this diff. The changes seem focused on code cleanup and interface simplification rather than patching security issues. Note: While there are unsafe blocks (particularly around mem::transmute), these appear to be necessary for Vulkan FFI interactions and haven't been modified in a way that would indicate a security fix.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/css/css-cascade/all-prop-revert-color.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-cascade/all-prop-revert-color.html@@ -5,7 +5,6 @@ <title>CSS Cascade: "color" property preceded by "all: revert"</title> <link rel="help" href="https://www.w3.org/TR/css-cascade-4/#all-shorthand"> <link rel="match" href="reference/ref-green-text.html">- <meta name="flags" content=""> <meta name="assert" content="Own 'color', preceded by 'all: revert', overrides inherited 'color'."> <style> .outer {
Based on the provided diff, I'll analyze it for security vulnerabilities: Vulnerability Existed: no [No specific vulnerability found] [testing/web-platform/tests/css/css-cascade/all-prop-revert-color.html] [Lines 5] [Old Code: <meta name="flags" content="">] [Fixed Code: (line removed)] Additional Details: This appears to be a simple test file modification where an empty meta tag for "flags" was removed. There's no indication of any security vulnerability being fixed here - it's likely just a cleanup of unnecessary test metadata. The change doesn't affect any security-related functionality or introduce/remove any security-relevant code. The modification is purely related to test configuration and doesn't impact the actual CSS cascade behavior being tested.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/semantics/forms/constraints/support/validator.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/semantics/forms/constraints/support/validator.js@@ -317,12 +317,6 @@ else assert_false(result, "The reportValidity method of the element's form owner should return false."); }, data.name + " (in a form)");- },-- test_support_type: function(ctl, typ, testName) {- test(function () {- assert_equals(ctl.type, typ, "The " + typ + " type should be supported.");- }, testName); }, set_conditions: function(ctl, obj) {@@ -461,14 +455,6 @@ } prefix = "[" + testee[i].tag.toUpperCase() + " in " + testee[i].types[typ].toUpperCase() + " status] ";- if (ele.type != testee[i].types[typ]) {- this.test_support_type(- ele,- testee[i].types[typ],- prefix + "The " + testee[i].types[typ] + " type must be supported."- );- continue;- } for (var j = 0; j < testee[i].testData.length; j++) { testee[i].testData[j].name = testee[i].testData[j].name.replace(/\[.*\]\s/g, prefix);
Based on the provided code diff, here's the analysis: 1. Vulnerability Existed: no Code Removal - test_support_type function [File] [Lines 319-324 and 456-462] [Old Code] test_support_type: function(ctl, typ, testName) { test(function () { assert_equals(ctl.type, typ, "The " + typ + " type should be supported."); }, testName); }, and if (ele.type != testee[i].types[typ]) { this.test_support_type( ele, testee[i].types[typ], prefix + "The " + testee[i].types[typ] + " type must be supported." ); continue; } [Fixed Code] (Removed entirely) Additional Details: This appears to be a test code cleanup rather than a security fix. The removed code was a test helper function and its usage that checked if form control types were properly supported. There's no indication of a security vulnerability being fixed here. 2. Vulnerability Existed: no Test Code Simplification [File] [Lines 456-462] [Old Code] if (ele.type != testee[i].types[typ]) { this.test_support_type( ele, testee[i].types[typ], prefix + "The " + testee[i].types[typ] + " type must be supported." ); continue; } [Fixed Code] (Removed entirely) Additional Details: This is part of the same test code cleanup as above. The removal simplifies the test flow by eliminating a conditional check and continue statement, but doesn't appear to address any security issues.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/servo/ports/geckolib/glue.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/servo/ports/geckolib/glue.rs@@ -2884,6 +2884,60 @@ } #[no_mangle]+pub extern "C" fn Servo_PageRule_GetSelectorText(+ rule: &RawServoPageRule,+ result: &mut nsACString,+) {+ read_locked_arc(rule, |rule: &PageRule| {+ rule.selectors.to_css(&mut CssWriter::new(result)).unwrap();+ })+}++#[no_mangle]+pub extern "C" fn Servo_PageRule_SetSelectorText(+ sheet: &RawServoStyleSheetContents,+ rule: &RawServoPageRule,+ text: &nsACString,+) -> bool {++ let value_str = unsafe { text.as_str_unchecked() };++ write_locked_arc(rule, |rule: &mut PageRule| {+ use style::stylesheets::PageSelectors;++ let mut parser_input = ParserInput::new(&value_str);+ let mut parser = Parser::new(&mut parser_input);++ // Ensure that a blank input results in empty page selectors+ if parser.is_exhausted() {+ rule.selectors = PageSelectors::default();+ return true;+ }++ let contents = StylesheetContents::as_arc(&sheet);+ let url_data = contents.url_data.read();+ let context = ParserContext::new(+ Origin::Author,+ &url_data,+ None,+ ParsingMode::DEFAULT,+ QuirksMode::NoQuirks,+ None,+ None,+ );++ match parser.parse_entirely(|i| PageSelectors::parse(&context, i)) {+ Ok(selectors) => {+ rule.selectors = selectors;+ true+ },+ Err(_) => false,+ }+ })+}+++#[no_mangle] pub extern "C" fn Servo_SupportsRule_GetConditionText( rule: &RawServoSupportsRule, result: &mut nsACString,@@ -3765,9 +3819,9 @@ Origin::User => CascadeLevel::UserNormal, Origin::Author => CascadeLevel::same_tree_author_normal(), };- for &(ref rule, _layer_id) in data.pages.iter() {+ for &(ref rule, _layer_id) in data.pages.global.iter() { extra_declarations.push(ApplicableDeclarationBlock::from_declarations(- rule.read_with(level.guard(&guards)).block.clone(),+ rule.0.read_with(level.guard(&guards)).block.clone(), level, LayerOrder::root(), ));
I'll analyze the provided code diff for security vulnerabilities following the specified format. 1. Vulnerability Existed: not sure [Potential Unsafe String Handling] [servo/ports/geckolib/glue.rs] [Lines 2884-2924] [Old Code: (New function added, no old code)] [Fixed Code: ``` let value_str = unsafe { text.as_str_unchecked() }; ... let mut parser_input = ParserInput::new(&value_str); let mut parser = Parser::new(&mut parser_input); ```] Additional Details: The new function Servo_PageRule_SetSelectorText uses unsafe string conversion which could potentially lead to security issues if the input is not properly validated. However, the context suggests this might be a necessary unsafe block for FFI. 2. Vulnerability Existed: not sure [Potential Memory Safety Issue] [servo/ports/geckolib/glue.rs] [Lines 3765-3777] [Old Code: ``` for &(ref rule, _layer_id) in data.pages.iter() { extra_declarations.push(ApplicableDeclarationBlock::from_declarations( rule.read_with(level.guard(&guards)).block.clone(), ```] [Fixed Code: ``` for &(ref rule, _layer_id) in data.pages.global.iter() { extra_declarations.push(ApplicableDeclarationBlock::from_declarations( rule.0.read_with(level.guard(&guards)).block.clone(), ```] Additional Details: The change in accessing rule through rule.0 suggests there might have been a memory safety issue in how rules were being accessed. The modification adds an additional layer of indirection which could be addressing a potential security concern. Note: Both cases are marked as "not sure" because while there are changes that could relate to security, the diff doesn't provide enough context to confirm actual vulnerabilities. The first case involves unsafe operations and the second involves changes to memory access patterns, both of which could have security implications.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/third_party/rust/async-trait/src/expand.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/async-trait/src/expand.rs@@ -125,6 +125,8 @@ parse_quote! { #[allow( clippy::let_unit_value,+ clippy::no_effect_underscore_binding,+ clippy::shadow_same, clippy::type_complexity, clippy::type_repetition_in_bounds, clippy::used_underscore_binding
Based on the provided diff, I'll analyze it for security vulnerabilities: Vulnerability Existed: no No specific vulnerability [File] [Lines 125-131] [Old Code] #[allow( clippy::let_unit_value, clippy::type_complexity, clippy::type_repetition_in_bounds, clippy::used_underscore_binding [Fixed Code] #[allow( clippy::let_unit_value, clippy::no_effect_underscore_binding, clippy::shadow_same, clippy::type_complexity, clippy::type_repetition_in_bounds, clippy::used_underscore_binding Additional Details: The changes only involve adding more Clippy lint allowances (`no_effect_underscore_binding` and `shadow_same`) to the existing allow attributes. These are code style/quality related changes and don't appear to address any security vulnerabilities. The modifications are purely related to static analysis warnings rather than security fixes.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/third_party/rust/quote/src/runtime.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/quote/src/runtime.rs@@ -1,5 +1,6 @@ use crate::{IdentFragment, ToTokens, TokenStreamExt}; use std::fmt;+use std::iter; use std::ops::BitOr; pub use proc_macro2::*;@@ -178,15 +179,29 @@ pub fn parse(tokens: &mut TokenStream, s: &str) { let s: TokenStream = s.parse().expect("invalid token stream");- tokens.extend(s);+ tokens.extend(iter::once(s)); } pub fn parse_spanned(tokens: &mut TokenStream, span: Span, s: &str) { let s: TokenStream = s.parse().expect("invalid token stream");- tokens.extend(s.into_iter().map(|mut t| {- t.set_span(span);- t- }));+ tokens.extend(s.into_iter().map(|t| respan_token_tree(t, span)));+}++// Token tree with every span replaced by the given one.+fn respan_token_tree(mut token: TokenTree, span: Span) -> TokenTree {+ match &mut token {+ TokenTree::Group(g) => {+ let stream = g+ .stream()+ .into_iter()+ .map(|token| respan_token_tree(token, span))+ .collect();+ *g = Group::new(g.delimiter(), stream);+ g.set_span(span);+ }+ other => other.set_span(span),+ }+ token } pub fn push_ident(tokens: &mut TokenStream, s: &str) {@@ -211,6 +226,70 @@ } else { tokens.append(Ident::new(s, span)); }+}++pub fn push_lifetime(tokens: &mut TokenStream, lifetime: &str) {+ struct Lifetime<'a> {+ name: &'a str,+ state: u8,+ }++ impl<'a> Iterator for Lifetime<'a> {+ type Item = TokenTree;++ fn next(&mut self) -> Option<Self::Item> {+ match self.state {+ 0 => {+ self.state = 1;+ Some(TokenTree::Punct(Punct::new('\'', Spacing::Joint)))+ }+ 1 => {+ self.state = 2;+ Some(TokenTree::Ident(Ident::new(self.name, Span::call_site())))+ }+ _ => None,+ }+ }+ }++ tokens.extend(Lifetime {+ name: &lifetime[1..],+ state: 0,+ });+}++pub fn push_lifetime_spanned(tokens: &mut TokenStream, span: Span, lifetime: &str) {+ struct Lifetime<'a> {+ name: &'a str,+ span: Span,+ state: u8,+ }++ impl<'a> Iterator for Lifetime<'a> {+ type Item = TokenTree;++ fn next(&mut self) -> Option<Self::Item> {+ match self.state {+ 0 => {+ self.state = 1;+ let mut apostrophe = Punct::new('\'', Spacing::Joint);+ apostrophe.set_span(self.span);+ Some(TokenTree::Punct(apostrophe))+ }+ 1 => {+ self.state = 2;+ Some(TokenTree::Ident(Ident::new(self.name, self.span)))+ }+ _ => None,+ }+ }+ }++ tokens.extend(Lifetime {+ name: &lifetime[1..],+ span,+ state: 0,+ }); } macro_rules! push_punct {@@ -303,6 +382,14 @@ push_punct!(push_sub push_sub_spanned '-'); push_punct!(push_sub_eq push_sub_eq_spanned '-' '=');+pub fn push_underscore(tokens: &mut TokenStream) {+ push_underscore_spanned(tokens, Span::call_site());+}++pub fn push_underscore_spanned(tokens: &mut TokenStream, span: Span) {+ tokens.append(Ident::new("_", span));+}+ // Helper method for constructing identifiers from the `format_ident!` macro, // handling `r#` prefixes. //
After analyzing the provided code diff, here are the security-related findings: 1. Vulnerability Existed: not sure [Potential Token Stream Injection] [third_party/rust/quote/src/runtime.rs] [Lines 178-179] [Old Code] tokens.extend(s); [Fixed Code] tokens.extend(iter::once(s)); [Details: The change wraps the token stream in iter::once(), which may prevent potential token stream injection attacks by ensuring only one token stream is processed] 2. Vulnerability Existed: not sure [Potential Span Handling Issue] [third_party/rust/quote/src/runtime.rs] [Lines 181-194] [Old Code] tokens.extend(s.into_iter().map(|mut t| { t.set_span(span); t })); [Fixed Code] tokens.extend(s.into_iter().map(|t| respan_token_tree(t, span))); [Details: The new implementation uses a dedicated respan_token_tree function that properly handles span replacement for nested token groups, which might fix potential span-related security issues] 3. Vulnerability Existed: not sure [Potential Lifetime Parsing Issue] [third_party/rust/quote/src/runtime.rs] [Lines 228-260, 262-294] [Old Code] [Not present in old version] [Fixed Code] [Added push_lifetime and push_lifetime_spanned functions with proper lifetime parsing] [Details: The addition of explicit lifetime parsing functions might address potential parsing vulnerabilities in lifetime handling] Note: While these changes appear to improve the robustness of token and span handling, it's not certain if they were specifically addressing known vulnerabilities or just improving general code quality. The changes do appear to make the code more secure by: 1. Being more explicit about token stream handling 2. Properly handling spans in nested token trees 3. Adding proper lifetime parsing 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/path-objects/2d.path.roundrect.end.1.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.end.1.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50);@@ -27,7 +27,7 @@ ctx.roundRect(200, 100, 400, 1000, [0]); ctx.lineTo(-2000, -1000); 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(); });
Here's the analysis of the provided code diff following the required format: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.roundrect.end.1.html] [Lines 17-27] [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"); Additional Details: The changes appear to be purely cosmetic/refactoring, renaming the variable `offscreenCanvas` to `canvas` for consistency or clarity. There are no security-related changes in this diff, no vulnerability fixes, and no changes to the actual functionality or security properties of the code. The test behavior remains exactly the same, only the variable name was 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/third_party/rust/typenum/.cargo-checksum.json+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/typenum/.cargo-checksum.json@@ -1 +1 @@-{"files":{"CHANGELOG.md":"50081681a2da87c84291da9e49b661a3ee99d69e99ee7b7d99b04ddf86a26de1","Cargo.toml":"56b7e23ce1029fb13a0bf6fecce049fc1ed54f08aa0a3d532d5e17f7b08c1186","LICENSE":"db11fec9946737df39ca3898d9cd8c10ec6f6c3a884a6802b0ad0b81b4e8f23a","LICENSE-APACHE":"516b24e051bf5630880ebbd55c40a25ce9552ebaf8970a53e8976eb70e522406","LICENSE-MIT":"a825bd853ab71619a4923d7b4311221427848070ff44d990da39b0b274c1683f","README.md":"ab1dc7cd2ee48283b3a511463785da5dd3a93b387a26beb89185442eb66c7471","build/main.rs":"95d42640cb9ef15c7421869f53547a43e07d034f627148aa57b38ee31d58d309","build/op.rs":"f9fbdb6c907ebf0cf22071271ca3b5acac0db41db962c4211bf57eb21d12ee5c","build/tests.rs":"4e74a95412d9a7ad1dfba36cced27e3f723ab474a4b695d97c6adc30c5850d44","clippy.toml":"493258e6a4be8bbb66ecbc4236d8f4964f867d4bcddd5f13897aa655a206af7b","rustfmt.toml":"4953048a8d16fba8736c5cdb65ce418e462317a79793f16f79023f571f3fd5ce","src/array.rs":"9dc02ae1990bf341cf65322ec04952db411e7a170029dbe01df566edee29c76b","src/bit.rs":"4da5d37ca3495c71cd6ff407745e8c8959a8e8f775140e9eebfc4bf662d174b0","src/int.rs":"1bdf66bfa14a5735f266c8c6638052cce05baee394d387b23a827a19d8cfc0e9","src/lib.rs":"420b26fc31bd3e25a88fe2b76e003b5f643fb1ce542e716d15952262516ee201","src/marker_traits.rs":"5a58d16edc16853b4b793a6b46068d926911273aa9dc57fd9dc64df77986b7dd","src/operator_aliases.rs":"c190f5bcf9f674c2f2bb56886a45ff548e5acb9320b406cbc45204ef3bac46d5","src/private.rs":"e2ab0e29eacdedfe4182aa0567ac8e9cb53680dc04e1d75e197321b4e1446111","src/type_operators.rs":"a9ea16c765254e40f958f512b7a6899e6441e9105f3c8f9590170a984d966cf6","src/uint.rs":"439779dbb9bba42bbbf27982d4a0c7becd8fb0835e4a578c7f6217101edc76a3","tests/test.rs":"92139fa86ffcacc1dff60e6fc36420c850d70dc814bd21dc18e87857553c6cea"},"package":"b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec"}+{"files":{"CHANGELOG.md":"a9a7d1cecc4afa44451aa8c368ea51ca099c8076b22d1809c56eb8459dca78ac","Cargo.toml":"6de0aca94f7ce75d315ea069537f0eee37c62cb086fe5ec23a0e93653f171c4a","LICENSE":"db11fec9946737df39ca3898d9cd8c10ec6f6c3a884a6802b0ad0b81b4e8f23a","LICENSE-APACHE":"516b24e051bf5630880ebbd55c40a25ce9552ebaf8970a53e8976eb70e522406","LICENSE-MIT":"a825bd853ab71619a4923d7b4311221427848070ff44d990da39b0b274c1683f","README.md":"ab1dc7cd2ee48283b3a511463785da5dd3a93b387a26beb89185442eb66c7471","build/main.rs":"b4dd86261a70df757efa53f06ce7543a4dc9c51178b9b023c92069fddee97a29","build/op.rs":"f9fbdb6c907ebf0cf22071271ca3b5acac0db41db962c4211bf57eb21d12ee5c","build/tests.rs":"4e74a95412d9a7ad1dfba36cced27e3f723ab474a4b695d97c6adc30c5850d44","clippy.toml":"493258e6a4be8bbb66ecbc4236d8f4964f867d4bcddd5f13897aa655a206af7b","rustfmt.toml":"4953048a8d16fba8736c5cdb65ce418e462317a79793f16f79023f571f3fd5ce","src/array.rs":"d86f463e1f24a49073afc3ad875ea9b69ccfa85dad4c2738e022031c006f1087","src/bit.rs":"a658ddf3b93db9eeb8fb3eb659f67356de40d1bccf544672d650ae7be1d8e215","src/int.rs":"09dfbe75a2b2e31c7e567150002f56c9a22daa799fecbcc934a0f83644c15f8d","src/lib.rs":"31eb904ac8ebcb2730cfd32f093c39b2fe30d095c298d8ee7e4295556f548386","src/marker_traits.rs":"5a58d16edc16853b4b793a6b46068d926911273aa9dc57fd9dc64df77986b7dd","src/operator_aliases.rs":"c190f5bcf9f674c2f2bb56886a45ff548e5acb9320b406cbc45204ef3bac46d5","src/private.rs":"e2ab0e29eacdedfe4182aa0567ac8e9cb53680dc04e1d75e197321b4e1446111","src/type_operators.rs":"a9ea16c765254e40f958f512b7a6899e6441e9105f3c8f9590170a984d966cf6","src/uint.rs":"bc816d78c8e014e64e7e397a2d3776d7a69e6ef7b99d716b76dac7bcaf66d370","tests/test.rs":"92139fa86ffcacc1dff60e6fc36420c850d70dc814bd21dc18e87857553c6cea"},"package":"dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"}=========testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.canvas.source-in.html========--- /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.canvas.source-in.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.canvas.source-in.html@@ -17,11 +17,11 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d');-var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height);+var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height); var ctx2 = offscreenCanvas2.getContext('2d'); var promise = new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest();@@ -39,7 +39,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'source-in'; ctx.drawImage(offscreenCanvas2, 0, 0);- _assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5);+ _assertPixelApprox(canvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); }, t_fail); }).then(t_pass, t_fail);
After analyzing the provided code diff, here are the findings: 1. For the first file (typenum/.cargo-checksum.json): Vulnerability Existed: no No specific vulnerability found in checksum file update [Old Code] Various file hashes and package hash [Fixed Code] Updated file hashes and package hash 2. For the second file (2d.composite.canvas.source-in.html): Vulnerability Existed: no No specific vulnerability found in canvas test file [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); Additional Notes: - The changes appear to be routine updates and variable renaming rather than security fixes - The cargo-checksum.json changes are typical dependency updates - The canvas test changes are variable naming improvements with no security implications - No CVE or known vulnerability patterns were identified in these changes
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/security/sandbox/win/src/sandboxbroker/sandboxBroker.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/security/sandbox/win/src/sandboxbroker/sandboxBroker.h@@ -15,6 +15,8 @@ #include "nsCOMPtr.h" #include "nsXULAppAPI.h" #include "nsISupportsImpl.h"++#include "mozilla/ipc/UtilityProcessSandboxing.h" namespace sandbox { class BrokerServices;@@ -45,6 +47,8 @@ int32_t aSandboxLevel, const nsCOMPtr<nsIFile>& aProfileDir) = 0; virtual bool SetSecurityLevelForRDDProcess() = 0; virtual bool SetSecurityLevelForSocketProcess() = 0;+ virtual bool SetSecurityLevelForUtilityProcess(+ mozilla::ipc::SandboxingKind aSandbox) = 0; enum SandboxLevel { LockDown, Restricted }; virtual bool SetSecurityLevelForGMPlugin(SandboxLevel aLevel,@@ -96,6 +100,8 @@ bool SetSecurityLevelForSocketProcess() override; bool SetSecurityLevelForGMPlugin(SandboxLevel aLevel, bool aIsRemoteLaunch = false) override;+ bool SetSecurityLevelForUtilityProcess(+ mozilla::ipc::SandboxingKind aSandbox) override; // File system permissions bool AllowReadFile(wchar_t const* file) override;
Analyzing the provided code diff, I can identify one clear security-related change: 1. Vulnerability Existed: yes Missing Sandboxing for Utility Process [security/sandbox/win/src/sandboxbroker/sandboxBroker.h] [Lines 47, 100] Old Code: (No function declaration for utility process sandboxing) Fixed Code: ```cpp virtual bool SetSecurityLevelForUtilityProcess( mozilla::ipc::SandboxingKind aSandbox) = 0; ``` ```cpp bool SetSecurityLevelForUtilityProcess( mozilla::ipc::SandboxingKind aSandbox) override; ``` Additional details: - The diff shows the addition of sandboxing support for utility processes, which was previously missing - This appears to be a security enhancement rather than a fix for a specific vulnerability - The change adds proper sandboxing capabilities for utility processes, which helps prevent potential privilege escalation or sandbox escape vulnerabilities - The implementation uses a parameterized sandboxing kind (SandboxingKind) to allow for different security levels No other clear vulnerabilities or security fixes are apparent in this diff. The other changes are primarily header inclusions and interface additions without security implications.
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-offsets-relative-left-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-offsets-relative-left-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-offsets-relative-left-1-ref.html">- <meta name="flags" content=""> <style type="text/css"> body { margin: 0 100px; width: 100px } div[style] { background: blue; position: relative; height: 3px; }
Analysis of the provided code diff: 1. Vulnerability Existed: no No security vulnerability found File: testing/web-platform/tests/css/css-values/calc-offsets-relative-left-1.html Lines: 5 Old Code: <meta name="flags" content=""> Fixed Code: (line removed) Additional details: - The diff shows only the removal of an empty meta tag with a "flags" attribute - This appears to be test-related metadata rather than security-relevant code - No known vulnerabilities are associated with this change - The modification seems to be cleanup of test configuration rather than a security fix No security vulnerabilities were identified in this diff. The change appears to be a minor cleanup of test markup rather than addressing any security issues.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/toolkit/components/glean/bindings/private/Counter.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/toolkit/components/glean/bindings/private/Counter.cpp@@ -19,14 +19,16 @@ void CounterMetric::Add(int32_t aAmount) const { auto scalarId = ScalarIdForMetric(mId);- if (scalarId) {- Telemetry::ScalarAdd(scalarId.extract(), aAmount);- } else if (IsSubmetricId(mId)) {- auto lock = GetLabeledMirrorLock();- auto tuple = lock.ref()->MaybeGet(mId);- if (tuple && aAmount > 0) {- Telemetry::ScalarSet(Get<0>(tuple.ref()), Get<1>(tuple.ref()),- (uint32_t)aAmount);+ if (aAmount >= 0) {+ if (scalarId) {+ Telemetry::ScalarAdd(scalarId.extract(), aAmount);+ } else if (IsSubmetricId(mId)) {+ auto lock = GetLabeledMirrorLock();+ auto tuple = lock.ref()->MaybeGet(mId);+ if (tuple && aAmount > 0) {+ Telemetry::ScalarAdd(Get<0>(tuple.ref()), Get<1>(tuple.ref()),+ (uint32_t)aAmount);+ } } } fog_counter_add(mId, aAmount);
Here's the analysis of the provided code diff: 1. Vulnerability Existed: yes Integer Overflow/Underflow Vulnerability [File] [Lines 19-31] [Old Code] ```cpp void CounterMetric::Add(int32_t aAmount) const { auto scalarId = ScalarIdForMetric(mId); if (scalarId) { Telemetry::ScalarAdd(scalarId.extract(), aAmount); } else if (IsSubmetricId(mId)) { auto lock = GetLabeledMirrorLock(); auto tuple = lock.ref()->MaybeGet(mId); if (tuple && aAmount > 0) { Telemetry::ScalarSet(Get<0>(tuple.ref()), Get<1>(tuple.ref()), (uint32_t)aAmount); } } fog_counter_add(mId, aAmount); } ``` [Fixed Code] ```cpp void CounterMetric::Add(int32_t aAmount) const { auto scalarId = ScalarIdForMetric(mId); if (aAmount >= 0) { if (scalarId) { Telemetry::ScalarAdd(scalarId.extract(), aAmount); } else if (IsSubmetricId(mId)) { auto lock = GetLabeledMirrorLock(); auto tuple = lock.ref()->MaybeGet(mId); if (tuple && aAmount > 0) { Telemetry::ScalarAdd(Get<0>(tuple.ref()), Get<1>(tuple.ref()), (uint32_t)aAmount); } } } fog_counter_add(mId, aAmount); } ``` Key changes: 1. Added a check for `aAmount >= 0` to prevent negative values from being processed 2. Changed `ScalarSet` to `ScalarAdd` for the submetric case to maintain consistency 3. The changes prevent potential integer underflow issues when negative values are passed to counter operations 2. Vulnerability Existed: not sure Potential Data Type Conversion Issue [File] [Lines 27-28] [Old Code] ```cpp Telemetry::ScalarSet(Get<0>(tuple.ref()), Get<1>(tuple.ref()), (uint32_t)aAmount); ``` [Fixed Code] ```cpp Telemetry::ScalarAdd(Get<0>(tuple.ref()), Get<1>(tuple.ref()), (uint32_t)aAmount); ``` The change from `ScalarSet` to `ScalarAdd` might address some consistency or data integrity issue, but without more context about the Telemetry API's behavior, it's unclear if this was a security fix or just a functional improvement.
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.4.radii.1.dompoint.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.4.radii.1.dompoint.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50);@@ -27,15 +27,15 @@ ctx.fill(); // top-left corner-_assertPixel(offscreenCanvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255");-_assertPixel(offscreenCanvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255");-_assertPixel(offscreenCanvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255");-_assertPixel(offscreenCanvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255");+_assertPixel(canvas, 20,1, 255,0,0,255, "20,1", "255,0,0,255");+_assertPixel(canvas, 41,1, 0,255,0,255, "41,1", "0,255,0,255");+_assertPixel(canvas, 1,10, 255,0,0,255, "1,10", "255,0,0,255");+_assertPixel(canvas, 1,21, 0,255,0,255, "1,21", "0,255,0,255"); // other corners-_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");-_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255");-_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255");+_assertPixel(canvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255");+_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255");+_assertPixel(canvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't see any security-related changes. The changes appear to be purely variable renaming (from `offscreenCanvas` to `canvas`) and corresponding updates to the assertions. Here's the structured response: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.roundrect.4.radii.1.dompoint.html] [17-27] [Old variable name 'offscreenCanvas' used throughout] [New variable name 'canvas' used throughout] The changes are: 1. Variable renaming from `offscreenCanvas` to `canvas` 2. Corresponding updates to all `_assertPixel` calls to use the new variable name These changes don't appear to address any security vulnerabilities but rather improve code consistency or readability.
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/mobile/android/geckoview/src/androidTest/assets/web_extensions/test-support/test-api.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/mobile/android/geckoview/src/androidTest/assets/web_extensions/test-support/test-api.js@@ -167,6 +167,13 @@ return gfxInfo.usingGPUProcess; },+ async killGpuProcess() {+ const gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(+ Ci.nsIGfxInfo+ );+ return gfxInfo.killGPUProcessForTests();+ },+ async crashGpuProcess() { const gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService( Ci.nsIGfxInfo
Let me analyze the code diff for security fixes: Vulnerability Existed: not sure [Potential Unauthorized Process Termination] [mobile/android/geckoview/src/androidTest/assets/web_extensions/test-support/test-api.js] [Lines 167-173] [Old Code] (No equivalent functionality existed) [Fixed Code] async killGpuProcess() { const gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService( Ci.nsIGfxInfo ); return gfxInfo.killGPUProcessForTests(); } Additional Details: 1. The diff adds a new function `killGpuProcess()` that allows terminating the GPU process 2. This appears to be a test API function (as it's in test-support code) 3. The security implications would depend on whether this API is properly restricted to test environments only 4. If this API were exposed in production code, it could potentially allow unauthorized process termination (a denial of service risk) 5. Since this is in test code, the risk is likely mitigated, but proper access controls should still be verified Note: No specific vulnerability name is documented for this case, but the pattern resembles potential unauthorized process termination risks.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')"); let fonts = (self.fonts ? self.fonts : document.fonts);@@ -30,10 +30,10 @@ ctx.fillRect(0, 0, 100, 50); ctx.fillStyle = '#f00'; ctx.fillText('EEEE', -50, 37.5, 40);- _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2);- _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2);+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); }).then(t_pass, t_fail); });
Based on the provided code diff, here's the analysis following the required format: Vulnerability Existed: no [No specific vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html] [Lines 17-30] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); _assertPixelApprox(offscreenCanvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixelApprox(canvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); _assertPixelApprox(canvas, 95,5, 0,255,0,255, "95,5", "0,255,0,255", 2); _assertPixelApprox(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); Additional Details: The changes appear to be purely cosmetic/refactoring, changing the variable name from `offscreenCanvas` to `canvas`. There are no security-related changes in this diff. The functionality remains exactly the same, just with a different variable name. No security vulnerabilities were fixed in this change.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/dom/canvas/CanvasUtils.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/canvas/CanvasUtils.h@@ -51,9 +51,12 @@ // Check if the context is chrome or has the permission to drawWindow bool HasDrawWindowPrivilege(JSContext* aCx, JSObject* aObj);+// Check if the context has permission to use OffscreenCanvas.+bool IsOffscreenCanvasEnabled(JSContext* aCx, JSObject* aObj);+ // Check site-specific permission and display prompt if appropriate. bool IsImageExtractionAllowed(dom::Document* aDocument, JSContext* aCx,- nsIPrincipal& aPrincipal);+ Maybe<nsIPrincipal*> aPrincipal); // Make a double out of |v|, treating undefined values as 0.0 (for // the sake of sparse arrays). Return true iff coercion
Here's my analysis of the provided code diff: Vulnerability Existed: not sure [Potential Permission Bypass] [dom/canvas/CanvasUtils.h] [Lines 54-56] [Old Code] bool IsImageExtractionAllowed(dom::Document* aDocument, JSContext* aCx, nsIPrincipal& aPrincipal); [Fixed Code] bool IsImageExtractionAllowed(dom::Document* aDocument, JSContext* aCx, Maybe<nsIPrincipal*> aPrincipal); Additional Details: The change involves modifying the principal parameter from a direct reference to a Maybe-wrapped pointer. This could potentially relate to security as it changes how null principals are handled. The Maybe wrapper suggests the principal might be optional now, which could affect permission checks. However, without more context about how this function is used, I can't definitively say if this fixed a vulnerability or was just a general improvement. Note: There's also a new function `IsOffscreenCanvasEnabled` added, but this appears to be a new feature addition 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/editor/libeditor/HTMLEditUtils.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/editor/libeditor/HTMLEditUtils.cpp@@ -587,18 +587,22 @@ : !IsVisibleTextNode(*text); }- // if it's not a text node (handled above) and it's not a container,- // then we don't call it empty (it's an <hr>, or <br>, etc.).- // Also, if it's an anchor then don't treat it as empty - even though- // anchors are containers, named anchors are "empty" but we don't- // want to treat them as such. Also, don't call ListItems or table- // cells empty if caller desires. Form Widgets not empty. // XXX Why do we treat non-content node is not empty? // XXX Why do we treat non-text data node may be not empty?- if (!aNode.IsContent() || !IsContainerNode(*aNode.AsContent()) ||- IsNamedAnchor(&aNode) || IsFormWidget(&aNode) ||+ if (!aNode.IsContent() ||+ // If it's not a container such as an <hr> or <br>, etc, it should be+ // treated as not empty.+ !IsContainerNode(*aNode.AsContent()) ||+ // If it's a named anchor, we shouldn't treat it as empty because it+ // has special meaning even if invisible.+ IsNamedAnchor(&aNode) ||+ // Form widgets should be treated as not empty because they have special+ // meaning even if invisible.+ IsFormWidget(&aNode) ||+ // If the caller treats a list item element as visible, respect it. (aOptions.contains(EmptyCheckOption::TreatListItemAsVisible) && IsListItem(&aNode)) ||+ // If the caller treats a table cell element as visible, respect it. (aOptions.contains(EmptyCheckOption::TreatTableCellAsVisible) && IsTableCell(&aNode))) { return false;@@ -607,13 +611,12 @@ const bool isListItem = IsListItem(&aNode); const bool isTableCell = IsTableCell(&aNode);- // loop over children of node. if no children, or all children are either- // empty text nodes or non-editable, then node qualifies as empty bool seenBR = aSeenBR && *aSeenBR; for (nsIContent* childContent = aNode.GetFirstChild(); childContent; childContent = childContent->GetNextSibling()) { // Is the child editable and non-empty? if so, return false- if (!EditorUtils::IsEditableContent(*childContent, EditorType::HTML)) {+ if (!aOptions.contains(EmptyCheckOption::IgnoreEditableState) &&+ !EditorUtils::IsEditableContent(*childContent, EditorType::HTML)) { continue; }
I'll analyze the code diff for security fixes following the specified format. 1. First vulnerability analysis: Vulnerability Existed: not sure [Potential Logic Change in Empty Node Check] [editor/libeditor/HTMLEditUtils.cpp] [Lines 587-611] [Old Code: if (!aNode.IsContent() || !IsContainerNode(*aNode.AsContent()) || IsNamedAnchor(&aNode) || IsFormWidget(&aNode) || (aOptions.contains(EmptyCheckOption::TreatListItemAsVisible) && IsListItem(&aNode)) || (aOptions.contains(EmptyCheckOption::TreatTableCellAsVisible) && IsTableCell(&aNode))) { return false; }] [Fixed Code: if (!aNode.IsContent() || !IsContainerNode(*aNode.AsContent()) || IsNamedAnchor(&aNode) || IsFormWidget(&aNode) || (aOptions.contains(EmptyCheckOption::TreatListItemAsVisible) && IsListItem(&aNode)) || (aOptions.contains(EmptyCheckOption::TreatTableCellAsVisible) && IsTableCell(&aNode))) { return false; }] 2. Second vulnerability analysis: Vulnerability Existed: not sure [Editable Content Check Modification] [editor/libeditor/HTMLEditUtils.cpp] [Lines 611-618] [Old Code: if (!EditorUtils::IsEditableContent(*childContent, EditorType::HTML)) { continue; }] [Fixed Code: if (!aOptions.contains(EmptyCheckOption::IgnoreEditableState) && !EditorUtils::IsEditableContent(*childContent, EditorType::HTML)) { continue; }] The changes appear to be: 1. A refactoring of the empty node check logic with added comments but no functional change 2. An addition of a new option to ignore editable state when checking for empty nodes While these changes don't appear to fix any specific known vulnerabilities, they could potentially affect security-related behaviors: - The empty node check changes might impact how the editor handles potentially malicious content - The editable state check modification adds new flexibility that could be security-relevant However, without more context about the specific security issues being addressed, I can't definitively identify any 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/third_party/dav1d/src/ppc/looprestoration_init_tmpl.c+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/dav1d/src/ppc/looprestoration_init_tmpl.c@@ -26,7 +26,7 @@ */ #include "common/intops.h"-#include "src/ppc/types.h"+#include "src/ppc/dav1d_types.h" #include "src/cpu.h" #include "src/looprestoration.h"
Based on the provided code diff, here's the analysis: Vulnerability Existed: no [Header File Renaming] [third_party/dav1d/src/ppc/looprestoration_init_tmpl.c] [Line 26] [Old Code] #include "src/ppc/types.h" [Fixed Code] #include "src/ppc/dav1d_types.h" Additional Details: - The change appears to be a simple header file renaming/refactoring - No security vulnerability is evident in this change - The modification suggests better code organization by using a more specific header file name - No functional changes or security fixes are apparent in this diff The change seems to be part of code maintenance rather than addressing any security vulnerability. The header file was renamed to be more specific ("dav1d_types.h" instead of generic "types.h"), which is a good practice for avoiding naming conflicts but doesn't indicate 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/compositing/2d.composite.uncovered.pattern.source-out.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.uncovered.pattern.source-out.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, 0.5)';@@ -37,7 +37,7 @@ createImageBitmap(response).then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.fillRect(0, 50, 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_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 variable renaming and consistency updates rather than security-related fixes. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.uncovered.pattern.source-out.html [Lines 17-18, 37] [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 are purely: 1. Renaming the variable from `offscreenCanvas` to `canvas` 2. Updating the reference in `_assertPixelApprox` call to use the new variable name These changes don't appear to address any security issues but rather improve code consistency or readability.
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/base/content/test/static/browser_parsable_css.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/base/content/test/static/browser_parsable_css.js@@ -63,6 +63,11 @@ { sourceName: /web\/viewer\.css$/i, errorMessage: /Unknown property ‘text-size-adjust’\. {2}Declaration dropped\./i,+ isFromDevTools: false,+ },+ {+ sourceName: /overlay\.css$/i,+ errorMessage: /Unknown pseudo-class.*moz-native-anonymous/i, isFromDevTools: false, }, ];
Based on the provided diff, here's the analysis following the required format: Vulnerability Existed: no [No specific vulnerability] [browser/base/content/test/static/browser_parsable_css.js] [Lines 63-68] [Old Code: { sourceName: /web\/viewer\.css$/i, errorMessage: /Unknown property ‘text-size-adjust’\. {2}Declaration dropped\./i, isFromDevTools: false, }, ] [Fixed Code: { sourceName: /web\/viewer\.css$/i, errorMessage: /Unknown property ‘text-size-adjust’\. {2}Declaration dropped\./i, isFromDevTools: false, }, { sourceName: /overlay\.css$/i, errorMessage: /Unknown pseudo-class.*moz-native-anonymous/i, isFromDevTools: false, }, ] Additional Notes: 1. The change appears to be adding a new CSS parsing exception for overlay.css files that contain the 'moz-native-anonymous' pseudo-class. 2. This seems to be a test case update rather than a security fix. 3. No actual vulnerabilities are being addressed here - it's just expanding the list of known CSS parsing quirks that shouldn't fail tests.
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/accessible/basetypes/HyperTextAccessibleBase.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/accessible/basetypes/HyperTextAccessibleBase.cpp@@ -214,6 +214,54 @@ // hypertext accessible. Return the start or the end depending on whether this // is a start ofset or an end offset, thus clipping to the relevant endpoint. return {false, aIsEndOffset ? static_cast<int32_t>(CharacterCount()) : 0};+}++void HyperTextAccessibleBase::TextBeforeOffset(+ int32_t aOffset, AccessibleTextBoundary aBoundaryType,+ int32_t* aStartOffset, int32_t* aEndOffset, nsAString& aText) {+ MOZ_ASSERT(StaticPrefs::accessibility_cache_enabled_AtStartup());+ *aStartOffset = *aEndOffset = 0;+ aText.Truncate();++ uint32_t adjustedOffset = ConvertMagicOffset(aOffset);+ if (adjustedOffset == std::numeric_limits<uint32_t>::max()) {+ NS_ERROR("Wrong given offset!");+ return;+ }++ switch (aBoundaryType) {+ case nsIAccessibleText::BOUNDARY_CHAR:+ if (adjustedOffset > 0) {+ CharAt(static_cast<int32_t>(adjustedOffset) - 1, aText, aStartOffset,+ aEndOffset);+ }+ break;+ case nsIAccessibleText::BOUNDARY_WORD_START:+ case nsIAccessibleText::BOUNDARY_LINE_START:+ TextLeafPoint orig;+ if (aOffset == nsIAccessibleText::TEXT_OFFSET_CARET) {+ orig = TextLeafPoint::GetCaret(Acc());+ } else {+ orig = ToTextLeafPoint(static_cast<int32_t>(adjustedOffset));+ }+ TextLeafPoint end = orig.FindBoundary(aBoundaryType, eDirPrevious,+ /* aIncludeOrigin */ true);+ bool ok;+ std::tie(ok, *aEndOffset) = TransformOffset(end.mAcc, end.mOffset,+ /* aIsEndOffset */ true);+ if (!ok) {+ // There is no previous boundary inside this HyperText.+ *aStartOffset = *aEndOffset = 0;+ return;+ }+ TextLeafPoint start = end.FindBoundary(aBoundaryType, eDirPrevious);+ // If TransformOffset fails because start is outside this HyperText,+ // *aStartOffset will be 0, which is what we want.+ std::tie(ok, *aStartOffset) = TransformOffset(start.mAcc, start.mOffset,+ /* aIsEndOffset */ false);+ TextSubstring(*aStartOffset, *aEndOffset, aText);+ return;+ } } void HyperTextAccessibleBase::TextAtOffset(int32_t aOffset,@@ -278,6 +326,58 @@ } }+void HyperTextAccessibleBase::TextAfterOffset(+ int32_t aOffset, AccessibleTextBoundary aBoundaryType,+ int32_t* aStartOffset, int32_t* aEndOffset, nsAString& aText) {+ MOZ_ASSERT(StaticPrefs::accessibility_cache_enabled_AtStartup());+ *aStartOffset = *aEndOffset = 0;+ aText.Truncate();++ uint32_t adjustedOffset = ConvertMagicOffset(aOffset);+ if (adjustedOffset == std::numeric_limits<uint32_t>::max()) {+ NS_ERROR("Wrong given offset!");+ return;+ }++ switch (aBoundaryType) {+ case nsIAccessibleText::BOUNDARY_CHAR: {+ uint32_t count = CharacterCount();+ if (adjustedOffset >= count) {+ *aStartOffset = *aEndOffset = static_cast<int32_t>(count);+ } else {+ CharAt(static_cast<int32_t>(adjustedOffset) + 1, aText, aStartOffset,+ aEndOffset);+ }+ break;+ }+ case nsIAccessibleText::BOUNDARY_WORD_START:+ case nsIAccessibleText::BOUNDARY_LINE_START:+ TextLeafPoint orig;+ if (aOffset == nsIAccessibleText::TEXT_OFFSET_CARET) {+ orig = TextLeafPoint::GetCaret(Acc());+ } else {+ orig = ToTextLeafPoint(static_cast<int32_t>(adjustedOffset),+ /* aDescendToEnd */ true);+ }+ TextLeafPoint start = orig.FindBoundary(aBoundaryType, eDirNext);+ bool ok;+ std::tie(ok, *aStartOffset) = TransformOffset(start.mAcc, start.mOffset,+ /* aIsEndOffset */ false);+ if (!ok) {+ // There is no next boundary inside this HyperText.+ *aStartOffset = *aEndOffset = static_cast<int32_t>(CharacterCount());+ return;+ }+ TextLeafPoint end = start.FindBoundary(aBoundaryType, eDirNext);+ // If TransformOffset fails because end is outside this HyperText,+ // *aEndOffset will be CharacterCount(), which is what we want.+ std::tie(ok, *aEndOffset) = TransformOffset(end.mAcc, end.mOffset,+ /* aIsEndOffset */ true);+ TextSubstring(*aStartOffset, *aEndOffset, aText);+ return;+ }+}+ int32_t HyperTextAccessibleBase::CaretOffset() const { TextLeafPoint point = TextLeafPoint::GetCaret(const_cast<Accessible*>(Acc())) .ActualizeCaret(/* aAdjustAtEndOfLine */ false);
Analyzing the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be adding new functionality (`TextBeforeOffset` and `TextAfterOffset` methods) rather than fixing existing security issues. Here's the analysis: 1. Vulnerability Existed: no No security vulnerability found in the added methods File: accessible/basetypes/HyperTextAccessibleBase.cpp Lines: 214-326 (new methods added) Old Code: (not applicable - new code added) Fixed Code: (not applicable - new code added) The changes: 1. Add `TextBeforeOffset` method to handle text boundaries before a given offset 2. Add `TextAfterOffset` method to handle text boundaries after a given offset Both methods include proper boundary checking and error handling: - They validate the input offset using `ConvertMagicOffset` - They handle edge cases (like caret position) - They properly initialize output parameters - They include assertions for precondition checking No obvious security vulnerabilities (like buffer overflows, integer overflows, or injection risks) are present in the added code. The changes appear to be functional enhancements 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.