Treat a trailing ".." dir-name as if "../" had been specified so
authorWayne Davison <wayned@samba.org>
Sat, 14 May 2005 18:44:57 +0000 (18:44 +0000)
committerWayne Davison <wayned@samba.org>
Sat, 14 May 2005 18:44:57 +0000 (18:44 +0000)
that we don't use the name in the destination path and save files
into a higher destination directory.

flist.c

diff --git a/flist.c b/flist.c
index b3c966e..ad02b89 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -1127,6 +1127,14 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
                                fname[l] = '\0';
                        }
                        is_dot_dir = 1;
+               } else if (l > 1 && fname[l-1] == '.' && fname[l-2] == '.'
+                   && (l == 2 || fname[l-3] == '/')) {
+                       if (l + 2 >= MAXPATHLEN)
+                               overflow("send_file_list");
+                       fname[l++] = '/';
+                       fname[l++] = '.';
+                       fname[l] = '\0';
+                       is_dot_dir = 1;
                } else {
                        is_dot_dir = fname[l-1] == '.'
                                   && (l == 1 || fname[l-2] == '/');