Index: Source/modules/indexeddb/IDBCursor.cpp |
diff --git a/Source/modules/indexeddb/IDBCursor.cpp b/Source/modules/indexeddb/IDBCursor.cpp |
index 8ec7e528b4bc5d8b32b786f4f497d8ceb3cd05a6..6385679fad0352761f878aec17e4441d8e30e23a 100644 |
--- a/Source/modules/indexeddb/IDBCursor.cpp |
+++ b/Source/modules/indexeddb/IDBCursor.cpp |
@@ -160,6 +160,11 @@ void IDBCursor::continueFunction(ScriptState* scriptState, const ScriptValue& ke |
void IDBCursor::continuePrimaryKey(ScriptState* scriptState, const ScriptValue& keyValue, const ScriptValue& primaryKeyValue, ExceptionState& exceptionState) |
{ |
IDB_TRACE("IDBCursor::continuePrimaryKey"); |
+ if (m_source->type() != IDBAny::IDBIndexType) { |
+ exceptionState.throwDOMException(InvalidAccessError, "The cursor's source is not an index."); |
+ return; |
+ } |
+ |
IDBKey* key = ScriptValue::to<IDBKey*>(scriptState->isolate(), keyValue, exceptionState); |
IDBKey* primaryKey = ScriptValue::to<IDBKey*>(scriptState->isolate(), primaryKeyValue, exceptionState); |
if (!key->isValid() || !primaryKey->isValid()) { |