Crash at WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator
authorsihui_liu@apple.com <sihui_liu@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Jul 2019 00:43:07 +0000 (00:43 +0000)
committersihui_liu@apple.com <sihui_liu@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Jul 2019 00:43:07 +0000 (00:43 +0000)
https://bugs.webkit.org/show_bug.cgi?id=199677
<rdar://problem/52334665>

Reviewed by Alex Christensen.

Add an early return in incrementReverseIterator when setFirstInRemainingRange fails to set m_iterator. This is
in line with what we did in incrementForwardIterator.

* Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
(WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator):

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

Source/WebCore/ChangeLog
Source/WebCore/Modules/indexeddb/server/MemoryObjectStoreCursor.cpp

index cc74dcc..8c3cb20 100644 (file)
@@ -1,3 +1,17 @@
+2019-07-10  Sihui Liu  <sihui_liu@apple.com>
+
+        Crash at WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator
+        https://bugs.webkit.org/show_bug.cgi?id=199677
+        <rdar://problem/52334665>
+
+        Reviewed by Alex Christensen.
+
+        Add an early return in incrementReverseIterator when setFirstInRemainingRange fails to set m_iterator. This is 
+        in line with what we did in incrementForwardIterator.
+
+        * Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
+        (WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator):
+
 2019-07-10  Chris Dumez  <cdumez@apple.com>
 
         Stop using GenericTaskQueue from multiple threads
index 3703347..0e28ad2 100644 (file)
@@ -270,7 +270,7 @@ void MemoryObjectStoreCursor::incrementReverseIterator(IDBKeyDataSet& set, const
         didResetIterator = true;
     }
 
-    if (*m_iterator == set.end())
+    if (!m_iterator || *m_iterator == set.end())
         return;
 
     if (key.isValid()) {