|
@@ -195,10 +195,13 @@ ext4_xattr_check_entries(struct ext4_xattr_entry *entry, void *end,
|
|
|
|
|
|
/* Check the values */
|
|
/* Check the values */
|
|
while (!IS_LAST_ENTRY(entry)) {
|
|
while (!IS_LAST_ENTRY(entry)) {
|
|
- if (entry->e_value_size != 0 &&
|
|
|
|
- entry->e_value_inum == 0) {
|
|
|
|
|
|
+ u32 size = le32_to_cpu(entry->e_value_size);
|
|
|
|
+
|
|
|
|
+ if (size > INT_MAX)
|
|
|
|
+ return -EFSCORRUPTED;
|
|
|
|
+
|
|
|
|
+ if (size != 0 && entry->e_value_inum == 0) {
|
|
u16 offs = le16_to_cpu(entry->e_value_offs);
|
|
u16 offs = le16_to_cpu(entry->e_value_offs);
|
|
- u32 size = le32_to_cpu(entry->e_value_size);
|
|
|
|
void *value;
|
|
void *value;
|
|
|
|
|
|
/*
|
|
/*
|