btrfs: Verify dir_item in iterate_object_props
Call verify_dir_item before memcmp_extent_buffer reading name from dir_item. Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
64c7b01446
commit
fbc326159a
|
@ -164,6 +164,7 @@ static int iterate_object_props(struct btrfs_root *root,
|
||||||
size_t),
|
size_t),
|
||||||
void *ctx)
|
void *ctx)
|
||||||
{
|
{
|
||||||
|
struct btrfs_fs_info *fs_info = root->fs_info;
|
||||||
int ret;
|
int ret;
|
||||||
char *name_buf = NULL;
|
char *name_buf = NULL;
|
||||||
char *value_buf = NULL;
|
char *value_buf = NULL;
|
||||||
|
@ -214,6 +215,12 @@ static int iterate_object_props(struct btrfs_root *root,
|
||||||
name_ptr = (unsigned long)(di + 1);
|
name_ptr = (unsigned long)(di + 1);
|
||||||
data_ptr = name_ptr + name_len;
|
data_ptr = name_ptr + name_len;
|
||||||
|
|
||||||
|
if (verify_dir_item(fs_info, leaf,
|
||||||
|
path->slots[0], di)) {
|
||||||
|
ret = -EIO;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (name_len <= XATTR_BTRFS_PREFIX_LEN ||
|
if (name_len <= XATTR_BTRFS_PREFIX_LEN ||
|
||||||
memcmp_extent_buffer(leaf, XATTR_BTRFS_PREFIX,
|
memcmp_extent_buffer(leaf, XATTR_BTRFS_PREFIX,
|
||||||
name_ptr,
|
name_ptr,
|
||||||
|
|
Loading…
Reference in New Issue