Fix exclusion of /. with --relative.
authorWayne Davison <wayne@opencoder.net>
Wed, 14 Sep 2022 14:14:13 +0000 (07:14 -0700)
committerWayne Davison <wayne@opencoder.net>
Wed, 14 Sep 2022 14:14:13 +0000 (07:14 -0700)
flist.c

diff --git a/flist.c b/flist.c
index 0b259cca33e90492a745e4004b02a7a7d245cc25..82d686a617963288150470d30495b41565633e9f 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -988,7 +988,7 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x
                exit_cleanup(RERR_UNSUPPORTED);
        }
 
-       if (*thisname != '.' || thisname[1] != '\0') {
+       if (*thisname == '/' ? thisname[1] != '.' || thisname[2] != '\0' : *thisname != '.' || thisname[1] != '\0') {
                int filt_flags = S_ISDIR(mode) ? NAME_IS_DIR : NAME_IS_FILE;
                if (!trust_sender_filter /* a per-dir filter rule means we must trust the sender's filtering */
                 && filter_list.head && check_server_filter(&filter_list, FINFO, thisname, filt_flags) < 0) {