Title: [288278] releases/WebKitGTK/webkit-2.34
Revision
288278
Author
ape...@igalia.com
Date
2022-01-20 04:37:46 -0800 (Thu, 20 Jan 2022)

Log Message

Merge r286553 - Null check in shouldUseBreakElement
https://bugs.webkit.org/show_bug.cgi?id=229275

Patch by Rob Buis <rb...@igalia.com> on 2021-12-06
Reviewed by Ryosuke Niwa.

Source/WebCore:

Need to null check node in shouldUseBreakElement.
Also bail out early in InsertLineBreakCommand::doApply
in case position is not editable.

Test: editing/execCommand/insert-line-break-crash.html

* editing/InsertLineBreakCommand.cpp:
(WebCore::InsertLineBreakCommand::shouldUseBreakElement):
(WebCore::InsertLineBreakCommand::doApply):

LayoutTests:

* editing/execCommand/insert-line-break-crash-expected.txt: Added.
* editing/execCommand/insert-line-break-crash.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.34/LayoutTests/ChangeLog (288277 => 288278)


--- releases/WebKitGTK/webkit-2.34/LayoutTests/ChangeLog	2022-01-20 12:37:38 UTC (rev 288277)
+++ releases/WebKitGTK/webkit-2.34/LayoutTests/ChangeLog	2022-01-20 12:37:46 UTC (rev 288278)
@@ -1,3 +1,13 @@
+2021-12-06  Rob Buis  <rb...@igalia.com>
+
+        Null check in shouldUseBreakElement
+        https://bugs.webkit.org/show_bug.cgi?id=229275
+
+        Reviewed by Ryosuke Niwa.
+
+        * editing/execCommand/insert-line-break-crash-expected.txt: Added.
+        * editing/execCommand/insert-line-break-crash.html: Added.
+
 2021-12-04  Rob Buis  <rb...@igalia.com>
 
         Fix parentNode in CompositeEditCommand::splitTreeToNode

Added: releases/WebKitGTK/webkit-2.34/LayoutTests/editing/execCommand/insert-line-break-crash-expected.txt (0 => 288278)


--- releases/WebKitGTK/webkit-2.34/LayoutTests/editing/execCommand/insert-line-break-crash-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.34/LayoutTests/editing/execCommand/insert-line-break-crash-expected.txt	2022-01-20 12:37:46 UTC (rev 288278)
@@ -0,0 +1 @@
+Test passes if it does not crash.

Added: releases/WebKitGTK/webkit-2.34/LayoutTests/editing/execCommand/insert-line-break-crash.html (0 => 288278)


--- releases/WebKitGTK/webkit-2.34/LayoutTests/editing/execCommand/insert-line-break-crash.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.34/LayoutTests/editing/execCommand/insert-line-break-crash.html	2022-01-20 12:37:46 UTC (rev 288278)
@@ -0,0 +1,22 @@
+<script>
+  if (window.testRunner)
+    window.testRunner.dumpAsText();
+  _onload_ = () => {
+    document.designMode = 'on';
+    document.execCommand('SelectAll');
+    getSelection().modify('move', 'right', 'word');
+    queueMicrotask(() => {
+      document.execCommand('Delete');
+      document.write("Test passes if it does not crash.");
+    });
+    document.execCommand('InsertLineBreak');
+  };
+</script>
+<body>
+  <a href=""
+    <b>
+      <iframe></iframe>
+      <input></input>
+    </b>
+  </a>
+</body>

Modified: releases/WebKitGTK/webkit-2.34/Source/WebCore/ChangeLog (288277 => 288278)


--- releases/WebKitGTK/webkit-2.34/Source/WebCore/ChangeLog	2022-01-20 12:37:38 UTC (rev 288277)
+++ releases/WebKitGTK/webkit-2.34/Source/WebCore/ChangeLog	2022-01-20 12:37:46 UTC (rev 288278)
@@ -1,3 +1,20 @@
+2021-12-06  Rob Buis  <rb...@igalia.com>
+
+        Null check in shouldUseBreakElement
+        https://bugs.webkit.org/show_bug.cgi?id=229275
+
+        Reviewed by Ryosuke Niwa.
+
+        Need to null check node in shouldUseBreakElement.
+        Also bail out early in InsertLineBreakCommand::doApply
+        in case position is not editable.
+
+        Test: editing/execCommand/insert-line-break-crash.html
+
+        * editing/InsertLineBreakCommand.cpp:
+        (WebCore::InsertLineBreakCommand::shouldUseBreakElement):
+        (WebCore::InsertLineBreakCommand::doApply):
+
 2021-12-04  Rob Buis  <rb...@igalia.com>
 
         Fix parentNode in CompositeEditCommand::splitTreeToNode

Modified: releases/WebKitGTK/webkit-2.34/Source/WebCore/editing/InsertLineBreakCommand.cpp (288277 => 288278)


--- releases/WebKitGTK/webkit-2.34/Source/WebCore/editing/InsertLineBreakCommand.cpp	2022-01-20 12:37:38 UTC (rev 288277)
+++ releases/WebKitGTK/webkit-2.34/Source/WebCore/editing/InsertLineBreakCommand.cpp	2022-01-20 12:37:46 UTC (rev 288278)
@@ -60,7 +60,7 @@
     // the input element, and in that case we need to check the input element's
     // parent's renderer.
     auto* node = position.parentAnchoredEquivalent().deprecatedNode();
-    return node->renderer() && !node->renderer()->style().preserveNewline();
+    return node && node->renderer() && !node->renderer()->style().preserveNewline();
 }
 
 void InsertLineBreakCommand::doApply()
@@ -81,6 +81,9 @@
     position = positionAvoidingSpecialElementBoundary(position);
     position = positionOutsideTabSpan(position);
 
+    if (!isEditablePosition(position))
+        return;
+
     RefPtr<Node> nodeToInsert;
     if (shouldUseBreakElement(position))
         nodeToInsert = HTMLBRElement::create(document());
@@ -91,7 +94,7 @@
     
     if (isEndOfParagraph(caret) && !lineBreakExistsAtVisiblePosition(caret)) {
         bool needExtraLineBreak = !is<HTMLHRElement>(*position.deprecatedNode()) && !is<HTMLTableElement>(*position.deprecatedNode());
-        
+
         insertNodeAt(*nodeToInsert, position);
         
         if (needExtraLineBreak)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to