forked from Mirrors/btrfs-progs
btrfs-progs: receive: fix minor resource leak
Resolves-coverity-id: 1302985 Signed-off-by: David Sterba <dsterba@suse.cz>master
parent
add9d7fe4b
commit
f51b76109f
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue