aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2024-09-20 04:06:38 -0700
committerAndrew Waterman <andrew@sifive.com>2024-09-20 04:06:38 -0700
commit6b74bd669dd596ddd1bc7ed611441278c3b0b1ec (patch)
treefb3681b249aea095e2dd3080b6a39193730b7930
parentbfe9173c284594cfa73c99eb0bcbd0a4e67d1076 (diff)
downloadriscv-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.cc2
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") {