Ah, my mistake. My test case did not have enough 66s. Now fixed; vex r1776 - a one byte change :-)
Index: priv/guest-amd64/toIR.c =================================================================== --- priv/guest-amd64/toIR.c (revision 1775) +++ priv/guest-amd64/toIR.c (working copy) @@ -8387,7 +8387,7 @@ as many invalid combinations as possible. */ n_prefixes = 0; while (True) { - if (n_prefixes > 5) goto decode_failure; + if (n_prefixes > 7) goto decode_failure; pre = getUChar(delta); switch (pre) { case 0x66: pfx |= PFX_66; break;
Ah, my mistake. My test case did not have enough 66s. Now fixed;
vex r1776 - a one byte change :-)
Index: priv/guest- amd64/toIR. c ======= ======= ======= ======= ======= ======= ======= ======= ==== amd64/toIR. c (revision 1775) amd64/toIR. c (working copy)
=======
--- priv/guest-
+++ priv/guest-
@@ -8387,7 +8387,7 @@
as many invalid combinations as possible. */
n_prefixes = 0;
while (True) {
- if (n_prefixes > 5) goto decode_failure;
+ if (n_prefixes > 7) goto decode_failure;
pre = getUChar(delta);
switch (pre) {
case 0x66: pfx |= PFX_66; break;