diff options
author | Keith Winstein <keithw@cs.stanford.edu> | 2022-04-13 15:17:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-13 15:17:13 -0700 |
commit | 39022f8cd717ec5f219c56f4ebd07f016c457afc (patch) | |
tree | 6e47ae6c85a0c0a1d64f85124043b7fe5799cda8 /src | |
parent | d08b0d9fd2b76325b09308268e14969f923ff1fe (diff) | |
download | wabt-39022f8cd717ec5f219c56f4ebd07f016c457afc.tar.gz wabt-39022f8cd717ec5f219c56f4ebd07f016c457afc.tar.bz2 wabt-39022f8cd717ec5f219c56f4ebd07f016c457afc.zip |
update br_table validation rule + enforce module validity in spectest-interp (#1895)
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/spectest-interp.cc | 7 | ||||
-rw-r--r-- | src/type-checker.cc | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/tools/spectest-interp.cc b/src/tools/spectest-interp.cc index 97044010..45775268 100644 --- a/src/tools/spectest-interp.cc +++ b/src/tools/spectest-interp.cc @@ -1274,7 +1274,7 @@ wabt::Result CommandRunner::Run(const Script& script) { for (const CommandPtr& command : script.commands) { switch (command->type) { case CommandType::Module: - OnModuleCommand(cast<ModuleCommand>(command.get())); + TallyCommand(OnModuleCommand(cast<ModuleCommand>(command.get()))); break; case CommandType::Action: @@ -1282,7 +1282,10 @@ wabt::Result CommandRunner::Run(const Script& script) { break; case CommandType::Register: - OnRegisterCommand(cast<RegisterCommand>(command.get())); + if (Failed(OnRegisterCommand(cast<RegisterCommand>(command.get())))) { + PrintError(command->line, "invalid register command"); + return wabt::Result::Error; + } break; case CommandType::AssertMalformed: diff --git a/src/type-checker.cc b/src/type-checker.cc index eb23446f..7282c5b2 100644 --- a/src/type-checker.cc +++ b/src/type-checker.cc @@ -491,7 +491,7 @@ Result TypeChecker::OnBrTableTarget(Index depth) { if (br_table_sig_ == nullptr) { br_table_sig_ = &label_sig; } else { - if (*br_table_sig_ != label_sig) { + if (br_table_sig_->size() != label_sig.size()) { result |= Result::Error; PrintError("br_table labels have inconsistent types: expected %s, got %s", TypesToString(*br_table_sig_).c_str(), |