From a245463281dda8a3f383e66a8429d913e4f50964 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Fri, 12 Jun 2015 16:37:31 +0200 Subject: btrfs-progs: receive: use static buffer for source file We should copy the optarg anyway. Signed-off-by: David Sterba --- cmds-receive.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'cmds-receive.c') diff --git a/cmds-receive.c b/cmds-receive.c index 8908f8f7..da57c9ed 100644 --- a/cmds-receive.c +++ b/cmds-receive.c @@ -1096,7 +1096,7 @@ out: int cmd_receive(int argc, char **argv) { char *tomnt = NULL; - char *fromfile = NULL; + char fromfile[PATH_MAX]; char realmnt[PATH_MAX]; struct btrfs_receive r; int receive_fd = fileno(stdin); @@ -1109,6 +1109,7 @@ int cmd_receive(int argc, char **argv) r.dest_dir_fd = -1; r.dest_dir_chroot = 0; realmnt[0] = 0; + fromfile[0] = 0; while (1) { int c; @@ -1127,7 +1128,13 @@ int cmd_receive(int argc, char **argv) g_verbose++; break; case 'f': - fromfile = optarg; + if (arg_copy_path(fromfile, optarg, sizeof(fromfile))) { + fprintf(stderr, + "ERROR: input file path too long (%zu)\n", + strlen(optarg)); + ret = 1; + goto out; + } break; case 'e': r.honor_end_cmd = 1; @@ -1159,7 +1166,7 @@ int cmd_receive(int argc, char **argv) tomnt = argv[optind]; - if (fromfile) { + if (fromfile[0]) { receive_fd = open(fromfile, O_RDONLY | O_NOATIME); if (receive_fd < 0) { fprintf(stderr, "ERROR: failed to open %s\n", fromfile); -- cgit v1.2.3