浏览代码

LibJS: Add a sanity check to bytecodes argument_list_evaluation

Hendiadyoin1 2 年之前
父节点
当前提交
1e1bf84e6d
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      Userland/Libraries/LibJS/Bytecode/Op.cpp

+ 6 - 0
Userland/Libraries/LibJS/Bytecode/Op.cpp

@@ -569,6 +569,12 @@ static MarkedVector<Value> argument_list_evaluation(Bytecode::Interpreter& inter
     MarkedVector<Value> argument_values { vm.heap() };
     MarkedVector<Value> argument_values { vm.heap() };
     auto arguments = interpreter.accumulator();
     auto arguments = interpreter.accumulator();
 
 
+    if (!(arguments.is_object() && is<Array>(arguments.as_object()))) {
+        dbgln("Call arguments are not an array, but: {}", arguments.to_string_without_side_effects());
+        dbgln("PC: {}[{:4x}]", interpreter.current_block().name(), interpreter.pc());
+        interpreter.current_executable().dump();
+        VERIFY_NOT_REACHED();
+    }
     auto& argument_array = arguments.as_array();
     auto& argument_array = arguments.as_array();
     auto array_length = argument_array.indexed_properties().array_like_size();
     auto array_length = argument_array.indexed_properties().array_like_size();