diff options
author | David Sterba <dsterba@suse.com> | 2017-09-29 15:23:35 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-10-06 13:23:44 +0200 |
commit | d07e349800b8a100e049465666b2382613281a8c (patch) | |
tree | 2c47c6a59e9bec29e7b8bf0d2cdf56956ba994cb | |
parent | fe667f6e7d0a3215bf671bfd70b0eb18d6e9c1a6 (diff) |
btrfs-progs: mkfs: use existing helper for path concatenation
Mkfs uses make_path that is duplicate of path_cat* functions, so we can
switch to them and add the error handling.
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | mkfs/main.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/mkfs/main.c b/mkfs/main.c index 52bb1dad..5987a963 100644 --- a/mkfs/main.c +++ b/mkfs/main.c @@ -47,6 +47,8 @@ #include "mkfs/common.h" #include "fsfeatures.h" +int path_cat_out(char *out, const char *p1, const char *p2); + static u64 index_cnt = 2; static int verbose = 1; @@ -941,14 +943,28 @@ static int traverse_directory(struct btrfs_trans_handle *trans, } if (S_ISDIR(st.st_mode)) { + char tmp[PATH_MAX]; + dir_entry = malloc(sizeof(struct directory_name_entry)); if (!dir_entry) { ret = -ENOMEM; goto fail; } dir_entry->dir_name = cur_file->d_name; - dir_entry->path = make_path(parent_dir_entry->path, - cur_file->d_name); + if (path_cat_out(tmp, parent_dir_entry->path, + cur_file->d_name)) { + error("invalid path: %s/%s", + parent_dir_entry->path, + cur_file->d_name); + ret = -EINVAL; + goto fail; + } + dir_entry->path = strdup(tmp); + if (!dir_entry->path) { + error("not enough memory to store path"); + ret = -ENOMEM; + goto fail; + } dir_entry->inum = cur_inum; list_add_tail(&dir_entry->list, &dir_head->list); } else if (S_ISREG(st.st_mode)) { |