diff options
author | Nick Clifton <nickc@redhat.com> | 2016-12-05 17:36:45 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2016-12-05 17:36:45 +0000 |
commit | f49547a604b4dd2c75e3636d4a422d52edc4fa6c (patch) | |
tree | 6880ec2de16241285915d476ff76eb04f1cd4c2a | |
parent | Fix ICE in assembler when passed a bogus input file. (diff) | |
download | binutils-gdb-f49547a604b4dd2c75e3636d4a422d52edc4fa6c.tar.gz binutils-gdb-f49547a604b4dd2c75e3636d4a422d52edc4fa6c.tar.bz2 binutils-gdb-f49547a604b4dd2c75e3636d4a422d52edc4fa6c.zip |
Fix fault in assembler when passed a bogus input file.
PR gas/20902
* read.c (next_char_of_string): Do end advance past the end of the
buffer.
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/read.c | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index a5622c7a32b..7a154558700 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,9 @@ 2016-12-05 Nick Clifton <nickc@redhat.com> + PR gas/20902 + * read.c (next_char_of_string): Do end advance past the end of the + buffer. + PR gas/20904 * as.h (SKIP_ALL_WHITESPACE): New macro. * expr.c (operand): Use it. diff --git a/gas/read.c b/gas/read.c index 2f756db862d..0cc0d2062ee 100644 --- a/gas/read.c +++ b/gas/read.c @@ -5533,6 +5533,12 @@ next_char_of_string (void) c = *input_line_pointer++ & CHAR_MASK; switch (c) { + case 0: + /* PR 20902: Do not advance past the end of the buffer. */ + -- input_line_pointer; + c = NOT_A_CHAR; + break; + case '\"': c = NOT_A_CHAR; break; @@ -5629,6 +5635,12 @@ next_char_of_string (void) bump_line_counters (); break; + case 0: + /* Do not advance past the end of the buffer. */ + -- input_line_pointer; + c = NOT_A_CHAR; + break; + default: #ifdef ONLY_STANDARD_ESCAPES |