<rdar://problem/8960434> and https://bugs.webkit.org/show_bug.cgi?id=53957
[WebKit.git] / Source / WebKit2 / UIProcess / cf / WebBackForwardListCF.cpp
index cafa3103b98837ffe599808b873c31188796f9cd..6102283fd4b44f5ba4ea342141802d38065dd2d7 100644 (file)
@@ -103,6 +103,16 @@ bool WebBackForwardList::restoreFromCFDictionaryRepresentation(CFDictionaryRef d
     }
 
     CFIndex size = CFArrayGetCount(cfEntries);
+    if (currentIndex != NoCurrentItemIndex && currentIndex >= size) {
+        LOG(SessionState, "WebBackForwardList dictionary representation contains an invalid current index (%ld) for the number of entries (%ld)", currentIndex, size);
+        return false;
+    }
+
+    if (currentIndex == NoCurrentItemIndex && size) {
+        LOG(SessionState, "WebBackForwardList dictionary representation says there is no current item index, but there is a list of %ld entries - this is bogus", size);
+        return false;
+    }
+    
     BackForwardListItemVector newEntries;
     newEntries.reserveCapacity(size);
     for (CFIndex i = 0; i < size; ++i) {
@@ -142,8 +152,6 @@ bool WebBackForwardList::restoreFromCFDictionaryRepresentation(CFDictionaryRef d
     m_current = currentIndex;
     m_entries = newEntries;
 
-    ASSERT(m_current == NoCurrentItemIndex || m_current < m_entries.size());
-
     return true;
 }