Btrfs-progs: set string end sing '\0' for property
authorLiu Bo <bo.li.liu@oracle.com>
Fri, 25 Apr 2014 10:44:03 +0000 (18:44 +0800)
committerDavid Sterba <dsterba@suse.cz>
Fri, 2 May 2014 15:05:37 +0000 (17:05 +0200)
Set string "xattr_name" 's end with '\0' so that it won't be
violated in memory.

With this fix, xfstest/btrfs/048 can pass on my box.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Filipe Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
props.c

diff --git a/props.c b/props.c
index 04b9e5f..9fd612f 100644 (file)
--- a/props.c
+++ b/props.c
@@ -129,13 +129,14 @@ static int prop_compression(enum prop_object_type type,
                goto out;
        }
 
-       xattr_name = malloc(XATTR_BTRFS_PREFIX_LEN + strlen(name));
+       xattr_name = malloc(XATTR_BTRFS_PREFIX_LEN + strlen(name) + 1);
        if (!xattr_name) {
                ret = -ENOMEM;
                goto out;
        }
        memcpy(xattr_name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN);
        memcpy(xattr_name + XATTR_BTRFS_PREFIX_LEN, name, strlen(name));
+       xattr_name[XATTR_BTRFS_PREFIX_LEN + strlen(name)] = '\0';
 
        if (value)
                sret = fsetxattr(fd, xattr_name, value, strlen(value), 0);