From 0508a0b0ed164c353ac769d00b833bf623888a0c Mon Sep 17 00:00:00 2001 From: Aizal Khan Date: Mon, 5 Oct 2026 16:05:38 +0530 Subject: [PATCH] Don't discard validation failure in wasm2wat --generate-names ProgramMain assigned the GenerateNames result over a failed ValidateModule result, so with --generate-names an invalid module was applied names, written out and reported as success. Only generate names once the earlier steps have succeeded. --- src/tools/wasm2wat.cc | 2 +- test/binary/bad-init-expr-generate-names.txt | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 test/binary/bad-init-expr-generate-names.txt diff --git a/src/tools/wasm2wat.cc b/src/tools/wasm2wat.cc index 574557e332..e42ad6b6cf 100644 --- a/src/tools/wasm2wat.cc +++ b/src/tools/wasm2wat.cc @@ -119,7 +119,7 @@ int ProgramMain(int argc, char** argv) { result = ValidateModule(&module, &errors, options); } - if (s_generate_names) { + if (Succeeded(result) && s_generate_names) { result = GenerateNames(&module); } diff --git a/test/binary/bad-init-expr-generate-names.txt b/test/binary/bad-init-expr-generate-names.txt new file mode 100644 index 0000000000..680e4b8d7a --- /dev/null +++ b/test/binary/bad-init-expr-generate-names.txt @@ -0,0 +1,14 @@ +;;; TOOL: run-gen-wasm-bad +;;; ARGS2: --generate-names +magic +version +section(GLOBAL) { + count[1] + type[f32] mut[0] init_expr[local.get 0 end] +} +(;; STDERR ;;; +out/test/binary/bad-init-expr-generate-names/bad-init-expr-generate-names.wasm:000000f: error: invalid initializer: instruction not valid in initializer expression: local.get +out/test/binary/bad-init-expr-generate-names/bad-init-expr-generate-names.wasm:000000f: error: type mismatch in initializer expression, expected [f32] but got [] +out/test/binary/bad-init-expr-generate-names/bad-init-expr-generate-names.wasm:000000f: error: invalid initializer: instruction not valid in initializer expression: local.get +out/test/binary/bad-init-expr-generate-names/bad-init-expr-generate-names.wasm:000000f: error: type mismatch in initializer expression, expected [f32] but got [] +;;; STDERR ;;)