X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/819bfe459919769c9ddae14affeaa79596c640bb..4e90cfbfeda6d6956d547d9bed5c6763c9d596ba:/clientserver.c diff --git a/clientserver.c b/clientserver.c index 93c90c6b..52913567 100644 --- a/clientserver.c +++ b/clientserver.c @@ -509,15 +509,15 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) out_of_memory("rsync_module"); } - /* We do a push_dir() that doesn't actually call chdir() + /* We do a change_dir() that doesn't actually call chdir() * just to make a relative path absolute. */ strlcpy(line, curr_dir, sizeof line); - if (!push_dir(module_dir, 1)) + if (!change_dir(module_dir, CD_SKIP_CHDIR)) goto chdir_failed; if (strcmp(curr_dir, module_dir) != 0 && (module_dir = strdup(curr_dir)) == NULL) out_of_memory("rsync_module"); - push_dir(line, 1); /* Restore curr_dir. */ + change_dir(line, CD_SKIP_CHDIR); /* Restore curr_dir. */ if (use_chroot) { chroot_path = module_dir; @@ -533,24 +533,24 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) p = lp_filter(i); parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT, - XFLG_ABS_IF_SLASH); + XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3); p = lp_include_from(i); parse_filter_file(&daemon_filter_list, p, MATCHFLG_INCLUDE, - XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS); + XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS); p = lp_include(i); parse_rule(&daemon_filter_list, p, MATCHFLG_INCLUDE | MATCHFLG_WORD_SPLIT, - XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES); + XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES); p = lp_exclude_from(i); parse_filter_file(&daemon_filter_list, p, 0, - XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS); + XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS); p = lp_exclude(i); parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT, - XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES); + XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES); log_init(1); @@ -673,12 +673,12 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) io_printf(f_out, "@ERROR: chroot failed\n"); return -1; } - if (!push_dir(module_dir, 0)) + if (!change_dir(module_dir, CD_NORMAL)) goto chdir_failed; if (module_dirlen) sanitize_paths = 1; } else { - if (!push_dir(module_dir, 0)) { + if (!change_dir(module_dir, CD_NORMAL)) { chdir_failed: rsyserr(FLOG, errno, "chdir %s failed\n", module_dir); io_printf(f_out, "@ERROR: chdir failed\n");