Return bad_opcode on unknown bits in opcode.

2010-04-16  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-dis.c (get_valid_dis386): Return bad_opcode on unknown
	bits in opcode.
This commit is contained in:
H.J. Lu 2010-04-16 21:35:24 +00:00
parent f90824dcbc
commit f07af43e36
2 changed files with 22 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2010-04-16 H.J. Lu <hongjiu.lu@intel.com>
* i386-dis.c (get_valid_dis386): Return bad_opcode on unknown
bits in opcode.
2010-04-09 Nick Clifton <nickc@redhat.com>
* i386-dis.c (print_insn): Remove unused variable op.

View File

@ -11058,7 +11058,9 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
switch ((*codep & 0x1f))
{
default:
BadOp ();
dp = &bad_opcode;
return dp;
break;
case 0x8:
vex_table_index = XOP_08;
break;
@ -11077,7 +11079,10 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
vex.register_specifier = (~(*codep >> 3)) & 0xf;
if (address_mode != mode_64bit
&& vex.register_specifier > 0x7)
BadOp ();
{
dp = &bad_opcode;
return dp;
}
vex.length = (*codep & 0x4) ? 256 : 128;
switch ((*codep & 0x3))
@ -11115,7 +11120,8 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
switch ((*codep & 0x1f))
{
default:
BadOp ();
dp = &bad_opcode;
return dp;
case 0x1:
vex_table_index = VEX_0F;
break;
@ -11134,7 +11140,10 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
vex.register_specifier = (~(*codep >> 3)) & 0xf;
if (address_mode != mode_64bit
&& vex.register_specifier > 0x7)
BadOp ();
{
dp = &bad_opcode;
return dp;
}
vex.length = (*codep & 0x4) ? 256 : 128;
switch ((*codep & 0x3))
@ -11176,7 +11185,10 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
vex.register_specifier = (~(*codep >> 3)) & 0xf;
if (address_mode != mode_64bit
&& vex.register_specifier > 0x7)
BadOp ();
{
dp = &bad_opcode;
return dp;
}
vex.w = 0;