extern char *files_from;
extern char *tmpdir;
extern struct chmod_mode_struct *chmod_modes;
-extern struct filter_list_struct server_filter_list;
+extern struct filter_list_struct daemon_filter_list;
extern char curr_dir[];
#ifdef ICONV_OPTION
extern char *iconv_opt;
int sargc = 0;
char *p, *modname;
- assert(argc > 0);
+ assert(argc > 0 && *argv != NULL);
if (**argv == '/') {
rprintf(FERROR,
if ((p = strstr(module_dir, "/./")) != NULL) {
*p = '\0';
p += 2;
- } else if ((p = strdup("/")) == NULL)
+ } else if ((p = strdup("/")) == NULL) /* MEMORY LEAK */
out_of_memory("rsync_module");
}
set_filter_dir(module_dir, module_dirlen);
p = lp_filter(i);
- parse_rule(&server_filter_list, p, MATCHFLG_WORD_SPLIT,
- XFLG_ABS_IF_SLASH);
+ parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT,
+ XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3);
p = lp_include_from(i);
- parse_filter_file(&server_filter_list, p, MATCHFLG_INCLUDE,
- XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS);
+ parse_filter_file(&daemon_filter_list, p, MATCHFLG_INCLUDE,
+ XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS);
p = lp_include(i);
- parse_rule(&server_filter_list, p,
+ 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(&server_filter_list, p, 0,
- XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS);
+ parse_filter_file(&daemon_filter_list, p, 0,
+ XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS);
p = lp_exclude(i);
- parse_rule(&server_filter_list, p, MATCHFLG_WORD_SPLIT,
- XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES);
+ parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT,
+ XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES);
log_init(1);
munge_symlinks = !use_chroot || module_dirlen;
if (munge_symlinks) {
STRUCT_STAT st;
- if (stat(SYMLINK_PREFIX, &st) == 0 && S_ISDIR(st.st_mode)) {
+ if (do_stat(SYMLINK_PREFIX, &st) == 0 && S_ISDIR(st.st_mode)) {
rprintf(FLOG, "Symlink munging is unsupported when a %s directory exists.\n",
SYMLINK_PREFIX);
io_printf(f_out, "@ERROR: daemon security issue -- contact admin\n", name);