diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2011-07-14 03:16:00 +0000 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2011-08-01 14:30:45 -0400 |
commit | 77906a5075a4eb767026c2e07b1a412d08aea5be (patch) | |
tree | 0d7744a53a88c0e657ba727cd69e9b694d034772 | |
parent | b783e62d9620445d1ca3de76badf0468cdd329ba (diff) | |
download | op-kernel-dev-77906a5075a4eb767026c2e07b1a412d08aea5be.zip op-kernel-dev-77906a5075a4eb767026c2e07b1a412d08aea5be.tar.gz |
Btrfs: copy string correctly in INO_LOOKUP ioctl
Memory areas [ptr, ptr+total_len] and [name, name+total_len]
may overlap, so it's wrong to use memcpy().
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r-- | fs/btrfs/ioctl.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index fd252ff..2bb0886 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -1757,11 +1757,10 @@ static noinline int btrfs_search_path_in_tree(struct btrfs_fs_info *info, key.objectid = key.offset; key.offset = (u64)-1; dirid = key.objectid; - } if (ptr < name) goto out; - memcpy(name, ptr, total_len); + memmove(name, ptr, total_len); name[total_len]='\0'; ret = 0; out: |