From: Omar Sandoval <osan...@fb.com>

In process_clone(), we're not checking the return value of strdup().
But, there's no reason to strdup() in the first place: we just pass the
path into path_cat_out(). Get rid of the strdup().

Fixes: f1c24cd80dfd ("Btrfs-progs: add btrfs send/receive commands")
Signed-off-by: Omar Sandoval <osan...@osandov.com>
---
 cmds/receive.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/cmds/receive.c b/cmds/receive.c
index b97850a7..a3e62985 100644
--- a/cmds/receive.c
+++ b/cmds/receive.c
@@ -739,7 +739,7 @@ static int process_clone(const char *path, u64 offset, u64 
len,
        struct btrfs_ioctl_clone_range_args clone_args;
        struct subvol_info *si = NULL;
        char full_path[PATH_MAX];
-       char *subvol_path = NULL;
+       char *subvol_path;
        char full_clone_path[PATH_MAX];
        int clone_fd = -1;
 
@@ -760,7 +760,7 @@ static int process_clone(const char *path, u64 offset, u64 
len,
                if (memcmp(clone_uuid, rctx->cur_subvol.received_uuid,
                                BTRFS_UUID_SIZE) == 0) {
                        /* TODO check generation of extent */
-                       subvol_path = strdup(rctx->cur_subvol_path);
+                       subvol_path = rctx->cur_subvol_path;
                } else {
                        if (!si)
                                ret = -ENOENT;
@@ -794,14 +794,14 @@ static int process_clone(const char *path, u64 offset, 
u64 len,
                        if (sub_len > root_len &&
                            strstr(si->path, rctx->full_root_path) == si->path 
&&
                            si->path[root_len] == '/') {
-                               subvol_path = strdup(si->path + root_len + 1);
+                               subvol_path = si->path + root_len + 1;
                        } else {
                                error("clone: source subvol path %s unreachable 
from %s",
                                        si->path, rctx->full_root_path);
                                goto out;
                        }
                } else {
-                       subvol_path = strdup(si->path);
+                       subvol_path = si->path;
                }
        }
 
@@ -839,7 +839,6 @@ out:
                free(si->path);
                free(si);
        }
-       free(subvol_path);
        if (clone_fd != -1)
                close(clone_fd);
        return ret;
-- 
2.22.0

Reply via email to