From: Vladimir 'phcoder' Serbinenko Date: Wed, 25 Apr 2012 23:16:25 +0000 (+0200) Subject: * grub-core/fs/squash4.c (lzo_decompress): Set grub_errno on error. X-Git-Tag: 2.00~299 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b282dfe5ac479dbb2c3ec2b06d84f1c54c7404d0;p=thirdparty%2Fgrub.git * grub-core/fs/squash4.c (lzo_decompress): Set grub_errno on error. Allocate at lest 8192 for temporary buffer as required for lzo. --- diff --git a/ChangeLog b/ChangeLog index 9e1cb20ba..5ae3106a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-04-25 Vladimir Serbinenko + + * 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 * grub-core/fs/fat.c (grub_fat_mount): Don't add logical_sector_bits diff --git a/grub-core/fs/squash4.c b/grub-core/fs/squash4.c index 06fac32df..ae4be35e4 100644 --- a/grub-core/fs/squash4.c +++ b/grub-core/fs/squash4.c @@ -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; }