btrfs-progs: receive: fix minor resource leak

Resolves-coverity-id: 1302985
Signed-off-by: David Sterba <dsterba@suse.cz>
master
David Sterba 2015-06-09 14:58:43 +02:00
parent add9d7fe4b
commit f51b76109f
1 changed files with 7 additions and 3 deletions

View File

@ -1002,7 +1002,7 @@ int cmd_receive(int argc, char **argv)
struct btrfs_receive r; struct btrfs_receive r;
int receive_fd = fileno(stdin); int receive_fd = fileno(stdin);
u64 max_errors = 1; u64 max_errors = 1;
int ret; int ret = 0;
memset(&r, 0, sizeof(r)); memset(&r, 0, sizeof(r));
r.mnt_fd = -1; r.mnt_fd = -1;
@ -1039,10 +1039,11 @@ int cmd_receive(int argc, char **argv)
max_errors = arg_strtou64(optarg); max_errors = arg_strtou64(optarg);
break; break;
case 'm': case 'm':
free(realmnt);
realmnt = strdup(optarg); realmnt = strdup(optarg);
if (!realmnt) { if (!realmnt) {
fprintf(stderr, "ERROR: couldn't allocate realmnt.\n"); fprintf(stderr, "ERROR: couldn't allocate realmnt.\n");
return 1; goto out;
} }
break; break;
case '?': case '?':
@ -1061,12 +1062,15 @@ int cmd_receive(int argc, char **argv)
receive_fd = open(fromfile, O_RDONLY | O_NOATIME); receive_fd = open(fromfile, O_RDONLY | O_NOATIME);
if (receive_fd < 0) { if (receive_fd < 0) {
fprintf(stderr, "ERROR: failed to open %s\n", fromfile); fprintf(stderr, "ERROR: failed to open %s\n", fromfile);
return 1; goto out;
} }
} }
ret = do_receive(&r, tomnt, realmnt, receive_fd, max_errors); ret = do_receive(&r, tomnt, realmnt, receive_fd, max_errors);
out:
free(realmnt);
return !!ret; return !!ret;
} }