PR ld/15957
authorNick Clifton <nickc@redhat.com>
Tue, 17 Sep 2013 13:57:21 +0000 (13:57 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 17 Sep 2013 13:57:21 +0000 (13:57 +0000)
* deffilep.y (def_file_add_directive): Avoid readin past end of
buffer.

ld/ChangeLog
ld/deffilep.y

index 1ae8a11..bc3e8da 100644 (file)
@@ -1,3 +1,9 @@
+2013-09-17  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/15957
+       * deffilep.y (def_file_add_directive): Avoid readin past end of
+       buffer.
+
 2013-08-28  Nick Clifton  <nickc@redhat.com>
 
        PR ld/15896
index 9121f8f..2dd21be 100644 (file)
@@ -934,13 +934,20 @@ def_file_add_directive (def_file *my_def, const char *param, int len)
 
       if (!diropts[i].param)
        {
-         char saved;
+         if (tend < pend)
+           {
+             char saved;
 
-         saved = * tend;
-         * tend = 0;
-         /* xgettext:c-format */
-         einfo (_("Warning: .drectve `%s' unrecognized\n"), param);
-         * tend = saved;
+             saved = * tend;
+             * tend = 0;
+             /* xgettext:c-format */
+             einfo (_("Warning: .drectve `%s' unrecognized\n"), param);
+             * tend = saved;
+           }
+         else
+           {
+             einfo (_("Warning: corrupt .drectve at end of def file\n"));
+           }
        }
 
       lex_parse_string = 0;