Unverified Commit bbebc423 by Stéphane Graber Committed by GitHub

Merge pull request #2900 from brauner/2019-03-11/2826

btrfs: ensure \0 byte at end
parents 7f240f47 317e6a83
...@@ -763,7 +763,6 @@ static int btrfs_recursive_destroy(const char *path) ...@@ -763,7 +763,6 @@ static int btrfs_recursive_destroy(const char *path)
int ret, e, i; int ret, e, i;
unsigned long off = 0; unsigned long off = 0;
u16 name_len; u16 name_len;
char *name;
char *tmppath; char *tmppath;
u64 dir_id; u64 dir_id;
...@@ -835,9 +834,22 @@ static int btrfs_recursive_destroy(const char *path) ...@@ -835,9 +834,22 @@ static int btrfs_recursive_destroy(const char *path)
* name of the child subvol in question. * name of the child subvol in question.
*/ */
if (sh.objectid != root_id && sh.type == BTRFS_ROOT_BACKREF_KEY) { if (sh.objectid != root_id && sh.type == BTRFS_ROOT_BACKREF_KEY) {
char *name, *tmp;
ref = (struct btrfs_root_ref *)(args.buf + off); ref = (struct btrfs_root_ref *)(args.buf + off);
name_len = btrfs_stack_root_ref_name_len(ref); name_len = btrfs_stack_root_ref_name_len(ref);
name = (char *)(ref + 1); tmp = (char *)(ref + 1);
name = malloc(name_len + 1);
if (!name) {
ERROR("Out of memory");
free_btrfs_tree(tree);
free(tmppath);
close(fd);
}
memcpy(name, tmp, name_len);
name[name_len] = '\0';
dir_id = btrfs_stack_root_ref_dirid(ref); dir_id = btrfs_stack_root_ref_dirid(ref);
tmppath = get_btrfs_subvol_path(fd, sh.offset, tmppath = get_btrfs_subvol_path(fd, sh.offset,
dir_id, name, name_len); dir_id, name, name_len);
...@@ -847,12 +859,14 @@ static int btrfs_recursive_destroy(const char *path) ...@@ -847,12 +859,14 @@ static int btrfs_recursive_destroy(const char *path)
name_len, tmppath)) { name_len, tmppath)) {
ERROR("Out of memory"); ERROR("Out of memory");
free_btrfs_tree(tree); free_btrfs_tree(tree);
free(name);
free(tmppath); free(tmppath);
close(fd); close(fd);
return -1; return -1;
} }
free(tmppath); free(tmppath);
free(name);
} }
off += sh.len; off += sh.len;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment