]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PR gas/684
authorAlan Modra <amodra@gmail.com>
Thu, 20 Jan 2005 06:46:41 +0000 (06:46 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 20 Jan 2005 06:46:41 +0000 (06:46 +0000)
* read.c (s_incbin): Adjust default count for skip.  Check validity
of count and skip rigorously.

gas/ChangeLog
gas/read.c

index 41b654cea5757797987db0d90679ffcd44d5055e..572d8e00c3bdf1f1794895199f8090e75e762185 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-20  Alan Modra  <amodra@bigpond.net.au>
+
+       PR gas/684
+       * read.c (s_incbin): Adjust default count for skip.  Check validity
+       of count and skip rigorously.
+
 2005-01-19  Fred Fish  <fnf@specifixinc.com>
 
        * config/tc-mips.c (dummy_opcode): Add init for new struct member.
index e04e00c865fe3ec48922567a3ebe0868620038d5..daea0f9a071fda41c92f226c75d2fa785d168298 100644 (file)
@@ -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;
        }