diff options
author | Joao Marcos Costa <joaomarcos.costa@bootlin.com> | 2020-08-19 18:28:41 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-08-24 14:11:31 -0400 |
commit | c9875a5fe85901b272c8e7db1b9bce513f02f1af (patch) | |
tree | 00b980dbf8219e20a4ee148702120a8afde6744d /fs/squashfs/sqfs_inode.c | |
parent | 6b0ddd1fbc6c8f7cbd0418e8a87d02404ad3dd9b (diff) |
fs/squashfs: Fix Coverity Scan defects
Fix defects such as uninitialized variables and untrusted pointer
operations. Most part of the tainted variables and the related defects
actually comes from Linux's macro get_unaligned_le**, extensively used
in SquashFS code. Add sanity checks for those variables.
Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com>
Diffstat (limited to 'fs/squashfs/sqfs_inode.c')
-rw-r--r-- | fs/squashfs/sqfs_inode.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/squashfs/sqfs_inode.c b/fs/squashfs/sqfs_inode.c index b037a9b2ac..1387779a85 100644 --- a/fs/squashfs/sqfs_inode.c +++ b/fs/squashfs/sqfs_inode.c @@ -138,11 +138,14 @@ void *sqfs_find_inode(void *inode_table, int inode_number, __le32 inode_count, int sqfs_read_metablock(unsigned char *file_mapping, int offset, bool *compressed, u32 *data_size) { - unsigned char *data; + const unsigned char *data; u16 header; data = file_mapping + offset; header = get_unaligned((u16 *)data); + if (!header || !data) + return -EINVAL; + *compressed = SQFS_COMPRESSED_METADATA(header); *data_size = SQFS_METADATA_SIZE(header); |