From 1b2fc6dce265a1ff1657cbe43679305311f9e4cf Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 8 Apr 2021 14:55:50 -0700 Subject: Fuzzer: Do not assume table 0 is funcref, as initial content may include a non-funcref table (#3787) --- src/tools/fuzzing.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/tools/fuzzing.h b/src/tools/fuzzing.h index b5b7671cd..37c027088 100644 --- a/src/tools/fuzzing.h +++ b/src/tools/fuzzing.h @@ -424,6 +424,8 @@ private: } } + Name funcrefTableName; + // TODO(reference-types): allow the fuzzer to create multiple tables void setupTables() { // Ensure a funcref element segment and table exist. Segments with more @@ -441,6 +443,7 @@ private: tablePtr->hasExplicitName = true; table = wasm.addTable(std::move(tablePtr)); } + funcrefTableName = table->name; bool hasFuncrefElemSegment = std::any_of( wasm.elementSegments.begin(), wasm.elementSegments.end(), @@ -1494,7 +1497,7 @@ private: } // TODO: use a random table return builder.makeCallIndirect( - wasm.tables[0]->name, target, args, targetFn->sig, isReturn); + funcrefTableName, target, args, targetFn->sig, isReturn); } Expression* makeCallRef(Type type) { -- cgit v1.2.3