When `c_root_xattr_isize` is too large, `i_xattr_icount` will overflow,
resulting in silent corruption of the filesystem image. This patch performs
checks in advance and reports errors.
Fixes: 8f93c2f83962 ("erofs-utils: mkfs: support inline xattr reservation for rootdirs")
Signed-off-by: Hongzhen Luo <hongzhen@linux.alibaba.com>
Link: https://lore.kernel.org/r/20241127092825.4105724-1-hongzhen@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
list_del(&root->i_hash);
erofs_insert_ihash(root);
} else if (cfg.c_root_xattr_isize) {
+ if (cfg.c_root_xattr_isize > EROFS_XATTR_ALIGN(
+ UINT16_MAX - sizeof(struct erofs_xattr_entry))) {
+ erofs_err("Invalid configuration for c_root_xattr_isize: %u (too large)",
+ cfg.c_root_xattr_isize);
+ return -EINVAL;
+ }
root->xattr_isize = cfg.c_root_xattr_isize;
}