From: Su Yue Date: Tue, 6 Jun 2017 09:57:08 +0000 (+0800) Subject: btrfs: Verify dir_item in iterate_object_props X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=fbc326159a01104db6163bc8e5f0a4c0ab11864d;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c index d6cb155ef7a1..4b23ae5d0e5c 100644 --- a/fs/btrfs/props.c +++ b/fs/btrfs/props.c @@ -164,6 +164,7 @@ static int iterate_object_props(struct btrfs_root *root, size_t), void *ctx) { + struct btrfs_fs_info *fs_info = root->fs_info; int ret; char *name_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); 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 || memcmp_extent_buffer(leaf, XATTR_BTRFS_PREFIX, name_ptr,