X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/b32d425451798d514b958a978f5f78903ed3327b..d23cc156aa36135a2970321873798d35626d477b:/clientserver.c diff --git a/clientserver.c b/clientserver.c index 11d257e0..eeaf8e15 100644 --- a/clientserver.c +++ b/clientserver.c @@ -55,7 +55,7 @@ extern char *logfile_format; extern char *files_from; extern char *tmpdir; extern struct chmod_mode_struct *chmod_modes; -extern struct filter_list_struct daemon_filter_list; +extern filter_rule_list daemon_filter_list; extern char curr_dir[MAXPATHLEN]; #ifdef ICONV_OPTION extern char *iconv_opt; @@ -339,7 +339,7 @@ int start_inband_exchange(int f_in, int f_out, const char *user, int argc, char if (protocol_version < 23) { if (protocol_version == 22 || !am_sender) - io_start_multiplex_in(); + io_start_multiplex_in(f_in); } free(modname); @@ -620,24 +620,24 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char set_filter_dir(module_dir, module_dirlen); p = lp_filter(i); - parse_rule(&daemon_filter_list, p, FILTRULE_WORD_SPLIT, + parse_filter_str(&daemon_filter_list, p, rule_template(FILTRULE_WORD_SPLIT), XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3); p = lp_include_from(i); - parse_filter_file(&daemon_filter_list, p, FILTRULE_INCLUDE, + parse_filter_file(&daemon_filter_list, p, rule_template(FILTRULE_INCLUDE), XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS); p = lp_include(i); - parse_rule(&daemon_filter_list, p, - FILTRULE_INCLUDE | FILTRULE_WORD_SPLIT, + parse_filter_str(&daemon_filter_list, p, + rule_template(FILTRULE_INCLUDE | FILTRULE_WORD_SPLIT), XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES); p = lp_exclude_from(i); - parse_filter_file(&daemon_filter_list, p, 0, + parse_filter_file(&daemon_filter_list, p, rule_template(0), XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS); p = lp_exclude(i); - parse_rule(&daemon_filter_list, p, FILTRULE_WORD_SPLIT, + parse_filter_str(&daemon_filter_list, p, rule_template(FILTRULE_WORD_SPLIT), XFLG_ABS_IF_SLASH | XFLG_DIR2WILD3 | XFLG_OLD_PREFIXES); log_init(1); @@ -801,7 +801,7 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char } if (set_uid) { - if (setuid(uid)) { + if (setuid(uid) || seteuid(uid)) { rsyserr(FLOG, errno, "setuid %ld failed", (long)uid); io_printf(f_out, "@ERROR: setuid failed\n"); return -1; @@ -885,7 +885,7 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char if (protocol_version < 23 && (protocol_version == 22 || am_sender)) - io_start_multiplex_out(); + io_start_multiplex_out(f_out); else if (!ret || err_msg) { /* We have to get I/O multiplexing started so that we can * get the error back to the client. This means getting @@ -909,7 +909,7 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char if (files_from) write_byte(f_out, 0); } - io_start_multiplex_out(); + io_start_multiplex_out(f_out); } if (!ret || err_msg) {