diff options
author | Andrew Waterman <andrew@sifive.com> | 2024-09-20 04:06:38 -0700 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2024-09-20 04:06:38 -0700 |
commit | 6b74bd669dd596ddd1bc7ed611441278c3b0b1ec (patch) | |
tree | fb3681b249aea095e2dd3080b6a39193730b7930 | |
parent | bfe9173c284594cfa73c99eb0bcbd0a4e67d1076 (diff) | |
download | riscv-isa-sim-6b74bd669dd596ddd1bc7ed611441278c3b0b1ec.zip riscv-isa-sim-6b74bd669dd596ddd1bc7ed611441278c3b0b1ec.tar.gz riscv-isa-sim-6b74bd669dd596ddd1bc7ed611441278c3b0b1ec.tar.bz2 |
Validate Zvl ISA string correctly
See #1810 for explanation of how this can go wrong.
Resolves #1810
-rw-r--r-- | disasm/isa_parser.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/disasm/isa_parser.cc b/disasm/isa_parser.cc index 54dbf65..a1b1785 100644 --- a/disasm/isa_parser.cc +++ b/disasm/isa_parser.cc @@ -331,7 +331,7 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) } catch (std::logic_error& e) { new_vlen = 0; } - if ((new_vlen & (new_vlen - 1)) != 0 || new_vlen < 32) + if ((new_vlen & (new_vlen - 1)) != 0 || new_vlen < 32 || ext_str.back() != 'b') bad_isa_string(str, ("Invalid Zvl string: " + ext_str).c_str()); vlen = std::max(vlen, new_vlen); } else if (ext_str.substr(0, 3) == "zve") { |