]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix decoding failure in X86 VEX frontend.
authorIvo Raisr <ivosh@ivosh.net>
Mon, 15 May 2017 08:15:22 +0000 (08:15 +0000)
committerIvo Raisr <ivosh@ivosh.net>
Mon, 15 May 2017 08:15:22 +0000 (08:15 +0000)
Fixes BZ#379838.
Patch by: Julian Seward <jseward@acm.org>

git-svn-id: svn://svn.valgrind.org/vex/trunk@3370

VEX/priv/guest_x86_toIR.c

index ca5998fcea4bfb5b178d74213486ceee63433c13..e2fc274e7d915680f69f7df26f7c15985c4cc9d0 100644 (file)
@@ -15319,11 +15319,11 @@ DisResult disInstr_X86_WRK (
              see it (pass-through semantics).  I can't see any way to
              construct a faked-up value, so don't bother to try. */
          modrm = getUChar(delta);
-         addr = disAMode ( &alen, sorb, delta, dis_buf );
-         delta += alen;
          if (epartIsReg(modrm)) goto decode_failure;
          if (gregOfRM(modrm) != 0 && gregOfRM(modrm) != 1)
             goto decode_failure;
+         addr = disAMode ( &alen, sorb, delta, dis_buf );
+         delta += alen;
          switch (gregOfRM(modrm)) {
             case 0: DIP("sgdt %s\n", dis_buf); break;
             case 1: DIP("sidt %s\n", dis_buf); break;