diff --git a/tsk/fs/ext2fs.c b/tsk/fs/ext2fs.c index 9039b696a45ec3168dc2b76a7e759083974067c1..5ca571b2746b4a8875121894e9cc4e33ae7ed3da 100755 --- a/tsk/fs/ext2fs.c +++ b/tsk/fs/ext2fs.c @@ -637,7 +637,7 @@ ext4_load_attrs_inline(TSK_FS_FILE *fs_file, const uint8_t * ea_buf, size_t ea_b // The offset is from the beginning of the entries, i.e., four bytes into the buffer. uint16_t offset = tsk_getu16(fs_file->fs_info->endian, ea_entry->val_off); uint32_t size = tsk_getu32(fs_file->fs_info->endian, ea_entry->val_size); - if (4 + offset + size <= ea_buf_len) { + if ((ea_buf_len >= 4) && (offset < ea_buf_len - 4) && (size <= ea_buf_len - 4 - offset)) { ea_inline_data = &(ea_buf[4 + offset]); ea_inline_data_len = size; break;