]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix incorrect behaviour of mov{s,z}bw (#126253).
authorJulian Seward <jseward@acm.org>
Wed, 3 May 2006 17:57:15 +0000 (17:57 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 3 May 2006 17:57:15 +0000 (17:57 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1607

VEX/priv/guest-x86/toIR.c

index 7532404166a5a93e6dc8c52bb09374b8424cb7cd..38fd1884a753975bb20e1fb183ff3919976d5ef1 100644 (file)
@@ -12340,16 +12340,26 @@ DisResult disInstr_X86_WRK (
       /* =-=-=-=-=-=-=-=-=- MOVZX, MOVSX =-=-=-=-=-=-=-= */
 
       case 0xB6: /* MOVZXb Eb,Gv */
-         delta = dis_movx_E_G ( sorb, delta, 1, 4, False );
+         if (sz != 2 && sz != 4)
+            goto decode_failure;
+         delta = dis_movx_E_G ( sorb, delta, 1, sz, False );
          break;
+
       case 0xB7: /* MOVZXw Ew,Gv */
+         if (sz != 4)
+            goto decode_failure;
          delta = dis_movx_E_G ( sorb, delta, 2, 4, False );
          break;
 
       case 0xBE: /* MOVSXb Eb,Gv */
-         delta = dis_movx_E_G ( sorb, delta, 1, 4, True );
+         if (sz != 2 && sz != 4)
+            goto decode_failure;
+         delta = dis_movx_E_G ( sorb, delta, 1, sz, True );
          break;
+
       case 0xBF: /* MOVSXw Ew,Gv */
+         if (sz != 4)
+            goto decode_failure;
          delta = dis_movx_E_G ( sorb, delta, 2, 4, True );
          break;