Fix fault in assembler when passed a bogus input file.
authorNick Clifton <nickc@redhat.com>
Mon, 5 Dec 2016 17:36:45 +0000 (17:36 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 5 Dec 2016 17:36:45 +0000 (17:36 +0000)
PR gas/20902
* read.c (next_char_of_string): Do end advance past the end of the
buffer.

gas/ChangeLog
gas/read.c

index a5622c7a32b70589366eb1ff369a925cdf9cab5e..7a154558700f7017ec61e51805d23788de85534c 100644 (file)
@@ -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.
index 2f756db862d20170aa071cf387caaf518954037b..0cc0d2062eece690e9f22108806f9ed576b7f12c 100644 (file)
@@ -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