goto fix;
}
+ /* Value size cannot be larger than EA space in inode */
+ if (entry->e_value_offs > storage_size ||
+ entry->e_value_offs + entry->e_value_size > storage_size) {
+ problem = PR_1_INODE_EA_BAD_VALUE;
+ goto fix;
+ }
+
hash = ext2fs_ext_attr_hash_entry(entry,
start + entry->e_value_offs);
N_("@i %i, end of extent exceeds allowed value\n\t(logical @b %c, physical @b %b, len %N)\n"),
PROMPT_CLEAR, 0 },
-
/* Directory inode block <block> should be at block <otherblock> */
{ PR_1_COLLAPSE_DBLOCK,
N_("@d @i %i @b %b should be at @b %c. "),
N_("@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\nWill fix in pass 1B.\n"),
PROMPT_NONE, 0 },
+ /* Bad extended attribute value in inode */
+ { PR_1_INODE_EA_BAD_VALUE,
+ N_("@a in @i %i is corrupt (@n value)."),
+ PROMPT_CLEAR, 0},
+
/* Pass 1b errors */
/* Pass 1B: Rescan for duplicate/bad blocks */
/* Inode logical block is misaligned */
#define PR_1_MISALIGNED_CLUSTER 0x010074
+/* Bad extended attribute value in inode */
+#define PR_1_INODE_EA_BAD_VALUE 0x010080
+
/*
* Pass 1b errors
*/