]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/squash4.c (lzo_decompress): Set grub_errno on error.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 25 Apr 2012 23:16:25 +0000 (01:16 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 25 Apr 2012 23:16:25 +0000 (01:16 +0200)
Allocate at lest 8192 for temporary buffer as required for lzo.

ChangeLog
grub-core/fs/squash4.c

index 9e1cb20ba05e54adea99019fe98700c3c77a07d0..5ae3106a6734bd5572ac5ab6142ace2f7ef718f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-25  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/squash4.c (lzo_decompress): Set grub_errno on error.
+       Allocate at lest 8192 for temporary buffer as required for lzo.
+
 2012-04-25  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/fat.c (grub_fat_mount): Don't add logical_sector_bits
index 06fac32df29e04f358f1dd744475b93fa1c20712..ae4be35e4471e89bd309bc4d9169786fc6b5a640 100644 (file)
@@ -298,13 +298,17 @@ lzo_decompress (char *inbuf, grub_size_t insize, grub_off_t off,
   lzo_uint usize = data->blksz;
   grub_uint8_t *udata;
 
-  udata = grub_malloc (data->blksz);
+  if (usize < 8192)
+    usize = 8192;
+
+  udata = grub_malloc (usize);
   if (!udata)
     return -1;
 
   if (lzo1x_decompress_safe ((grub_uint8_t *) inbuf,
                             insize, udata, &usize, NULL) != LZO_E_OK)
     {
+      grub_error (GRUB_ERR_BAD_FS, "incorrect compressed chunk");
       grub_free (udata);
       return -1;
     }