Commit d5b72ce1 authored by Phillip Lougher's avatar Phillip Lougher

Squashfs: Fix sanity check patches on big-endian systems

le64 values should be swapped when accessing on
big-endian systems.
Signed-off-by: default avatarPhillip Lougher <phillip@lougher.demon.co.uk>
parent d7f2ff67
...@@ -147,7 +147,7 @@ __le64 *squashfs_read_inode_lookup_table(struct super_block *sb, ...@@ -147,7 +147,7 @@ __le64 *squashfs_read_inode_lookup_table(struct super_block *sb,
* table[0] points to the first inode lookup table metadata block, * table[0] points to the first inode lookup table metadata block,
* this should be less than lookup_table_start * this should be less than lookup_table_start
*/ */
if (!IS_ERR(table) && table[0] >= lookup_table_start) { if (!IS_ERR(table) && le64_to_cpu(table[0]) >= lookup_table_start) {
kfree(table); kfree(table);
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
......
...@@ -90,7 +90,7 @@ __le64 *squashfs_read_fragment_index_table(struct super_block *sb, ...@@ -90,7 +90,7 @@ __le64 *squashfs_read_fragment_index_table(struct super_block *sb,
* table[0] points to the first fragment table metadata block, this * table[0] points to the first fragment table metadata block, this
* should be less than fragment_table_start * should be less than fragment_table_start
*/ */
if (!IS_ERR(table) && table[0] >= fragment_table_start) { if (!IS_ERR(table) && le64_to_cpu(table[0]) >= fragment_table_start) {
kfree(table); kfree(table);
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
......
...@@ -93,7 +93,7 @@ __le64 *squashfs_read_id_index_table(struct super_block *sb, ...@@ -93,7 +93,7 @@ __le64 *squashfs_read_id_index_table(struct super_block *sb,
* table[0] points to the first id lookup table metadata block, this * table[0] points to the first id lookup table metadata block, this
* should be less than id_table_start * should be less than id_table_start
*/ */
if (!IS_ERR(table) && table[0] >= id_table_start) { if (!IS_ERR(table) && le64_to_cpu(table[0]) >= id_table_start) {
kfree(table); kfree(table);
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
......
...@@ -245,7 +245,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -245,7 +245,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
msblk->id_table = NULL; msblk->id_table = NULL;
goto failed_mount; goto failed_mount;
} }
next_table = msblk->id_table[0]; next_table = le64_to_cpu(msblk->id_table[0]);
/* Handle inode lookup table */ /* Handle inode lookup table */
lookup_table_start = le64_to_cpu(sblk->lookup_table_start); lookup_table_start = le64_to_cpu(sblk->lookup_table_start);
...@@ -261,7 +261,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -261,7 +261,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
msblk->inode_lookup_table = NULL; msblk->inode_lookup_table = NULL;
goto failed_mount; goto failed_mount;
} }
next_table = msblk->inode_lookup_table[0]; next_table = le64_to_cpu(msblk->inode_lookup_table[0]);
sb->s_export_op = &squashfs_export_ops; sb->s_export_op = &squashfs_export_ops;
...@@ -286,7 +286,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -286,7 +286,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
msblk->fragment_index = NULL; msblk->fragment_index = NULL;
goto failed_mount; goto failed_mount;
} }
next_table = msblk->fragment_index[0]; next_table = le64_to_cpu(msblk->fragment_index[0]);
check_directory_table: check_directory_table:
/* Sanity check directory_table */ /* Sanity check directory_table */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment