BR3064376: ndisasm crash
authorCyrill Gorcunov <gorcunov@gmail.com>
Sun, 12 Sep 2010 09:37:53 +0000 (13:37 +0400)
committerCyrill Gorcunov <gorcunov@gmail.com>
Wed, 15 Sep 2010 17:12:52 +0000 (21:12 +0400)
ndisasm may crash due to lack of check of VEX table index.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
disasm.c

index ba282d3..6320852 100644 (file)
--- a/disasm.c
+++ b/disasm.c
@@ -1102,7 +1102,7 @@ int32_t disasm(uint8_t *data, char *output, int outbufsize, int segsize,
                prefix.vex_v = (~prefix.vex[2] >> 3) & 15;
                prefix.vex_lp = prefix.vex[2] & 7;
 
-               ix = itable_vex[RV_XOP][prefix.vex_m][prefix.vex_lp];
+               ix = itable_vex[RV_XOP][prefix.vex_m][prefix.vex_lp & 3];
            }
            end_prefix = true;
            break;