Title: [289794] trunk
Revision
289794
Author
[email protected]
Date
2022-02-15 01:04:27 -0800 (Tue, 15 Feb 2022)

Log Message

null ptr deref in WebCore::HTMLModelElement::enterFullscreen()
https://bugs.webkit.org/show_bug.cgi?id=236409

Patch by Gabriel Nava Marino <[email protected]> on 2022-02-15
Reviewed by Darin Adler.

Source/WebCore:

m_modelPlayer is a RefPtr that can become nullptr, so it needs a check before
dereferencing in HTMLModelElement::enterFullscreen(), as is done in other parts of
this class.

Also added a similar check missing in HTMLModelElement::platformLayer(), which was identified via code inspection.

Test: model-element/model-element-enter-fullscreen-crash.html

* Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::platformLayer const):
(WebCore::HTMLModelElement::enterFullscreen):

LayoutTests:

* model-element/model-element-enter-fullscreen-crash-expected.txt: Added.
* model-element/model-element-enter-fullscreen-crash.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (289793 => 289794)


--- trunk/LayoutTests/ChangeLog	2022-02-15 08:36:26 UTC (rev 289793)
+++ trunk/LayoutTests/ChangeLog	2022-02-15 09:04:27 UTC (rev 289794)
@@ -1,3 +1,13 @@
+2022-02-15  Gabriel Nava Marino  <[email protected]>
+
+        null ptr deref in WebCore::HTMLModelElement::enterFullscreen()
+        https://bugs.webkit.org/show_bug.cgi?id=236409
+
+        Reviewed by Darin Adler.
+
+        * model-element/model-element-enter-fullscreen-crash-expected.txt: Added.
+        * model-element/model-element-enter-fullscreen-crash.html: Added.
+
 2022-02-15  Carlos Garcia Campos  <[email protected]>
 
         REGRESSION(r195447): [GTK] document.activeElement not set on mouse click

Added: trunk/LayoutTests/model-element/model-element-enter-fullscreen-crash-expected.txt (0 => 289794)


--- trunk/LayoutTests/model-element/model-element-enter-fullscreen-crash-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/model-element/model-element-enter-fullscreen-crash-expected.txt	2022-02-15 09:04:27 UTC (rev 289794)
@@ -0,0 +1,2 @@
+CONSOLE MESSAGE: This test passes if it does not crash.
+

Added: trunk/LayoutTests/model-element/model-element-enter-fullscreen-crash.html (0 => 289794)


--- trunk/LayoutTests/model-element/model-element-enter-fullscreen-crash.html	                        (rev 0)
+++ trunk/LayoutTests/model-element/model-element-enter-fullscreen-crash.html	2022-02-15 09:04:27 UTC (rev 289794)
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<script>
+  document.createElement('model').enterFullscreen();
+  _onload_ = () => {
+    if (window.testRunner)
+      testRunner.dumpAsText();
+    console.log("This test passes if it does not crash.");
+  };
+</script>

Modified: trunk/Source/WebCore/ChangeLog (289793 => 289794)


--- trunk/Source/WebCore/ChangeLog	2022-02-15 08:36:26 UTC (rev 289793)
+++ trunk/Source/WebCore/ChangeLog	2022-02-15 09:04:27 UTC (rev 289794)
@@ -1,3 +1,22 @@
+2022-02-15  Gabriel Nava Marino  <[email protected]>
+
+        null ptr deref in WebCore::HTMLModelElement::enterFullscreen()
+        https://bugs.webkit.org/show_bug.cgi?id=236409
+
+        Reviewed by Darin Adler.
+
+        m_modelPlayer is a RefPtr that can become nullptr, so it needs a check before
+        dereferencing in HTMLModelElement::enterFullscreen(), as is done in other parts of
+        this class.
+
+        Also added a similar check missing in HTMLModelElement::platformLayer(), which was identified via code inspection.
+
+        Test: model-element/model-element-enter-fullscreen-crash.html
+
+        * Modules/model-element/HTMLModelElement.cpp:
+        (WebCore::HTMLModelElement::platformLayer const):
+        (WebCore::HTMLModelElement::enterFullscreen):
+
 2022-02-15  Carlos Garcia Campos  <[email protected]>
 
         REGRESSION(r195447): [GTK] document.activeElement not set on mouse click

Modified: trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp (289793 => 289794)


--- trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp	2022-02-15 08:36:26 UTC (rev 289793)
+++ trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp	2022-02-15 09:04:27 UTC (rev 289794)
@@ -274,7 +274,9 @@
 
 PlatformLayer* HTMLModelElement::platformLayer() const
 {
-    return m_modelPlayer->layer();
+    if (m_modelPlayer)
+        return m_modelPlayer->layer();
+    return nullptr;
 }
 
 void HTMLModelElement::sizeMayHaveChanged()
@@ -322,7 +324,8 @@
 
 void HTMLModelElement::enterFullscreen()
 {
-    m_modelPlayer->enterFullscreen();
+    if (m_modelPlayer)
+        m_modelPlayer->enterFullscreen();
 }
 
 // MARK: - Interaction support.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to