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/js/src/wasm/WasmIntrinsic.yaml+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/js/src/wasm/WasmIntrinsic.yaml@@ -15,3 +15,187 @@ - I32 - I32 - I32++#if defined(ENABLE_WASM_MOZ_INTGEMM)++# Intrinsics for integer matrix multiplication followed by addition of bias.+# Please refer to @TOPSRCDIR/js/src/intgemm/IntegerGemmIntrinsic.h for more details on these intrinsics.+++# Prepare B for the Matrix Multiply intrinsic from Input matrix B.+#+# Quantization is performed on the input.+# The final prepared B is in CPU-dependent format and can be used as an input to matrix multiply+# intrinsic (`int8_multiply_and_add_bias`).+#+# int8_prepare_b(const float* inputMatrixB, float scale, float zeroPoint, uint32_t rowsB, uint32_t colsB, int8_t* outputMatrixB)+# int8_prepare_b(inputMatrixB: i32, scale: f32, zeroPoint: f32, rowsB: i32, colsB: i32, outputMatrixB: i32)+- op: I8PrepareB+ symbolic_address:+ name: IntrI8PrepareB+ type: Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General+ entry: intgemm::IntrI8PrepareB+ export: int8_prepare_b+ params:+ - I32+ - F32+ - F32+ - I32+ - I32+ - I32+++# Prepare B for the Matrix Multiply intrinsic from transposed version of Input matrix B.+#+# Quantization is performed on floating values of input.+# The final prepared B is in CPU-dependent format and can be used as an input to matrix multiply+# intrinsic (`int8_multiply_and_add_bias`).+#+# int8_prepare_b_from_transposed(const float* inputMatrixBTransposed, float scale, float zeroPoint, uint32_t rowsB, uint32_t colsB, int8_t* outputMatrixB)+# int8_prepare_b_from_transposed(inputMatrixBTransposed: i32, scale: f32, zeroPoint: f32, rowsB: i32, colsB: i32, outputMatrixB: i32)+- op: I8PrepareBFromTransposed+ symbolic_address:+ name: IntrI8PrepareBFromTransposed+ type: Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General+ entry: intgemm::IntrI8PrepareBFromTransposed+ export: int8_prepare_b_from_transposed+ params:+ - I32+ - F32+ - F32+ - I32+ - I32+ - I32+++# Prepare B for the Matrix Multiply intrinsic from a quantized and transposed version of Input+# matrix B which is also in a CPU-independent format.+#+# The final prepared B is in CPU-dependent format and can be used as an input to matrix multiply+# intrinsic (`int8_multiply_and_add_bias`).+#+# int8_prepare_b_from_quantized_transposed(const int8_t* inputMatrixBQuantizedTransposed, uint32_t rowsB, uint32_t colsB, int8_t* outputMatrixB)+# int8_prepare_b_from_quantized_transposed(inputMatrixBQuantizedTransposed: i32, rowsB: i32, colsB: i32, outputMatrixB: i32)+- op: I8PrepareBFromQuantizedTransposed+ symbolic_address:+ name: IntrI8PrepareBFromQuantizedTransposed+ type: Args_Int32_GeneralInt32Int32Int32Int32General+ entry: intgemm::IntrI8PrepareBFromQuantizedTransposed+ export: int8_prepare_b_from_quantized_transposed+ params:+ - I32+ - I32+ - I32+ - I32+++# Prepare A for the Matrix Multiply intrinsic from Input matrix A.+#+# It performs quantization on floating values of input.+# The final prepared A might be architecture dependent. e.g. On some architectures like x86, it+# might be unsigned (achieved by adding 127 to quantized values) while on others like Arm, it might+# be signed.+# The final prepared A can be used as an input to matrix multiply intrinsic+# (`int8_multiply_and_add_bias`).+#+# int8_prepare_a(const float* inputMatrixA, float scale, float zeroPoint, uint32_t rowsA, uint32_t colsA, int8_t* outputMatrixA)+# int8_prepare_a(inputMatrixA: i32, scale: f32, zeroPoint: f32, rowsA: i32, colsA: i32, outputMatrixA: i32)+- op: I8PrepareA+ symbolic_address:+ name: IntrI8PrepareA+ type: Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General+ entry: intgemm::IntrI8PrepareA+ export: int8_prepare_a+ params:+ - I32+ - F32+ - F32+ - I32+ - I32+ - I32+++# Prepares bias for the Matrix Multiply intrinsic.+#+# It uses the prepared B (which must be obtained by using any of the `int8_prepare_b*` intrinsics) and+# a bias input to prepare the final bias.+#+# The final bias can be used as an input to matrix multiply intrinsic (`int8_multiply_and_add_bias`).+#+# int8_prepare_bias(const int8_t* inputMatrixBPrepared, float scaleA, float zeroPointA, float scaleB, float zeroPointB, uint32_t rowsB, uint32_t colsB, const float* inputBias, float* output)+# int8_prepare_bias(inputMatrixBPrepared: i32, scaleA: f32, zeroPointA: f32, scaleB: f32, zeroPointB: f32, rowsB: i32, colsB: i32, inputBias: i32, output: i32)+- op: I8PrepareBias+ symbolic_address:+ name: IntrI8PrepareBias+ type: Args_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General+ entry: intgemm::IntrI8PrepareBias+ export: int8_prepare_bias+ params:+ - I32+ - F32+ - F32+ - F32+ - F32+ - I32+ - I32+ - I32+ - I32+++# Perform multiplication of 2 matrices followed by adding a bias.+#+# i.e Output = inputMatrixAPrepared * inputMatrixBPrepared + inputBiasPrepared+#+# The inputs of this intrinsic must be obtained by using `int8_prepare_A`,+# one of the `int8_prepare_b*` and `int8_prepare_bias` intrinsics respectively.+#+# int8_multiply_and_add_bias(const int8_t* inputMatrixAPrepared, float scaleA, float zeroPointA,+# const int8_t* inputMatrixBPrepared, float scaleB, float zeroPointB,+# const float* inputBiasPrepared, float unquantMultiplier,+# uint32_t rowsA, uint32_t width, uint32_t colsB, float* output)+# int8_multiply_and_add_bias(inputMatrixAPrepared: i32, scaleA: f32, zeroPointA: f32,+# inputMatrixBPrepared: i32, scaleB: f32, zeroPointB: f32,+# inputBiasPrepared: i32, unquantMultiplier: f32,+# rowsA: i32, width: i32, colsB: i32, output: i32)+- op: I8MultiplyAndAddBias+ symbolic_address:+ name: IntrI8MultiplyAndAddBias+ type: Args_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General+ entry: intgemm::IntrI8MultiplyAndAddBias+ export: int8_multiply_and_add_bias+ params:+ - I32+ - F32+ - F32+ - I32+ - F32+ - F32+ - I32+ - F32+ - I32+ - I32+ - I32+ - I32+++# Select a subset of columns of prepared B.+#+# Indices of the columns to be selected are specified by an array.+#+# int8_select_columns_of_b(const int8_t* inputMatrixBPrepared, uint32_t rowsB, uint32_t colsB, const uint32_t* colIndexList, const uint32_t sizeColIndexList, int8_t* output)+# int8_select_columns_of_b(inputMatrixBPrepared: i32, rowsB: i32, colsB: i32, colIndexList: i32, sizeColIndexList: i32, output: i32)+- op: I8SelectColumnsOfB+ symbolic_address:+ name: IntrI8SelectColumnsOfB+ type: Args_Int32_GeneralInt32Int32Int32Int32Int32Int32General+ entry: intgemm::IntrI8SelectColumnsOfB+ export: int8_select_columns_of_b+ params:+ - I32+ - I32+ - I32+ - I32+ - I32+ - I32++#endif // ENABLE_WASM_MOZ_INTGEMM
After analyzing the provided code diff, I don't find any obvious security vulnerabilities being fixed. The changes appear to be adding new WASM intrinsic functions for integer matrix multiplication operations, which is a feature addition rather than a security fix. Here's the structured response as requested: Vulnerability Existed: no No vulnerabilities found [js/src/wasm/WasmIntrinsic.yaml] [Lines 15-187] [Old Code: Empty section after line 15] [Fixed Code: Added new WASM intrinsic functions for integer matrix multiplication] The diff shows the addition of several new WASM intrinsic operations for handling integer matrix multiplication with bias operations, but doesn't show any security fixes. The changes are all additive and don't modify any existing security-sensitive code. If I were to speculate about potential security considerations in the new code (though not shown as fixes in this diff), these matrix operations would need to: 1. Properly validate all input dimensions to prevent buffer overflows 2. Handle quantization operations carefully to avoid precision issues 3. Validate all pointer parameters passed from WASM But these would be new code considerations rather than fixes to existing 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/browser/components/places/tests/browser/browser_bookmarks_sidebar_search.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/components/places/tests/browser/browser_bookmarks_sidebar_search.js@@ -159,28 +159,52 @@ guid: theNode.bookmarkGuid, title: TEST_NEW_TITLE, });+ // As the query result is refreshed once then the node also is regenerated, // need to get the result node from the tree again.- const newNode = tree.view._getNodeForRow(0);- Assert.equal(- newNode.bookmarkGuid,+ Assert.equal(+ tree.view._getNodeForRow(0).bookmarkGuid, theNode.bookmarkGuid, "GUID of node regenerated is correct" ); Assert.equal(- newNode.uri,+ tree.view._getNodeForRow(0).uri, theNode.uri, "URI of node regenerated is correct" ); Assert.equal(- newNode.parentGuid,+ tree.view._getNodeForRow(0).parentGuid, theNode.parentGuid, "parentGuid of node regenerated is correct" ); Assert.equal(- newNode.title,+ tree.view._getNodeForRow(0).title, TEST_NEW_TITLE, "New title is applied to the node"+ );++ info("Check the new date will be applied the item when changing it");+ const now = new Date();+ await PlacesUtils.bookmarks.update({+ guid: theNode.bookmarkGuid,+ dateAdded: now,+ lastModified: now,+ });++ Assert.equal(+ tree.view._getNodeForRow(0).uri,+ theNode.uri,+ "URI of node regenerated is correct"+ );+ Assert.equal(+ tree.view._getNodeForRow(0).dateAdded,+ now.getTime() * 1000,+ "New dateAdded is applied to the node"+ );+ Assert.equal(+ tree.view._getNodeForRow(0).lastModified,+ now.getTime() * 1000,+ "New lastModified is applied to the node" ); });
After analyzing the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be test case improvements and additions rather than security fixes. Here's the analysis: 1. Vulnerability Existed: no No security vulnerability found in this diff The changes are: - Changed test assertions to directly use tree.view._getNodeForRow(0) instead of storing in a variable - Added new test cases for date modification functionality The changes are primarily: 1. Refactoring test assertions to be more direct 2. Adding new test coverage for date-related bookmark properties (dateAdded and lastModified) 3. No security-related changes or vulnerability fixes are evident in this diff The modifications appear to be test improvements rather than security fixes, with no CVE or known vulnerability patterns being addressed.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.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.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.strokeRect(100, 25, 100, 0);-_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0");+_assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); t.done(); });
Based on the provided diff, I'll analyze it for potential security vulnerabilities: 1. Vulnerability Existed: no No security vulnerability found [File] [Lines 13-21] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.strokeRect(100, 25, 100, 0); _assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ctx.strokeStyle = '#f00'; ctx.lineWidth = 250; ctx.lineCap = 'round'; ctx.strokeRect(100, 25, 100, 0); _assertPixel(canvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); The changes appear to be purely variable renaming (from `offscreenCanvas` to `canvas`) and don't affect any security-related aspects of the code. 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/testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.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'); _assert(ctx.filter == 'none', "ctx.filter == 'none'"); ctx.filter = 'blur(5px)';
Let me analyze the provided code diff for security fixes. Vulnerability Existed: no [No specific vulnerability] [testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.html] [Lines 17-18] [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'); Analysis: 1. The change appears to be purely a variable name change from `offscreenCanvas` to `canvas` 2. The functionality remains exactly the same 3. No security-related changes are evident in this diff 4. This seems to be a code style/consistency improvement rather than a security fix No known vulnerabilities are being addressed in this diff. The change is likely for better code readability or consistency with other 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/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.hex3.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.fillStyle.parse.hex3.html@@ -17,14 +17,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 = '#0f0'; ctx.fillRect(0, 0, 100, 50);-_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 don't see any security-related fixes. The changes appear to be purely variable renaming and don't affect security. 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.fillStyle.parse.hex3.html] [Lines 17-25] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); _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'); ctx.fillStyle = '#f00'; ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); The changes are: 1. Renamed variable `offscreenCanvas` to `canvas` 2. Updated the variable name in the `_assertPixel` call 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/mobile/android/geckoview_example/src/main/AndroidManifest.xml+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/mobile/android/geckoview_example/src/main/AndroidManifest.xml@@ -27,6 +27,7 @@ android:label="GeckoView Example" android:launchMode="singleTop" android:theme="@style/Theme.AppCompat.Light.NoActionBar"+ android:exported="true" android:windowSoftInputMode="stateUnspecified|adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN"/>@@ -52,11 +53,13 @@ android:name=".SessionActivity" android:label="GeckoView Example" android:theme="@style/Theme.AppCompat.Light.NoActionBar"+ android:exported="false" android:windowSoftInputMode="stateUnspecified|adjustResize"> </activity> <activity android:name=".SettingsActivity" android:label="Settings"+ android:exported="false" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> </activity>
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: yes Missing Exported Flag Vulnerability [mobile/android/geckoview_example/src/main/AndroidManifest.xml] [Lines 27, 52, 57] Old Code: ```xml <activity android:name=".GeckoViewActivity" android:label="GeckoView Example" android:launchMode="singleTop" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:windowSoftInputMode="stateUnspecified|adjustResize"> ``` Fixed Code: ```xml <activity android:name=".GeckoViewActivity" android:label="GeckoView Example" android:launchMode="singleTop" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:exported="true" android:windowSoftInputMode="stateUnspecified|adjustResize"> ``` 2. Vulnerability Existed: yes Missing Exported Flag Vulnerability [mobile/android/geckoview_example/src/main/AndroidManifest.xml] [Lines 52, 57] Old Code: ```xml <activity android:name=".SessionActivity" android:label="GeckoView Example" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:windowSoftInputMode="stateUnspecified|adjustResize"> ``` Fixed Code: ```xml <activity android:name=".SessionActivity" android:label="GeckoView Example" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:exported="false" android:windowSoftInputMode="stateUnspecified|adjustResize"> ``` 3. Vulnerability Existed: yes Missing Exported Flag Vulnerability [mobile/android/geckoview_example/src/main/AndroidManifest.xml] [Lines 57] Old Code: ```xml <activity android:name=".SettingsActivity" android:label="Settings" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> ``` Fixed Code: ```xml <activity android:name=".SettingsActivity" android:label="Settings" android:exported="false" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> ``` The main security fix in this diff addresses the "Missing Exported Flag" vulnerability, which became mandatory to specify in Android 12 (API level 31) for all components that can receive intents. The fix properly sets the `android:exported` flag for all activities, explicitly declaring whether they should be accessible from other applications. The main activity is set to `exported="true"` since it needs to be launchable, while other activities are set to `exported="false"` to prevent unintended access.
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-backgrounds/reference/background-paint-order-001-ref.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/css/css-backgrounds/reference/background-paint-order-001-ref.html@@ -4,7 +4,6 @@ <title>CSS Test: Background clip and border painting order</title> <link rel="author" title="Julien Chaffraix" href="mailto:[email protected]"> <link rel="reviewer" title="Arron Eicholz" href="mailto:[email protected]" /> <!-- 2012-10-27 -->- <meta name="flags" content=""> <style> div {
Based on the provided diff, here's the analysis: Vulnerability Existed: no [No specific vulnerability found] [testing/web-platform/tests/css/css-backgrounds/reference/background-paint-order-001-ref.html] [Lines 4-7] [Old Code] <meta name="flags" content=""> [Fixed Code] [Removed line] Additional Details: - The change simply removes an empty meta tag for "flags" which appears to be test-related metadata - No security implications are apparent in this change - The modification seems to be a cleanup rather than a security fix - No known vulnerability patterns are present in this change The diff shows a minor HTML cleanup change that doesn't appear to be security-related. The removed meta tag was empty and likely served some testing purpose that's no longer needed.
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/x86/mc_init_tmpl.c+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/dav1d/src/x86/mc_init_tmpl.c@@ -152,7 +152,7 @@ init_mct_fn(FILTER_2D_8TAP_SHARP, 8tap_sharp, ssse3); init_mct_fn(FILTER_2D_BILINEAR, bilin, ssse3);-#if BITDEPTH == 8 && ARCH_X86_64+#if BITDEPTH == 8 init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR, 8tap_scaled_regular, ssse3); init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_scaled_regular_smooth, ssse3); init_mc_scaled_fn(FILTER_2D_8TAP_REGULAR_SHARP, 8tap_scaled_regular_sharp, ssse3);
Analyzing the provided code diff, here's the security assessment: Vulnerability Existed: no [No specific vulnerability] [third_party/dav1d/src/x86/mc_init_tmpl.c] [Lines 152] [Old Code] #if BITDEPTH == 8 && ARCH_X86_64 [Fixed Code] #if BITDEPTH == 8 Additional Details: This appears to be a functional change rather than a security fix. The modification removes the ARCH_X86_64 architecture check while keeping the BITDEPTH == 8 condition. This suggests the functions being initialized are now supported on more x86 architectures (not just x86_64), but there's no indication this was fixing a security vulnerability. The change likely improves compatibility or performance across different x86 architectures.
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/feature-policy/reporting/payment-reporting.https.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/feature-policy/reporting/payment-reporting.https.html@@ -11,7 +11,7 @@ var check_report_format = (reports, observer) => { let report = reports[0];- assert_equals(report.type, "feature-policy-violation");+ assert_equals(report.type, "permissions-policy-violation"); assert_equals(report.url, document.location.href); assert_equals(report.body.featureId, "payment"); assert_equals(report.body.sourceFile, document.location.href);@@ -22,7 +22,7 @@ }; new ReportingObserver(t.step_func_done(check_report_format),- {types: ['feature-policy-violation']}).observe();+ {types: ['permissions-policy-violation']}).observe(); t.step_func(() => { assert_throws_dom('SecurityError',
Based on the provided diff, I'll analyze the changes for potential security fixes: 1. Vulnerability Existed: not sure Feature Policy to Permissions Policy Renaming [testing/web-platform/tests/feature-policy/reporting/payment-reporting.https.html] [Lines 11,22] Old Code: "feature-policy-violation" Fixed Code: "permissions-policy-violation" Additional Details: - This appears to be a standardization update rather than a direct security fix - The change reflects the renaming from "Feature Policy" to "Permissions Policy" in the web specifications - While not directly fixing a security vulnerability, it ensures proper alignment with current security standards - The change affects both the report type check and the observer configuration No other vulnerabilities were identified in this diff. The changes appear to be related to terminology updates in line with evolving web standards rather than addressing specific security flaws.
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/html/HTMLCanvasElement.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/html/HTMLCanvasElement.cpp@@ -71,7 +71,9 @@ : mRegistered(false), mReturnPlaceholderData(aReturnPlaceholderData), mOwningElement(aOwningElement),- mRefreshDriver(aRefreshDriver) {+ mRefreshDriver(aRefreshDriver),+ mWatchManager(this, AbstractThread::MainThread()),+ mPendingThrottledCapture(false) { MOZ_ASSERT(mOwningElement); }@@ -118,55 +120,160 @@ mReturnPlaceholderData = aReturnPlaceholderData; }+ void NotifyCaptureStateChange() {+ if (mPendingThrottledCapture) {+ return;+ }++ if (!mOwningElement) {+ return;+ }++ Watchable<FrameCaptureState>* captureState =+ mOwningElement->GetFrameCaptureState();+ if (!captureState) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: No capture state"_ns);+ return;+ }++ if (captureState->Ref() == FrameCaptureState::CLEAN) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: CLEAN"_ns);+ return;+ }++ if (!mRefreshDriver) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: no refresh driver"_ns);+ return;+ }++ if (!mRefreshDriver->IsThrottled()) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: not throttled"_ns);+ return;+ }++ TimeStamp now = TimeStamp::Now();+ TimeStamp next =+ mLastCaptureTime.IsNull()+ ? now+ : mLastCaptureTime + TimeDuration::FromMilliseconds(+ nsRefreshDriver::DefaultInterval());+ if (mLastCaptureTime.IsNull() || next <= now) {+ AUTO_PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "CaptureFrame direct while throttled"_ns);+ CaptureFrame(now);+ return;+ }++ nsCString str;+ if (profiler_thread_is_being_profiled_for_markers()) {+ str.AppendPrintf("Delaying CaptureFrame by %.2fms",+ (next - now).ToMilliseconds());+ }+ AUTO_PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {}, str);++ mPendingThrottledCapture = true;+ AbstractThread::MainThread()->DelayedDispatch(+ NS_NewRunnableFunction(+ __func__,+ [this, self = RefPtr<RequestedFrameRefreshObserver>(this), next] {+ mPendingThrottledCapture = false;+ AUTO_PROFILER_MARKER_TEXT(+ "Canvas CaptureStream", MEDIA_RT, {},+ "CaptureFrame after delay while throttled"_ns);+ CaptureFrame(next);+ }),+ // next >= now, so this is a guard for (next - now) flooring to 0.+ std::max<uint32_t>(+ 1, static_cast<uint32_t>((next - now).ToMilliseconds())));+ }+ void WillRefresh(TimeStamp aTime) override {+ AUTO_PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "CaptureFrame by refresh driver"_ns);++ CaptureFrame(aTime);+ }++ void CaptureFrame(TimeStamp aTime) { MOZ_ASSERT(NS_IsMainThread());- AUTO_PROFILER_LABEL("RequestedFrameRefreshObserver::WillRefresh", OTHER);- if (!mOwningElement) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: no owning element"_ns); return; } if (mOwningElement->IsWriteOnly()) {- return;- }-- if (mOwningElement->IsContextCleanForFrameCapture()) {- return;- }+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: write only"_ns);+ return;+ }++ if (auto* captureStateWatchable = mOwningElement->GetFrameCaptureState();+ captureStateWatchable &&+ *captureStateWatchable == FrameCaptureState::CLEAN) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: CLEAN"_ns);+ return;+ }++ // Mark the context already now, since if the frame capture state is DIRTY+ // and we catch an early return below (not marking it CLEAN), the next draw+ // will not trigger a capture state change from the+ // Watchable<FrameCaptureState>.+ mOwningElement->MarkContextCleanForFrameCapture(); mOwningElement->ProcessDestroyedFrameListeners();- if (!mOwningElement->IsFrameCaptureRequested()) {+ if (!mOwningElement->IsFrameCaptureRequested(aTime)) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: no capture requested"_ns); return; } RefPtr<SourceSurface> snapshot; {- AUTO_PROFILER_LABEL(- "RequestedFrameRefreshObserver::WillRefresh:GetSnapshot", OTHER);+ AUTO_PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "GetSnapshot"_ns); snapshot = mOwningElement->GetSurfaceSnapshot(nullptr); if (!snapshot) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: snapshot failed"_ns); return; } } RefPtr<DataSourceSurface> copy; {- AUTO_PROFILER_LABEL(- "RequestedFrameRefreshObserver::WillRefresh:CopySurface", OTHER);+ AUTO_PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "CopySurface"_ns); copy = CopySurface(snapshot, mReturnPlaceholderData); if (!copy) {+ PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {},+ "Abort: copy failed"_ns); return; } }- {- AUTO_PROFILER_LABEL("RequestedFrameRefreshObserver::WillRefresh:SetFrame",- OTHER);- mOwningElement->SetFrameCapture(copy.forget(), aTime);- mOwningElement->MarkContextCleanForFrameCapture();- }+ nsCString str;+ if (profiler_thread_is_being_profiled_for_markers()) {+ TimeDuration sinceLast =+ aTime - (mLastCaptureTime.IsNull() ? aTime : mLastCaptureTime);+ str.AppendPrintf("Forwarding captured frame %.2fms after last",+ sinceLast.ToMilliseconds());+ }+ AUTO_PROFILER_MARKER_TEXT("Canvas CaptureStream", MEDIA_RT, {}, str);++ if (!mLastCaptureTime.IsNull() && aTime <= mLastCaptureTime) {+ aTime = mLastCaptureTime + TimeDuration::FromMilliseconds(1);+ }+ mLastCaptureTime = aTime;++ mOwningElement->SetFrameCapture(copy.forget(), aTime); } void DetachFromRefreshDriver() {@@ -175,6 +282,7 @@ Unregister(); mRefreshDriver = nullptr;+ mWatchManager.Shutdown(); } void Register() {@@ -188,6 +296,17 @@ "Canvas frame capture listeners"); mRegistered = true; }++ if (!mOwningElement) {+ return;+ }++ if (Watchable<FrameCaptureState>* captureState =+ mOwningElement->GetFrameCaptureState()) {+ mWatchManager.Watch(+ *captureState,+ &RequestedFrameRefreshObserver::NotifyCaptureStateChange);+ } } void Unregister() {@@ -200,6 +319,17 @@ mRefreshDriver->RemoveRefreshObserver(this, FlushType::Display); mRegistered = false; }++ if (!mOwningElement) {+ return;+ }++ if (Watchable<FrameCaptureState>* captureState =+ mOwningElement->GetFrameCaptureState()) {+ mWatchManager.Unwatch(+ *captureState,+ &RequestedFrameRefreshObserver::NotifyCaptureStateChange);+ } } private:@@ -210,8 +340,11 @@ bool mRegistered; bool mReturnPlaceholderData;- HTMLCanvasElement* const mOwningElement;+ const WeakPtr<HTMLCanvasElement> mOwningElement; RefPtr<nsRefreshDriver> mRefreshDriver;+ WatchManager<RequestedFrameRefreshObserver> mWatchManager;+ TimeStamp mLastCaptureTime;+ bool mPendingThrottledCapture; }; // ---------------------------------------------------------------------------@@ -341,6 +474,10 @@ mWriteOnly(false) {} HTMLCanvasElement::~HTMLCanvasElement() {+ if (mOffscreenDisplay) {+ mOffscreenDisplay->Destroy();+ }+ if (mContextObserver) { mContextObserver->Destroy(); mContextObserver = nullptr;@@ -466,7 +603,6 @@ return OwnerDoc()->Dispatch(TaskCategory::Other, renderEvent.forget()); }-MOZ_CAN_RUN_SCRIPT void HTMLCanvasElement::CallPrintCallback() { if (!mPrintState) { // `mPrintState` might have been destroyed by cancelling the previous@@ -712,7 +848,8 @@ // If no permission, arrange for the frame capture listener to return // all-white, opaque image data. bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(- OwnerDoc(), nsContentUtils::GetCurrentJSContext(), aSubjectPrincipal);+ OwnerDoc(), nsContentUtils::GetCurrentJSContext(),+ Some(&aSubjectPrincipal)); rv = RegisterFrameCaptureListener(stream->FrameCaptureListener(), usePlaceholder);@@ -732,7 +869,7 @@ // Check site-specific permission and display prompt if appropriate. // If no permission, return all-white, opaque image data. bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(- OwnerDoc(), aCx, aSubjectPrincipal);+ OwnerDoc(), aCx, Some(&aSubjectPrincipal)); return ImageEncoder::ExtractData(aType, aOptions, GetSize(), usePlaceholder, mCurrentContext, mCanvasRenderer, aStream); }@@ -816,7 +953,7 @@ // Check site-specific permission and display prompt if appropriate. // If no permission, return all-white, opaque image data. bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(- OwnerDoc(), aCx, aSubjectPrincipal);+ OwnerDoc(), aCx, Some(&aSubjectPrincipal)); CanvasRenderingContextHelper::ToBlob(aCx, global, aCallback, aType, aParams, usePlaceholder, aRv); }@@ -1058,8 +1195,6 @@ // we plan to reframe we don't need to invalidate it anyway. nsIFrame* frame = GetPrimaryFrame(); if (!frame) return;-- ActiveLayerTracker::NotifyContentChange(frame); // When using layers-free WebRender, we cannot invalidate the layer (because // there isn't one). Instead, we mark the CanvasRenderer dirty and scheduling@@ -1188,8 +1323,11 @@ mCurrentContext->MarkContextCleanForFrameCapture(); }-bool HTMLCanvasElement::IsContextCleanForFrameCapture() {- return mCurrentContext && mCurrentContext->IsContextCleanForFrameCapture();+Watchable<FrameCaptureState>* HTMLCanvasElement::GetFrameCaptureState() {+ if (!mCurrentContext) {+ return nullptr;+ }+ return mCurrentContext->GetFrameCaptureState(); } nsresult HTMLCanvasElement::RegisterFrameCaptureListener(@@ -1238,13 +1376,13 @@ return NS_OK; }-bool HTMLCanvasElement::IsFrameCaptureRequested() const {+bool HTMLCanvasElement::IsFrameCaptureRequested(const TimeStamp& aTime) const { for (WeakPtr<FrameCaptureListener> listener : mRequestedFrameListeners) { if (!listener) { continue; }- if (listener->FrameCaptureRequested()) {+ if (listener->FrameCaptureRequested(aTime)) { return true; } }
Based on the provided code diff, I'll analyze it for security fixes following the specified format: 1. First vulnerability: Vulnerability Existed: yes Memory Safety Issue [File] dom/html/HTMLCanvasElement.cpp [Lines] 210 [Old Code] HTMLCanvasElement* const mOwningElement; [Fixed Code] const WeakPtr<HTMLCanvasElement> mOwningElement; The change from raw pointer to WeakPtr prevents potential use-after-free vulnerabilities by safely handling object lifetime. 2. Second vulnerability: Vulnerability Existed: yes Permission Check Strengthening [File] dom/html/HTMLCanvasElement.cpp [Lines] 848-849, 869, 953 [Old Code] CanvasUtils::IsImageExtractionAllowed(OwnerDoc(), nsContentUtils::GetCurrentJSContext(), aSubjectPrincipal); [Fixed Code] CanvasUtils::IsImageExtractionAllowed(OwnerDoc(), nsContentUtils::GetCurrentJSContext(), Some(&aSubjectPrincipal)); The change strengthens permission checks by properly wrapping the principal parameter, ensuring more robust security checks. 3. Third vulnerability: Vulnerability Existed: not sure Potential Race Condition Fix [File] dom/html/HTMLCanvasElement.cpp [Lines] 71 [Old Code] mRefreshDriver(aRefreshDriver) { [Fixed Code] mRefreshDriver(aRefreshDriver), mWatchManager(this, AbstractThread::MainThread()), mPendingThrottledCapture(false) { The addition of thread-aware WatchManager and pending capture flag might address potential race conditions in frame capture, but without more context I can't be certain. 4. Fourth vulnerability: Vulnerability Existed: not sure Resource Cleanup Improvement [File] dom/html/HTMLCanvasElement.cpp [Lines] 474-476 [Old Code] (none - no explicit destruction) [Fixed Code] if (mOffscreenDisplay) { mOffscreenDisplay->Destroy(); } This addition ensures proper resource cleanup which could prevent memory leaks, but it's unclear if this was fixing an actual vulnerability or just improving code quality. The most clearly security-related changes are the WeakPtr conversion and the strengthened permission checks, while the other changes appear to be more about robustness and resource management.
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.canvas.xor.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/compositing/2d.composite.canvas.xor.worker.js@@ -13,11 +13,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();@@ -35,7 +35,7 @@ ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'xor'; ctx.drawImage(offscreenCanvas2, 0, 0);- _assertPixelApprox(offscreenCanvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5);+ _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 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 primarily variable renaming and consistency improvements rather than security-related fixes. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found [File] [Lines 13-35] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); _assertPixelApprox(offscreenCanvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); var offscreenCanvas2 = new OffscreenCanvas(canvas.width, canvas.height); _assertPixelApprox(canvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); The changes are: 1. Renaming `offscreenCanvas` to `canvas` for consistency 2. Updating references to use the new variable name 3. No security-related changes were made 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/toolkit/components/extensions/test/xpcshell/head_service_worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/toolkit/components/extensions/test/xpcshell/head_service_worker.js@@ -4,8 +4,20 @@ /* exported TestWorkerWatcher */-const { ExtensionCommon } = ChromeUtils.import(- "resource://gre/modules/ExtensionCommon.jsm"+XPCOMUtils.defineLazyModuleGetters(this, {+ ExtensionCommon: "resource://gre/modules/ExtensionCommon.jsm",+});++// Ensure that the profile-after-change message has been notified,+// so that ServiceWokerRegistrar is going to be initialized,+// otherwise tests using a background service worker will fail.+// in debug builds because of an assertion failure triggered+// by ServiceWorkerRegistrar.cpp (due to not being initialized+// automatically on startup as in a real Firefox instance).+Services.obs.notifyObservers(+ null,+ "profile-after-change",+ "force-serviceworkerrestart-init" ); // A test utility class used in the test case to watch for a given extension
Based on the provided diff, I'll analyze it for potential security vulnerabilities: 1. Vulnerability Existed: no Module Import Change [File] [Lines 4-6] [Old Code] const { ExtensionCommon } = ChromeUtils.import( "resource://gre/modules/ExtensionCommon.jsm" ) [Fixed Code] XPCOMUtils.defineLazyModuleGetters(this, { ExtensionCommon: "resource://gre/modules/ExtensionCommon.jsm", }) 2. Vulnerability Existed: not sure Service Worker Initialization [File] [Lines 8-16] [Old Code] (no equivalent code) [Fixed Code] Services.obs.notifyObservers( null, "profile-after-change", "force-serviceworkerrestart-init" ) The first change appears to be a refactoring of module imports to use lazy loading, which doesn't indicate a security vulnerability. The second change adds initialization code for service workers in test environments, but it's unclear if this fixes a security issue or just prevents test failures. The notification with "force-serviceworkerrestart-init" could potentially be related to race condition prevention, but without more context about the original issue, I can't be certain.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/dom/promise/Promise.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/promise/Promise.cpp@@ -232,7 +232,7 @@ } void PromiseNativeThenHandlerBase::ResolvedCallback(- JSContext* aCx, JS::Handle<JS::Value> aValue) {+ JSContext* aCx, JS::Handle<JS::Value> aValue, ErrorResult& aRv) { RefPtr<Promise> promise = CallResolveCallback(aCx, aValue); if (promise) { mPromise->MaybeResolve(promise);@@ -242,7 +242,7 @@ } void PromiseNativeThenHandlerBase::RejectedCallback(- JSContext* aCx, JS::Handle<JS::Value> aValue) {+ JSContext* aCx, JS::Handle<JS::Value> aValue, ErrorResult& aRv) { mPromise->MaybeReject(aValue); }@@ -333,16 +333,17 @@ v = js::GetFunctionNativeReserved(&args.callee(), SLOT_NATIVEHANDLER_TASK); NativeHandlerTask task = static_cast<NativeHandlerTask>(v.toInt32());+ ErrorResult rv; if (task == NativeHandlerTask::Resolve) { // handler is kept alive by "obj" on the stack.- MOZ_KnownLive(handler)->ResolvedCallback(aCx, args.get(0));+ MOZ_KnownLive(handler)->ResolvedCallback(aCx, args.get(0), rv); } else { MOZ_ASSERT(task == NativeHandlerTask::Reject); // handler is kept alive by "obj" on the stack.- MOZ_KnownLive(handler)->RejectedCallback(aCx, args.get(0));- }-- return true;+ MOZ_KnownLive(handler)->RejectedCallback(aCx, args.get(0), rv);+ }++ return !rv.MaybeSetPendingException(aCx); } static JSObject* CreateNativeHandlerFunction(JSContext* aCx,@@ -380,16 +381,18 @@ } MOZ_CAN_RUN_SCRIPT- void ResolvedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue) override {+ void ResolvedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue,+ ErrorResult& aRv) override { RefPtr<PromiseNativeHandler> inner = std::move(mInner);- inner->ResolvedCallback(aCx, aValue);+ inner->ResolvedCallback(aCx, aValue, aRv); MOZ_ASSERT(!mInner); } MOZ_CAN_RUN_SCRIPT- void RejectedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue) override {+ void RejectedCallback(JSContext* aCx, JS::Handle<JS::Value> aValue,+ ErrorResult& aRv) override { RefPtr<PromiseNativeHandler> inner = std::move(mInner);- inner->RejectedCallback(aCx, aValue);+ inner->RejectedCallback(aCx, aValue, aRv); MOZ_ASSERT(!mInner); }@@ -770,12 +773,14 @@ } void PromiseWorkerProxy::ResolvedCallback(JSContext* aCx,- JS::Handle<JS::Value> aValue) {+ JS::Handle<JS::Value> aValue,+ ErrorResult& aRv) { RunCallback(aCx, aValue, &Promise::MaybeResolve); } void PromiseWorkerProxy::RejectedCallback(JSContext* aCx,- JS::Handle<JS::Value> aValue) {+ JS::Handle<JS::Value> aValue,+ ErrorResult& aRv) { RunCallback(aCx, aValue, &Promise::MaybeReject); }
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure Potential Error Handling Improvement [dom/promise/Promise.cpp] [Lines 232-242, 333-343, 380-392, 770-778] [Old Code] Various callback functions without ErrorResult parameter [Fixed Code] Added ErrorResult parameter to handle potential errors in callback functions 2. Vulnerability Existed: not sure Potential Exception Handling Improvement [dom/promise/Promise.cpp] [Lines 333-343] [Old Code] `return true;` without checking for errors [Fixed Code] `return !rv.MaybeSetPendingException(aCx);` which properly handles potential exceptions The main changes appear to be adding error handling through the ErrorResult parameter and improving exception handling. While these changes improve robustness, it's not clear if they directly address any specific known vulnerabilities or if they are preventative measures. The modifications suggest better error propagation and exception handling, which could potentially prevent certain types of crashes or undefined behavior, but without more context about specific vulnerabilities being addressed, we can't be certain. The changes are consistent with defensive programming practices that could mitigate potential security issues related to unhandled exceptions or error conditions.
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/marionette/harness/marionette_harness/tests/unit/test_profile_management.py+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/marionette/harness/marionette_harness/tests/unit/test_profile_management.py@@ -64,7 +64,11 @@ tmp_dir = tempfile.mkdtemp(suffix="external") shutil.rmtree(tmp_dir, ignore_errors=True)- self.external_profile = mozprofile.Profile(profile=tmp_dir)+ # Re-use all the required profile arguments (preferences)+ profile_args = self.marionette.instance.profile_args+ profile_args["profile"] = tmp_dir+ self.external_profile = mozprofile.Profile(**profile_args)+ # Prevent profile from being removed during cleanup self.external_profile.create_new = False@@ -211,6 +215,9 @@ self.assertEqual(self.profile_path, self.external_profile.profile) self.assertFalse(os.path.exists(self.orig_profile_path))+ # Check that required preferences have been correctly set+ self.assertFalse(self.marionette.get_pref("remote.prefs.recommended"))+ # Set a new profile and ensure the external profile has not been deleted self.marionette.quit() self.marionette.instance.profile = None
Here's the analysis of the provided code diff: 1. Vulnerability Existed: yes Insufficient Profile Initialization [testing/marionette/harness/marionette_harness/tests/unit/test_profile_management.py] [Lines 64-68] Old Code: tmp_dir = tempfile.mkdtemp(suffix="external") shutil.rmtree(tmp_dir, ignore_errors=True) self.external_profile = mozprofile.Profile(profile=tmp_dir) Fixed Code: tmp_dir = tempfile.mkdtemp(suffix="external") shutil.rmtree(tmp_dir, ignore_errors=True) # Re-use all the required profile arguments (preferences) profile_args = self.marionette.instance.profile_args profile_args["profile"] = tmp_dir self.external_profile = mozprofile.Profile(**profile_args) The fix addresses a potential security issue where the external profile wasn't being initialized with all required preferences from the main profile. This could lead to different security settings between profiles. 2. Vulnerability Existed: yes Missing Preference Validation [testing/marionette/harness/marionette_harness/tests/unit/test_profile_management.py] [Lines 211-214] Old Code: self.assertEqual(self.profile_path, self.external_profile.profile) self.assertFalse(os.path.exists(self.orig_profile_path)) Fixed Code: self.assertEqual(self.profile_path, self.external_profile.profile) self.assertFalse(os.path.exists(self.orig_profile_path)) # Check that required preferences have been correctly set self.assertFalse(self.marionette.get_pref("remote.prefs.recommended")) The fix adds validation for a security-relevant preference ("remote.prefs.recommended") to ensure it's properly set to false in the profile configuration.
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/metrics.yaml+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/toolkit/components/glean/metrics.yaml@@ -19,6 +19,9 @@ time_unit: nanosecond description: | Time the FOG initialization takes.+ metadata: &metadata+ tags:+ - "Toolkit :: Telemetry" bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1662123 data_reviews:@@ -37,6 +40,7 @@ True if we failed to register with the idle service. Absent otherwise. Means IPC probably isn't working well. Child-process data will likely be absent, or incomplete.+ metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 data_reviews:@@ -54,6 +58,7 @@ description: | The number of times the ipc buffer failed to be replayed in the parent process.+ metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1664461 data_reviews:@@ -70,6 +75,7 @@ memory_unit: byte description: | The number and size of the IPC buffers being received over FOG IPC.+ metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 data_reviews:@@ -87,6 +93,7 @@ description: | The length of time between asking the child processes for their IPC buffers and all of them being received by the parent.+ metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 data_reviews:@@ -105,6 +112,7 @@ throwing even partial results into the trash. If this number is high, we might consider writing custom `MozPromise`- handling code instead of using `MozPromise::All`.+ metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1729026 data_reviews:
After analyzing the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be adding metadata tags to various metrics in the Glean metrics configuration file. Here's the analysis: 1. Vulnerability Existed: no No security vulnerability [File] toolkit/components/glean/metrics.yaml [Lines] 19,37,54,70,87,105 [Old Code] (various metrics without metadata tags) [Fixed Code] (same metrics with added metadata tags) The changes consist of: 1. Adding a new metadata anchor definition (&metadata) with a "Toolkit :: Telemetry" tag 2. Applying this metadata to multiple metrics using the anchor (*metadata) These changes appear to be organizational/administrative improvements rather than security fixes, likely to help with metric categorization and management. No security-related vulnerabilities are being addressed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.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,9 +23,9 @@ g.addColorStop(0.6, '#0f0'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 20,25, 0,255,0,255, "20,25", "0,255,0,255", 2);-_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2);-_assertPixelApprox(offscreenCanvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255", 2);+_assertPixelApprox(canvas, 20,25, 0,255,0,255, "20,25", "0,255,0,255", 2);+_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2);+_assertPixelApprox(canvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255", 2); t.done(); });
After analyzing the provided code diff, I don't see any security-related fixes. The changes appear to be purely cosmetic/refactoring changes where a variable was renamed from `offscreenCanvas` to `canvas`. The functionality remains exactly the same. Here's the structured response: Vulnerability Existed: no No security vulnerability found [testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js] [Lines 13-23] [Old Code: var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ...] [Fixed Code: var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ...] The changes are simply variable renaming and don't affect security in any way. All assertions and canvas operations remain identical, just using the new 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/testing/web-platform/tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.create2.negative.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.create2.negative.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 imgdata1 = ctx.createImageData(10, 20); var imgdata2 = ctx.createImageData(-10, 20);
Analyzing the provided code diff, here's the security assessment: 1. Vulnerability Existed: no Variable Renaming [File] [Lines 17-18] 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 Details: - This appears to be a simple variable name change from `offscreenCanvas` to `canvas` - No security vulnerability is addressed in this change - The modification is likely for code consistency or readability purposes - The functionality remains identical, just with a different variable name - The test case (creating negative dimension ImageData) remains the same No security vulnerabilities were fixed in this diff. The change is purely cosmetic/refactoring 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/third_party/rust/idna/tests/uts46.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/idna/tests/uts46.rs@@ -6,113 +6,139 @@ // option. This file may not be copied, modified, or distributed // except according to those terms.+use crate::test::TestFn; use std::char;-use test::TestFn;++use idna::Errors; pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {- // http://www.unicode.org/Public/idna/latest/IdnaTest.txt- for (i, line) in include_str!("IdnaTest.txt").lines().enumerate() {- if line == "" || line.starts_with("#") {+ // https://www.unicode.org/Public/idna/13.0.0/IdnaTestV2.txt+ for (i, line) in include_str!("IdnaTestV2.txt").lines().enumerate() {+ if line.is_empty() || line.starts_with('#') { continue; }+ // Remove comments- let mut line = match line.find("#") {+ let line = match line.find('#') { Some(index) => &line[0..index], None => line, };- let mut expected_failure = false;- if line.starts_with("XFAIL") {- expected_failure = true;- line = &line[5..line.len()];+ let mut pieces = line.split(';').map(|x| x.trim()).collect::<Vec<&str>>();+ let source = unescape(&pieces.remove(0));++ // ToUnicode+ let mut to_unicode = unescape(&pieces.remove(0));+ if to_unicode.is_empty() {+ to_unicode = source.clone();+ }+ let to_unicode_status = status(pieces.remove(0));++ // ToAsciiN+ let to_ascii_n = pieces.remove(0);+ let to_ascii_n = if to_ascii_n.is_empty() {+ to_unicode.clone()+ } else {+ to_ascii_n.to_owned()+ };+ let to_ascii_n_status = pieces.remove(0);+ let to_ascii_n_status = if to_ascii_n_status.is_empty() {+ to_unicode_status.clone()+ } else {+ status(to_ascii_n_status) };- let mut pieces = line.split(';').map(|x| x.trim()).collect::<Vec<&str>>();-- let test_type = pieces.remove(0);- let original = pieces.remove(0);- let source = unescape(original);- let to_unicode = pieces.remove(0);- let to_ascii = pieces.remove(0);- let nv8 = if pieces.len() > 0 {- pieces.remove(0)+ // ToAsciiT+ let to_ascii_t = pieces.remove(0);+ let to_ascii_t = if to_ascii_t.is_empty() {+ to_ascii_n.clone() } else {- ""+ to_ascii_t.to_owned() };-- if expected_failure {- continue;- }+ let to_ascii_t_status = pieces.remove(0);+ let to_ascii_t_status = if to_ascii_t_status.is_empty() {+ to_ascii_n_status.clone()+ } else {+ status(to_ascii_t_status)+ }; let test_name = format!("UTS #46 line {}", i + 1); add_test( test_name, TestFn::dyn_test_fn(move || {- let result = idna::Config::default()+ let config = idna::Config::default() .use_std3_ascii_rules(true) .verify_dns_length(true)- .check_hyphens(true)- .transitional_processing(test_type == "T")- .to_ascii(&source);+ .check_hyphens(true);- if to_ascii.starts_with("[") {- if to_ascii.starts_with("[C") {- // http://unicode.org/reports/tr46/#Deviations- // applications that perform IDNA2008 lookup are not required to check- // for these contexts- return;- }- if to_ascii == "[V2]" {- // Everybody ignores V2- // https://github.com/servo/rust-url/pull/240- // https://github.com/whatwg/url/issues/53#issuecomment-181528158- // http://www.unicode.org/review/pri317/- return;- }- let res = result.ok();- assert!(- res == None,- "Expected error. result: {} | original: {} | source: {}",- res.unwrap(),- original,- source- );- return;- }+ // http://unicode.org/reports/tr46/#Deviations+ // applications that perform IDNA2008 lookup are not required to check+ // for these contexts, so we skip all tests annotated with C*- let to_ascii = if to_ascii.len() > 0 {- to_ascii.to_string()- } else {- if to_unicode.len() > 0 {- to_unicode.to_string()- } else {- source.clone()- }- };+ // Everybody ignores V2+ // https://github.com/servo/rust-url/pull/240+ // https://github.com/whatwg/url/issues/53#issuecomment-181528158+ // http://www.unicode.org/review/pri317/- if nv8 == "NV8" {- // This result isn't valid under IDNA2008. Skip it- return;- }+ // "The special error codes X3 and X4_2 are now returned where a toASCII error code+ // was formerly being generated in toUnicode due to an empty label."+ // This is not implemented yet, so we skip toUnicode X4_2 tests for now, too.- assert!(- result.is_ok(),- "Couldn't parse {} | original: {} | error: {:?}",- source,- original,- result.err()+ let (to_unicode_value, to_unicode_result) =+ config.transitional_processing(false).to_unicode(&source);+ let to_unicode_result = to_unicode_result.map(|()| to_unicode_value);+ check(+ &source,+ (&to_unicode, &to_unicode_status),+ to_unicode_result,+ |e| e.starts_with('C') || e == "V2" || e == "X4_2", );- let output = result.ok().unwrap();- assert!(- output == to_ascii,- "result: {} | expected: {} | original: {} | source: {}",- output,- to_ascii,- original,- source++ let to_ascii_n_result = config.transitional_processing(false).to_ascii(&source);+ check(+ &source,+ (&to_ascii_n, &to_ascii_n_status),+ to_ascii_n_result,+ |e| e.starts_with('C') || e == "V2",+ );++ let to_ascii_t_result = config.transitional_processing(true).to_ascii(&source);+ check(+ &source,+ (&to_ascii_t, &to_ascii_t_status),+ to_ascii_t_result,+ |e| e.starts_with('C') || e == "V2", ); }), )+ }+}++#[allow(clippy::redundant_clone)]+fn check<F>(source: &str, expected: (&str, &[&str]), actual: Result<String, Errors>, ignore: F)+where+ F: Fn(&str) -> bool,+{+ if !expected.1.is_empty() {+ if !expected.1.iter().copied().any(ignore) {+ let res = actual.ok();+ assert_eq!(+ res.clone(),+ None,+ "Expected error {:?}. result: {} | source: {}",+ expected.1,+ res.unwrap(),+ source,+ );+ }+ } else {+ assert!(+ actual.is_ok(),+ "Couldn't parse {} | error: {:?}",+ source,+ actual.err().unwrap(),+ );+ assert_eq!(actual.unwrap(), expected.0, "source: {}", source); } }@@ -148,3 +174,20 @@ } } }++fn status(status: &str) -> Vec<&str> {+ if status.is_empty() || status == "[]" {+ return Vec::new();+ }++ let mut result = status.split(", ").collect::<Vec<_>>();+ assert!(result[0].starts_with('['));+ result[0] = &result[0][1..];++ let idx = result.len() - 1;+ let last = &mut result[idx];+ assert!(last.ends_with(']'));+ *last = &last[..last.len() - 1];++ result+}
After analyzing the code diff, I don't see any direct security vulnerabilities being fixed. The changes appear to be primarily about test improvements and code refactoring. Here's my analysis: 1. Vulnerability Existed: no No specific vulnerability found The changes mainly involve: - Updating test file reference from IdnaTest.txt to IdnaTestV2.txt - Refactoring test handling logic - Adding better error handling and status checking - Improving test assertions 2. Vulnerability Existed: no No specific vulnerability found The changes include: - Better handling of test cases with new status() function - More comprehensive test checking with new check() function - Removal of XFAIL handling - More detailed test case processing The changes seem to be focused on improving test coverage and reliability rather than fixing security vulnerabilities. The main differences are in how test cases are processed and verified, with more robust error handling and status checking. The update to IdnaTestV2.txt suggests the tests are being aligned with newer IDNA specifications, but this appears to be a maintenance update 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/path-objects/2d.path.roundrect.2.radii.2.dompointinit.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/path-objects/2d.path.roundrect.2.radii.2.dompointinit.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,20 +23,20 @@ ctx.fill(); // top-right corner-_assertPixel(offscreenCanvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255");-_assertPixel(offscreenCanvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255");-_assertPixel(offscreenCanvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255");-_assertPixel(offscreenCanvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255");+_assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255");+_assertPixel(canvas, 58,1, 0,255,0,255, "58,1", "0,255,0,255");+_assertPixel(canvas, 98,10, 255,0,0,255, "98,10", "255,0,0,255");+_assertPixel(canvas, 98,21, 0,255,0,255, "98,21", "0,255,0,255"); // bottom-left corner-_assertPixel(offscreenCanvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255");-_assertPixel(offscreenCanvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255");-_assertPixel(offscreenCanvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255");-_assertPixel(offscreenCanvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255");+_assertPixel(canvas, 20,48, 255,0,0,255, "20,48", "255,0,0,255");+_assertPixel(canvas, 41,48, 0,255,0,255, "41,48", "0,255,0,255");+_assertPixel(canvas, 1,39, 255,0,0,255, "1,39", "255,0,0,255");+_assertPixel(canvas, 1,28, 0,255,0,255, "1,28", "0,255,0,255"); // other corners-_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");-_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255");+_assertPixel(canvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255");+_assertPixel(canvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't see any security-related fixes. The changes appear to be purely variable renaming and don't address any security vulnerabilities. Here's the analysis following your requested format: Vulnerability Existed: no No security vulnerability found [File] [Lines] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); _assertPixel(offscreenCanvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); _assertPixel(canvas, 79,1, 255,0,0,255, "79,1", "255,0,0,255"); The changes consist solely of: 1. Renaming the variable `offscreenCanvas` to `canvas` 2. Updating all subsequent references 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/testing/web-platform/tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.path.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.beginPath(); ctx.rect(0, 0, 100, 50);@@ -23,7 +23,7 @@ ctx.strokeRect(0, 0, 16, 16); ctx.fillStyle = '#0f0'; ctx.fill();-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I don't see any security-related fixes. The changes appear to be purely cosmetic/refactoring changes (variable renaming) with no security implications. Here's the analysis: 1. Vulnerability Existed: no Variable Renaming Refactor [File] [Lines 13-14,23] 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 simply rename the variable `offscreenCanvas` to `canvas` for consistency or readability, but this doesn't address any security vulnerability. The functionality remains exactly the same.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.