aboutsummaryrefslogtreecommitdiff
path: root/gas/read.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2005-01-20 06:46:41 +0000
committerAlan Modra <amodra@gmail.com>2005-01-20 06:46:41 +0000
commitc556cc9c6d052eef25dbb030a297cc0e204ba5c7 (patch)
tree08cb030f8cc153c6578c37241412224b50d43432 /gas/read.c
parentd17d003345eb4816548ff9da5c97fb7a76df714e (diff)
downloadfsf-binutils-gdb-c556cc9c6d052eef25dbb030a297cc0e204ba5c7.zip
fsf-binutils-gdb-c556cc9c6d052eef25dbb030a297cc0e204ba5c7.tar.gz
fsf-binutils-gdb-c556cc9c6d052eef25dbb030a297cc0e204ba5c7.tar.bz2
PR gas/684
* read.c (s_incbin): Adjust default count for skip. Check validity of count and skip rigorously.
Diffstat (limited to 'gas/read.c')
-rw-r--r--gas/read.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gas/read.c b/gas/read.c
index e04e00c..daea0f9 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -5000,13 +5000,13 @@ s_incbin (int x ATTRIBUTE_UNUSED)
}
file_len = ftell (binfile);
- /* If a count was not specified use the size of the file. */
+ /* If a count was not specified use the remainder of the file. */
if (count == 0)
- count = file_len;
+ count = file_len - skip;
- if (skip + count > file_len)
+ if (skip < 0 || count < 0 || file_len < 0 || skip + count > file_len)
{
- as_bad (_("skip (%ld) + count (%ld) larger than file size (%ld)"),
+ as_bad (_("skip (%ld) or count (%ld) invalid for file size (%ld)"),
skip, count, file_len);
goto done;
}