mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2026-08-27 00:26:02 -04:00
PR 32721, internal error in tc-i386.c:parse_register
pr30117 showed one of the assertions added by 4d1bb7955a was too
strict. oss-fuzz also found the second assertion to be too strict,
with this testcase distilled from 7k of garbage source:
A=%eax%%!
Y=A
Z=A
or $6,Z
PR 32721
* config/tc-i386.c (parse_register): Move "know" into
condition. Simplify.
This commit is contained in:
parent
d08ab84d89
commit
46b9f07dfe
1 changed files with 2 additions and 3 deletions
|
|
@ -16838,10 +16838,9 @@ parse_register (const char *reg_string, char **end_op)
|
|||
{
|
||||
const expressionS *e = symbol_get_value_expression (symbolP);
|
||||
|
||||
if (e->X_op == O_register)
|
||||
if (e->X_op == O_register
|
||||
&& (valueT) e->X_add_number < i386_regtab_size)
|
||||
{
|
||||
know (e->X_add_number >= 0
|
||||
&& (valueT) e->X_add_number < i386_regtab_size);
|
||||
r = i386_regtab + e->X_add_number;
|
||||
*end_op = (char *) reg_string + (input_line_pointer - buf);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue