]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* util/misc.c (grub_util_get_image_size): Check for overflow.
authorVladimir Serbinenko <phcoder@gmail.com>
Sat, 21 Dec 2013 13:28:14 +0000 (14:28 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Sat, 21 Dec 2013 13:28:14 +0000 (14:28 +0100)
ChangeLog
util/misc.c

index ecf8ba19bba85c557a5691b4c5d0c48ad8e1af73..5ab866fbfa64330a2cfe669ecd2fa6472c4c3156 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-12-21  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * util/misc.c (grub_util_get_image_size): Check for overflow.
+
 2013-12-21  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/disk/raid6_recover.c (grub_raid_block_mulx): Use grub_size_t
index c5541ca95e3c027a7afa63b86ffa6477e6ecbd72..b0e023ecdc8214e2a67d33a79c05052e8736d3c9 100644 (file)
@@ -79,6 +79,7 @@ grub_util_get_image_size (const char *path)
 {
   FILE *f;
   size_t ret;
+  off_t sz;
 
   f = grub_util_fopen (path, "rb");
 
@@ -87,7 +88,10 @@ grub_util_get_image_size (const char *path)
 
   fseeko (f, 0, SEEK_END);
   
-  ret = ftello (f);
+  sz = ftello (f);
+  if (sz != (size_t) sz)
+    grub_util_error (_("file `%s' is too big"), path);
+  ret = (size_t) sz;
 
   fclose (f);