summaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2013-09-17 13:57:21 +0000
committerNick Clifton <nickc@redhat.com>2013-09-17 13:57:21 +0000
commite1002d8cb7db72fc4ae22b886e7d4f9570549768 (patch)
treecfd3bc3fffc23cbad93a97243f08c1e144a65a37 /ld
parentf0f8e35bf1cdaa15425f1697a4181882b72473dd (diff)
downloadbinutils-redhat-e1002d8cb7db72fc4ae22b886e7d4f9570549768.tar.gz
PR ld/15957
* deffilep.y (def_file_add_directive): Avoid readin past end of buffer.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/deffilep.y19
2 files changed, 19 insertions, 6 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 1ae8a118e6..bc3e8da56b 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -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
diff --git a/ld/deffilep.y b/ld/deffilep.y
index 9121f8f59c..2dd21be8bb 100644
--- a/ld/deffilep.y
+++ b/ld/deffilep.y
@@ -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;