From b282dfe5ac479dbb2c3ec2b06d84f1c54c7404d0 Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Thu, 26 Apr 2012 01:16:25 +0200 Subject: [PATCH] * grub-core/fs/squash4.c (lzo_decompress): Set grub_errno on error. Allocate at lest 8192 for temporary buffer as required for lzo. --- ChangeLog | 5 +++++ grub-core/fs/squash4.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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; }