mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +08:00
Stop the assembler from running out of memory when asked to generate a huge number of spaces.
PR gas/20901 * read.c (s_space): Place an upper limit on the number of spaces generated.
This commit is contained in:
@ -1,5 +1,9 @@
|
||||
2016-12-06 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR gas/20901
|
||||
* read.c (s_space): Place an upper limit on the number of spaces
|
||||
generated.
|
||||
|
||||
PR gas/20896
|
||||
* testsuite/gas/mmix/err-byte1.s: Adjust expected warning messages
|
||||
to account for patch to next_char_of_string.
|
||||
|
19
gas/read.c
19
gas/read.c
@ -3394,11 +3394,20 @@ s_space (int mult)
|
||||
{
|
||||
offsetT i;
|
||||
|
||||
if (mult == 0)
|
||||
mult = 1;
|
||||
bytes = mult * exp.X_add_number;
|
||||
for (i = 0; i < exp.X_add_number; i++)
|
||||
emit_expr (&val, mult);
|
||||
/* PR 20901: Check for excessive values.
|
||||
FIXME: 1<<10 is an arbitrary limit. Maybe use maxpagesize instead ? */
|
||||
if (exp.X_add_number < 0 || exp.X_add_number > (1 << 10))
|
||||
as_bad (_("size value for s_space directive too large: %lx"),
|
||||
(long) exp.X_add_number);
|
||||
else
|
||||
{
|
||||
if (mult == 0)
|
||||
mult = 1;
|
||||
bytes = mult * exp.X_add_number;
|
||||
|
||||
for (i = 0; i < exp.X_add_number; i++)
|
||||
emit_expr (&val, mult);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user