X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/7f367bb1b4348ba1edb863ee13f8281471785e09..181c9faf928faad08ef095f4667afe460ec3bef6:/clientserver.c diff --git a/clientserver.c b/clientserver.c index 49238b1e..88f341e8 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; @@ -387,16 +387,16 @@ static int read_arg_from_pipe(int fd, char *buf, int limit) char *bp = buf, *eob = buf + limit - 1; while (1) { - int got = read(fd, bp, 1); - if (got != 1) { - if (got < 0 && errno == EINTR) - continue; - return -1; - } - if (*bp == '\0') - break; - if (bp < eob) - bp++; + int got = read(fd, bp, 1); + if (got != 1) { + if (got < 0 && errno == EINTR) + continue; + return -1; + } + if (*bp == '\0') + break; + if (bp < eob) + bp++; } *bp = '\0'; @@ -416,13 +416,10 @@ static int path_failure(int f_out, const char *dir, BOOL was_chdir) static int add_a_group(int f_out, const char *gname) { gid_t gid; - if (!name_to_gid(gname, &gid)) { - if (!isDigit(gname)) { - rprintf(FLOG, "Invalid gid %s\n", gname); - io_printf(f_out, "@ERROR: invalid gid %s\n", gname); - return -1; - } - gid = atol(gname); + if (!group_to_gid(gname, &gid, True)) { + rprintf(FLOG, "Invalid gid %s\n", gname); + io_printf(f_out, "@ERROR: invalid gid %s\n", gname); + return -1; } if (gid_count == MAX_GID_LIST) { rprintf(FLOG, "Too many groups specified via gid parameter.\n"); @@ -558,13 +555,10 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char p = *lp_uid(i) ? lp_uid(i) : am_root ? NOBODY_USER : NULL; if (p) { - if (!name_to_uid(p, &uid)) { - if (!isDigit(p)) { - rprintf(FLOG, "Invalid uid %s\n", p); - io_printf(f_out, "@ERROR: invalid uid %s\n", p); - return -1; - } - uid = atol(p); + if (!user_to_uid(p, &uid, True)) { + rprintf(FLOG, "Invalid uid %s\n", p); + io_printf(f_out, "@ERROR: invalid uid %s\n", p); + return -1; } set_uid = 1; } else @@ -626,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, MATCHFLG_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, MATCHFLG_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, - MATCHFLG_INCLUDE | MATCHFLG_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, MATCHFLG_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);