When retrieving a file dont open file until we have to to prevent files of size 0 being created when retrieval fails, bug found by Jeff Angielski
This commit is contained in:
parent
688cf014af
commit
1643f41986
@ -174,16 +174,9 @@ static int ftp_recieve(FILE *control_stream, const char *host, const char *local
|
|||||||
filesize = atol(buf + 4);
|
filesize = atol(buf + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* only make a local file if we know that one exists on the remote server */
|
|
||||||
if (do_continue) {
|
|
||||||
fd_local = xopen(local_file, O_APPEND | O_WRONLY);
|
|
||||||
} else {
|
|
||||||
fd_local = xopen(local_file, O_CREAT | O_TRUNC | O_WRONLY);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_continue) {
|
if (do_continue) {
|
||||||
struct stat sbuf;
|
struct stat sbuf;
|
||||||
if (fstat(fd_local, &sbuf) < 0) {
|
if (lstat(local_file, &sbuf) < 0) {
|
||||||
perror_msg_and_die("fstat()");
|
perror_msg_and_die("fstat()");
|
||||||
}
|
}
|
||||||
if (sbuf.st_size > 0) {
|
if (sbuf.st_size > 0) {
|
||||||
@ -206,6 +199,13 @@ static int ftp_recieve(FILE *control_stream, const char *host, const char *local
|
|||||||
error_msg_and_die("RETR error: %s", buf + 4);
|
error_msg_and_die("RETR error: %s", buf + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* only make a local file if we know that one exists on the remote server */
|
||||||
|
if (do_continue) {
|
||||||
|
fd_local = xopen(local_file, O_APPEND | O_WRONLY);
|
||||||
|
} else {
|
||||||
|
fd_local = xopen(local_file, O_CREAT | O_TRUNC | O_WRONLY);
|
||||||
|
}
|
||||||
|
|
||||||
/* Copy the file */
|
/* Copy the file */
|
||||||
if (copyfd(fd_data, fd_local, filesize) == -1) {
|
if (copyfd(fd_data, fd_local, filesize) == -1) {
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
Loading…
Reference in New Issue
Block a user