aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2016-12-05 17:36:45 +0000
committerNick Clifton <nickc@redhat.com>2016-12-05 17:36:45 +0000
commitf49547a604b4dd2c75e3636d4a422d52edc4fa6c (patch)
tree6880ec2de16241285915d476ff76eb04f1cd4c2a
parentFix ICE in assembler when passed a bogus input file. (diff)
downloadbinutils-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/ChangeLog4
-rw-r--r--gas/read.c12
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