Don't allow overwriting a non-directory with a directory (just
authorWayne Davison <wayned@samba.org>
Thu, 2 Mar 2006 03:53:42 +0000 (03:53 +0000)
committerWayne Davison <wayned@samba.org>
Thu, 2 Mar 2006 03:53:42 +0000 (03:53 +0000)
like cp).

main.c

diff --git a/main.c b/main.c
index 4b51d31..3acdfd3 100644 (file)
--- a/main.c
+++ b/main.c
@@ -480,6 +480,13 @@ static char *get_local_name(struct file_list *flist, char *dest_path)
                                " copying more than 1 file\n");
                        exit_cleanup(RERR_FILESELECT);
                }
+               /* Caution: flist->count could be 0! */
+               if (flist->count == 1 && S_ISDIR(flist->files[0]->mode)) {
+                       rprintf(FERROR,
+                               "ERROR: cannot overwrite non-directory"
+                               " with a directory\n");
+                       exit_cleanup(RERR_FILESELECT);
+               }
        } else if (errno != ENOENT) {
                rsyserr(FERROR, errno, "cannot stat destination %s",
                        full_fname(dest_path));