diff options
| author | Phillip Lougher <phillip@lougher.demon.co.uk> | 2011-05-28 19:38:46 -0400 |
|---|---|---|
| committer | Phillip Lougher <phillip@lougher.demon.co.uk> | 2011-05-29 05:03:09 -0400 |
| commit | d5b72ce15ea99a0b8f0d1973074c584daf92d70e (patch) | |
| tree | ead92ef8a1251f6e1bffd62bd9de9d98daa6c7a2 | |
| parent | d7f2ff6718efa155fd92e481a5960496d084c63f (diff) | |
Squashfs: Fix sanity check patches on big-endian systems
le64 values should be swapped when accessing on
big-endian systems.
Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
| -rw-r--r-- | fs/squashfs/export.c | 2 | ||||
| -rw-r--r-- | fs/squashfs/fragment.c | 2 | ||||
| -rw-r--r-- | fs/squashfs/id.c | 2 | ||||
| -rw-r--r-- | fs/squashfs/super.c | 6 |
4 files changed, 6 insertions, 6 deletions
diff --git a/fs/squashfs/export.c b/fs/squashfs/export.c index 730c56248c9b..5e1101ff276f 100644 --- a/fs/squashfs/export.c +++ b/fs/squashfs/export.c | |||
| @@ -147,7 +147,7 @@ __le64 *squashfs_read_inode_lookup_table(struct super_block *sb, | |||
| 147 | * table[0] points to the first inode lookup table metadata block, | 147 | * table[0] points to the first inode lookup table metadata block, |
| 148 | * this should be less than lookup_table_start | 148 | * this should be less than lookup_table_start |
| 149 | */ | 149 | */ |
| 150 | if (!IS_ERR(table) && table[0] >= lookup_table_start) { | 150 | if (!IS_ERR(table) && le64_to_cpu(table[0]) >= lookup_table_start) { |
| 151 | kfree(table); | 151 | kfree(table); |
| 152 | return ERR_PTR(-EINVAL); | 152 | return ERR_PTR(-EINVAL); |
| 153 | } | 153 | } |
diff --git a/fs/squashfs/fragment.c b/fs/squashfs/fragment.c index 1516a6490bfb..0ed6edbc5c71 100644 --- a/fs/squashfs/fragment.c +++ b/fs/squashfs/fragment.c | |||
| @@ -90,7 +90,7 @@ __le64 *squashfs_read_fragment_index_table(struct super_block *sb, | |||
| 90 | * table[0] points to the first fragment table metadata block, this | 90 | * table[0] points to the first fragment table metadata block, this |
| 91 | * should be less than fragment_table_start | 91 | * should be less than fragment_table_start |
| 92 | */ | 92 | */ |
| 93 | if (!IS_ERR(table) && table[0] >= fragment_table_start) { | 93 | if (!IS_ERR(table) && le64_to_cpu(table[0]) >= fragment_table_start) { |
| 94 | kfree(table); | 94 | kfree(table); |
| 95 | return ERR_PTR(-EINVAL); | 95 | return ERR_PTR(-EINVAL); |
| 96 | } | 96 | } |
diff --git a/fs/squashfs/id.c b/fs/squashfs/id.c index a70858e0fb44..d38ea3dab951 100644 --- a/fs/squashfs/id.c +++ b/fs/squashfs/id.c | |||
| @@ -93,7 +93,7 @@ __le64 *squashfs_read_id_index_table(struct super_block *sb, | |||
| 93 | * table[0] points to the first id lookup table metadata block, this | 93 | * table[0] points to the first id lookup table metadata block, this |
| 94 | * should be less than id_table_start | 94 | * should be less than id_table_start |
| 95 | */ | 95 | */ |
| 96 | if (!IS_ERR(table) && table[0] >= id_table_start) { | 96 | if (!IS_ERR(table) && le64_to_cpu(table[0]) >= id_table_start) { |
| 97 | kfree(table); | 97 | kfree(table); |
| 98 | return ERR_PTR(-EINVAL); | 98 | return ERR_PTR(-EINVAL); |
| 99 | } | 99 | } |
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index 6f26abee3597..7438850c62d0 100644 --- a/fs/squashfs/super.c +++ b/fs/squashfs/super.c | |||
| @@ -245,7 +245,7 @@ allocate_id_index_table: | |||
| 245 | msblk->id_table = NULL; | 245 | msblk->id_table = NULL; |
| 246 | goto failed_mount; | 246 | goto failed_mount; |
| 247 | } | 247 | } |
| 248 | next_table = msblk->id_table[0]; | 248 | next_table = le64_to_cpu(msblk->id_table[0]); |
| 249 | 249 | ||
| 250 | /* Handle inode lookup table */ | 250 | /* Handle inode lookup table */ |
| 251 | lookup_table_start = le64_to_cpu(sblk->lookup_table_start); | 251 | lookup_table_start = le64_to_cpu(sblk->lookup_table_start); |
| @@ -261,7 +261,7 @@ allocate_id_index_table: | |||
| 261 | msblk->inode_lookup_table = NULL; | 261 | msblk->inode_lookup_table = NULL; |
| 262 | goto failed_mount; | 262 | goto failed_mount; |
| 263 | } | 263 | } |
| 264 | next_table = msblk->inode_lookup_table[0]; | 264 | next_table = le64_to_cpu(msblk->inode_lookup_table[0]); |
| 265 | 265 | ||
| 266 | sb->s_export_op = &squashfs_export_ops; | 266 | sb->s_export_op = &squashfs_export_ops; |
| 267 | 267 | ||
| @@ -286,7 +286,7 @@ handle_fragments: | |||
| 286 | msblk->fragment_index = NULL; | 286 | msblk->fragment_index = NULL; |
| 287 | goto failed_mount; | 287 | goto failed_mount; |
| 288 | } | 288 | } |
| 289 | next_table = msblk->fragment_index[0]; | 289 | next_table = le64_to_cpu(msblk->fragment_index[0]); |
| 290 | 290 | ||
| 291 | check_directory_table: | 291 | check_directory_table: |
| 292 | /* Sanity check directory_table */ | 292 | /* Sanity check directory_table */ |
