mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
ANDROID: squashfs: Fix endianness issue
Code in squashfs_process_blocks was not correctly assigning length. Casting to u16* introduced endianness issues on some architectures. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 35257858 Change-Id: I9efaef4bc531b7469de79cf94738ade2dd6e6a8c
This commit is contained in:
committed by
Amit Pundir
parent
2d616f8cea
commit
a564a0755f
@@ -121,11 +121,12 @@ static void squashfs_process_blocks(struct squashfs_read_request *req)
|
||||
|
||||
if (req->data_processing == SQUASHFS_METADATA) {
|
||||
/* Extract the length of the metadata block */
|
||||
if (req->offset != msblk->devblksize - 1)
|
||||
length = *((u16 *)(bh[0]->b_data + req->offset));
|
||||
else {
|
||||
length = bh[0]->b_data[req->offset];
|
||||
length |= bh[1]->b_data[0] << 8;
|
||||
if (req->offset != msblk->devblksize - 1) {
|
||||
length = le16_to_cpup((__le16 *)
|
||||
(bh[0]->b_data + req->offset));
|
||||
} else {
|
||||
length = (unsigned char)bh[0]->b_data[req->offset];
|
||||
length |= (unsigned char)bh[1]->b_data[0] << 8;
|
||||
}
|
||||
req->compressed = SQUASHFS_COMPRESSED(length);
|
||||
req->data_processing = req->compressed ? SQUASHFS_DECOMPRESS
|
||||
|
||||
Reference in New Issue
Block a user