summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYogita Urade <yogita.urade@windriver.com>2023-06-09 14:09:05 +0000
committerSteve Sakoman <steve@sakoman.com>2023-06-21 04:00:58 -1000
commitb4a7ec6e0e41c442024da3d5d4e20c3c807f55dd (patch)
treec7d4623f46a9dd9448912ff7a1cfec77e8f33faa
parentab62b82a81a21b59e139ea32d7f2d3f8b5951f5b (diff)
downloadpoky-b4a7ec6e0e41c442024da3d5d4e20c3c807f55dd.tar.gz
webkitgtk: fix CVE-2022-42867
A use after free issue was addressed with improved memory management. This issue is fixed in Safari 16.2, tvOS 16.2, macOS Ventura 13.1, iOS 16.2 and iPadOS 16.2, watchOS 9.2. Processing maliciously crafted web content may lead to arbitrary code execution. Reference: https://nvd.nist.gov/vuln/detail/CVE-2022-42867 https://support.apple.com/en-us/HT213537 (From OE-Core rev: d4a872b6ac8c41d9c3f4d5f7255d4561684ef7d5) Signed-off-by: Yogita Urade <yogita.urade@windriver.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/CVE-2022-42867.patch104
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.36.8.bb1
2 files changed, 105 insertions, 0 deletions
diff --git a/meta/recipes-sato/webkit/webkitgtk/CVE-2022-42867.patch b/meta/recipes-sato/webkit/webkitgtk/CVE-2022-42867.patch
new file mode 100644
index 0000000000..bf06809051
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/CVE-2022-42867.patch
@@ -0,0 +1,104 @@
1From f67a882170609d15836204a689dc552322fbe653 Mon Sep 17 00:00:00 2001
2From: Yogita Urade <yogita.urade@windriver.com>
3Date: Wed, 7 Jun 2023 08:15:11 +0000
4Subject: [oe-core][kirkstone][PATCH 1/1] RenderElement::updateFillImages
5 should take pointer arguments like other similar functions
6 https://bugs.webkit.org/show_bug.cgi?id=247317 rdar://100273147
7
8Reviewed by Alan Baradlay.
9
10* Source/WebCore/rendering/RenderElement.cpp:
11(WebCore::RenderElement::updateFillImages):
12(WebCore::RenderElement::styleDidChange):
13* Source/WebCore/rendering/RenderElement.h:
14
15Canonical link: https://commits.webkit.org/256215@main
16
17CVE: CVE-2022-42867
18
19Upstream-Status: Backport
20[https://github.com/WebKit/WebKit/commit/091a04e55c801ac6ba13f4b328fbee2eece853fc]
21
22Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
23---
24 Source/WebCore/rendering/RenderElement.cpp | 27 ++++++++++++++--------
25 Source/WebCore/rendering/RenderElement.h | 2 +-
26 2 files changed, 19 insertions(+), 10 deletions(-)
27
28diff --git a/Source/WebCore/rendering/RenderElement.cpp b/Source/WebCore/rendering/RenderElement.cpp
29index da43bf3d..931686b8 100644
30--- a/Source/WebCore/rendering/RenderElement.cpp
31+++ b/Source/WebCore/rendering/RenderElement.cpp
32@@ -358,7 +358,7 @@ inline bool RenderElement::shouldRepaintForStyleDifference(StyleDifference diff)
33 return diff == StyleDifference::Repaint || (diff == StyleDifference::RepaintIfTextOrBorderOrOutline && hasImmediateNonWhitespaceTextChildOrBorderOrOutline());
34 }
35
36-void RenderElement::updateFillImages(const FillLayer* oldLayers, const FillLayer& newLayers)
37+void RenderElement::updateFillImages(const FillLayer* oldLayers, const FillLayer* newLayers)
38 {
39 auto fillImagesAreIdentical = [](const FillLayer* layer1, const FillLayer* layer2) -> bool {
40 if (layer1 == layer2)
41@@ -379,7 +379,7 @@ void RenderElement::updateFillImages(const FillLayer* oldLayers, const FillLayer
42 };
43
44 auto isRegisteredWithNewFillImages = [&]() -> bool {
45- for (auto* layer = &newLayers; layer; layer = layer->next()) {
46+ for (auto* layer = newLayers; layer; layer = layer->next()) {
47 if (layer->image() && !layer->image()->hasClient(*this))
48 return false;
49 }
50@@ -388,11 +388,11 @@ void RenderElement::updateFillImages(const FillLayer* oldLayers, const FillLayer
51
52 // If images have the same characteristics and this element is already registered as a
53 // client to the new images, there is nothing to do.
54- if (fillImagesAreIdentical(oldLayers, &newLayers) && isRegisteredWithNewFillImages())
55+ if (fillImagesAreIdentical(oldLayers, newLayers) && isRegisteredWithNewFillImages())
56 return;
57
58 // Add before removing, to avoid removing all clients of an image that is in both sets.
59- for (auto* layer = &newLayers; layer; layer = layer->next()) {
60+ for (auto* layer = newLayers; layer; layer = layer->next()) {
61 if (layer->image())
62 layer->image()->addClient(*this);
63 }
64@@ -937,11 +937,20 @@ static inline bool areCursorsEqual(const RenderStyle* a, const RenderStyle* b)
65
66 void RenderElement::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
67 {
68- updateFillImages(oldStyle ? &oldStyle->backgroundLayers() : nullptr, m_style.backgroundLayers());
69- updateFillImages(oldStyle ? &oldStyle->maskLayers() : nullptr, m_style.maskLayers());
70- updateImage(oldStyle ? oldStyle->borderImage().image() : nullptr, m_style.borderImage().image());
71- updateImage(oldStyle ? oldStyle->maskBoxImage().image() : nullptr, m_style.maskBoxImage().image());
72- updateShapeImage(oldStyle ? oldStyle->shapeOutside() : nullptr, m_style.shapeOutside());
73+ auto registerImages = [this](auto* style, auto* oldStyle) {
74+ if (!style && !oldStyle)
75+ return;
76+ updateFillImages(oldStyle ? &oldStyle->backgroundLayers() : nullptr, style ? &style->backgroundLayers() : nullptr);
77+ updateFillImages(oldStyle ? &oldStyle->maskLayers() : nullptr, style ? &style->maskLayers() : nullptr);
78+ updateImage(oldStyle ? oldStyle->borderImage().image() : nullptr, style ? style->borderImage().image() : nullptr);
79+ updateImage(oldStyle ? oldStyle->maskBoxImage().image() : nullptr, style ? style->maskBoxImage().image() : nullptr);
80+ updateShapeImage(oldStyle ? oldStyle->shapeOutside() : nullptr, style ? style->shapeOutside() : nullptr);
81+ };
82+
83+ registerImages(&style(), oldStyle);
84+
85+ // Are there other pseudo-elements that need the resources to be registered?
86+ registerImages(style().getCachedPseudoStyle(PseudoId::FirstLine), oldStyle ? oldStyle->getCachedPseudoStyle(PseudoId::FirstLine) : nullptr);
87
88 SVGRenderSupport::styleChanged(*this, oldStyle);
89
90diff --git a/Source/WebCore/rendering/RenderElement.h b/Source/WebCore/rendering/RenderElement.h
91index f376cecb..d6ba2cdf 100644
92--- a/Source/WebCore/rendering/RenderElement.h
93+++ b/Source/WebCore/rendering/RenderElement.h
94@@ -349,7 +349,7 @@ private:
95 bool shouldRepaintForStyleDifference(StyleDifference) const;
96 bool hasImmediateNonWhitespaceTextChildOrBorderOrOutline() const;
97
98- void updateFillImages(const FillLayer*, const FillLayer&);
99+ void updateFillImages(const FillLayer*, const FillLayer*);
100 void updateImage(StyleImage*, StyleImage*);
101 void updateShapeImage(const ShapeValue*, const ShapeValue*);
102
103--
1042.35.5
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.36.8.bb b/meta/recipes-sato/webkit/webkitgtk_2.36.8.bb
index 8f6514a82b..062f209932 100644
--- a/meta/recipes-sato/webkit/webkitgtk_2.36.8.bb
+++ b/meta/recipes-sato/webkit/webkitgtk_2.36.8.bb
@@ -19,6 +19,7 @@ SRC_URI = "https://www.webkitgtk.org/releases/${BP}.tar.xz \
19 file://CVE-2022-32923.patch \ 19 file://CVE-2022-32923.patch \
20 file://CVE-2022-46691.patch \ 20 file://CVE-2022-46691.patch \
21 file://CVE-2022-46699.patch \ 21 file://CVE-2022-46699.patch \
22 file://CVE-2022-42867.patch \
22 " 23 "
23SRC_URI[sha256sum] = "0ad9fb6bf28308fe3889faf184bd179d13ac1b46835d2136edbab2c133d00437" 24SRC_URI[sha256sum] = "0ad9fb6bf28308fe3889faf184bd179d13ac1b46835d2136edbab2c133d00437"
24 25