crashes in WebProcess at WebCore::Range::startPosition const + 16
authorenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Feb 2011 21:39:43 +0000 (21:39 +0000)
committerenrica@apple.com <enrica@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Feb 2011 21:39:43 +0000 (21:39 +0000)
https://bugs.webkit.org/show_bug.cgi?id=54294
<rdar://problem/8982710>

Reviewed by Darin Adler.

I don't have a repro case for this bugs, but the side-by-side
comparison of the IME support implementation in WebKit and WebKi2
shows a missing null check on a Range that could very well explain
this crash.
I tried running platform/mac/editing/input tests with a version of WebKit
without the null check and I can reproduce a crash with the same signature.
These tests are not yet enabled for WebKit2.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::firstRectForCharacterRange):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@78363 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm

index 09da88e..62f7a34 100644 (file)
@@ -1,3 +1,22 @@
+2011-02-11  Enrica Casucci  <enrica@apple.com>
+
+        Reviewed by Darin Adler.
+
+        crashes in WebProcess at WebCore::Range::startPosition const + 16
+        https://bugs.webkit.org/show_bug.cgi?id=54294
+        <rdar://problem/8982710>
+        
+        I don't have a repro case for this bugs, but the side-by-side
+        comparison of the IME support implementation in WebKit and WebKi2
+        shows a missing null check on a Range that could very well explain
+        this crash.
+        I tried running platform/mac/editing/input tests with a version of WebKit
+        without the null check and I can reproduce a crash with the same signature.
+        These tests are not yet enabled for WebKit2.
+
+        * WebProcess/WebPage/mac/WebPageMac.mm:
+        (WebKit::WebPage::firstRectForCharacterRange):
+
 2011-02-11  Jeff Miller  <jeffm@apple.com>
 
         Reviewed by Steve Falkenburg.
index 8621837..1a378bc 100644 (file)
@@ -231,10 +231,11 @@ void WebPage::firstRectForCharacterRange(uint64_t location, uint64_t length, Web
     resultRect.setSize(IntSize(0, 0));
     
     RefPtr<Range> range = convertToRange(frame, NSMakeRange(location, length));
-    if (range) {
-        ASSERT(range->startContainer());
-        ASSERT(range->endContainer());
-    }
+    if (!range)
+        return;
+    
+    ASSERT(range->startContainer());
+    ASSERT(range->endContainer());
      
     IntRect rect = frame->editor()->firstRectForRange(range.get());
     resultRect = frame->view()->contentsToWindow(rect);