Explorar o código

LibWasm: Validate that data section exists for some instructions

Diego hai 1 ano
pai
achega
67749300c3
Modificáronse 1 ficheiros con 5 adicións e 0 borrados
  1. 5 0
      Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp

+ 5 - 0
Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp

@@ -1950,6 +1950,8 @@ VALIDATE_INSTRUCTION(memory_copy)
 
 VALIDATE_INSTRUCTION(memory_init)
 {
+    if (!m_context.data_count.has_value())
+        return Errors::invalid("memory.init, requires data count section"sv);
 
     auto& args = instruction.arguments().get<Instruction::MemoryInitArgs>();
 
@@ -1963,6 +1965,9 @@ VALIDATE_INSTRUCTION(memory_init)
 
 VALIDATE_INSTRUCTION(data_drop)
 {
+    if (!m_context.data_count.has_value())
+        return Errors::invalid("data.drop, requires data count section"sv);
+
     auto index = instruction.arguments().get<DataIndex>();
     TRY(validate(index));