From: Ivo Raisr Date: Mon, 15 May 2017 08:15:22 +0000 (+0000) Subject: Fix decoding failure in X86 VEX frontend. X-Git-Tag: svn/VALGRIND_3_13_0^2~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85a84649674e0a5cb99412476c6f614bdd5395f1;p=thirdparty%2Fvalgrind.git Fix decoding failure in X86 VEX frontend. Fixes BZ#379838. Patch by: Julian Seward git-svn-id: svn://svn.valgrind.org/vex/trunk@3370 --- diff --git a/VEX/priv/guest_x86_toIR.c b/VEX/priv/guest_x86_toIR.c index ca5998fcea..e2fc274e7d 100644 --- a/VEX/priv/guest_x86_toIR.c +++ b/VEX/priv/guest_x86_toIR.c @@ -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;