From 4cf6be1bd920a32ff39c477bbb7a30560d36d4dc Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Tue, 22 May 2012 08:38:17 +0200 Subject: [PATCH] * grub-core/fs/squash4.c (grub_squash_read_data): Add missing byte-swap. --- ChangeLog | 4 ++++ grub-core/fs/squash4.c | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 957b14104..b064e6c31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2012-05-22 Vladimir Serbinenko + + * grub-core/fs/squash4.c (grub_squash_read_data): Add missing byte-swap. + 2012-05-22 Vladimir Serbinenko * grub-core/fs/reiserfs.c (grub_reiserfs_iterate_dir): Fix size byteswap diff --git a/grub-core/fs/squash4.c b/grub-core/fs/squash4.c index 6516c6287..c46d29e69 100644 --- a/grub-core/fs/squash4.c +++ b/grub-core/fs/squash4.c @@ -856,7 +856,7 @@ grub_squash_read_data (struct grub_squash_data *data, if (err) return -1; a += grub_le_to_cpu64 (frag.offset); - compressed = !(frag.size & SQUASH_BLOCK_UNCOMPRESSED); + compressed = !(frag.size & grub_cpu_to_le32_compile_time (SQUASH_BLOCK_UNCOMPRESSED)); if (ino->ino.type == grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_REGULAR)) b = grub_le_to_cpu32 (ino->ino.long_file.offset) + off; else @@ -866,19 +866,20 @@ grub_squash_read_data (struct grub_squash_data *data, if (compressed) { char *block; - block = grub_malloc (frag.size); + block = grub_malloc (grub_le_to_cpu32 (frag.size)); if (!block) return -1; err = grub_disk_read (data->disk, a >> GRUB_DISK_SECTOR_BITS, a & (GRUB_DISK_SECTOR_SIZE - 1), - frag.size, block); + grub_le_to_cpu32 (frag.size), block); if (err) { grub_free (block); return -1; } - if (data->decompress (block, frag.size, b, buf, len, data) + if (data->decompress (block, grub_le_to_cpu32 (frag.size), + b, buf, len, data) != (grub_ssize_t) len) { grub_free (block);