From eab3d9c2acc59943c3841b1ae9975cc8e5ff4052 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Oct 30 2019 12:46:10 +0000 Subject: import rsync-3.1.2-10.el7 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f1dcee3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/rsync-3.1.2.tar.gz +SOURCES/rsync-patches-3.1.2.tar.gz diff --git a/.rsync.metadata b/.rsync.metadata new file mode 100644 index 0000000..0ee2af5 --- /dev/null +++ b/.rsync.metadata @@ -0,0 +1,2 @@ +0d4c7fb7fe3fc80eeff922a7c1d81df11dbb8a1a SOURCES/rsync-3.1.2.tar.gz +5ba449a5e570ac372b35ec0fdabb1a9c33c70cb4 SOURCES/rsync-patches-3.1.2.tar.gz diff --git a/SOURCES/rsync-3.0.10-lose-track.patch b/SOURCES/rsync-3.0.10-lose-track.patch new file mode 100644 index 0000000..b132124 --- /dev/null +++ b/SOURCES/rsync-3.0.10-lose-track.patch @@ -0,0 +1,11 @@ +--- rsync-3.0.9/flist.c 2011-08-27 23:58:04.000000000 +0200 ++++ rsync-3.0.9/flist.c 2012-10-16 13:25:30.201627611 +0200 +@@ -369,7 +369,7 @@ + pathname = dir; + pathname_len = dirlen; + +- if (!dir) ++ if (!dir || (*dir=='.' && dirlen==1)) + dir = orig_dir; + + if (!change_dir(dir, CD_NORMAL)) { diff --git a/SOURCES/rsync-3.0.6-iconv-logging.patch b/SOURCES/rsync-3.0.6-iconv-logging.patch new file mode 100644 index 0000000..bf7d943 --- /dev/null +++ b/SOURCES/rsync-3.0.6-iconv-logging.patch @@ -0,0 +1,22 @@ +diff --git a/log.c b/log.c +index 34a013b..1aca728 100644 +--- a/log.c ++++ b/log.c +@@ -377,10 +377,13 @@ output_msg: + filtered_fwrite(f, convbuf, outbuf.len, 0); + outbuf.len = 0; + } +- if (!ierrno || ierrno == E2BIG) +- continue; +- fprintf(f, "\\#%03o", CVAL(inbuf.buf, inbuf.pos++)); +- inbuf.len--; ++ /* Log one byte of illegal/incomplete sequence and continue with ++ * the next character. Check that the buffer is non-empty for the ++ * sake of robustness. */ ++ if ((ierrno == EILSEQ || ierrno == EINVAL) && inbuf.len) { ++ fprintf(f, "\\#%03o", CVAL(inbuf.buf, inbuf.pos++)); ++ inbuf.len--; ++ } + } + } else + #endif diff --git a/SOURCES/rsync-3.1.2-nanoseconds.patch b/SOURCES/rsync-3.1.2-nanoseconds.patch new file mode 100644 index 0000000..6f8aac0 --- /dev/null +++ b/SOURCES/rsync-3.1.2-nanoseconds.patch @@ -0,0 +1,101 @@ +From 0f8e9e2d8638e47d646a6baba694b303ac84e695 Mon Sep 17 00:00:00 2001 +From: Wayne Davison +Date: Mon, 15 Jan 2018 10:52:15 -0800 +Subject: [PATCH 1/1] Don't force nanoseconds if a file wasn't transferred or + checksummed. + +--- + backup.c | 2 +- + generator.c | 5 ++++- + rsync.c | 6 +++--- + rsync.h | 1 + + 4 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/backup.c b/backup.c +index bc565329..5f40b39a 100644 +--- a/backup.c ++++ b/backup.c +@@ -336,7 +336,7 @@ int make_backup(const char *fname, BOOL prefer_rename) + + save_preserve_xattrs = preserve_xattrs; + preserve_xattrs = 0; +- set_file_attrs(buf, file, NULL, fname, 0); ++ set_file_attrs(buf, file, NULL, fname, ATTRS_SET_NANO); + preserve_xattrs = save_preserve_xattrs; + + unmake_file(file); +diff --git a/generator.c b/generator.c +index 4b0a60e4..a112da6e 100644 +--- a/generator.c ++++ b/generator.c +@@ -99,6 +99,7 @@ extern struct file_list *cur_flist, *first_flist, *dir_flist; + extern filter_rule_list filter_list, daemon_filter_list; + + int maybe_ATTRS_REPORT = 0; ++int maybe_ATTRS_SET_NANO = 0; + + static dev_t dev_zero; + static int deldelay_size = 0, deldelay_cnt = 0; +@@ -1214,6 +1215,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, + return; + } + ++ maybe_ATTRS_SET_NANO = always_checksum ? ATTRS_SET_NANO : 0; ++ + if (skip_dir) { + if (is_below(file, skip_dir)) { + if (is_dir) +@@ -1762,7 +1765,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, + do_unlink(partialptr); + handle_partial_dir(partialptr, PDIR_DELETE); + } +- set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT); ++ set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT | maybe_ATTRS_SET_NANO); + if (itemizing) + itemize(fnamecmp, file, ndx, statret, &sx, 0, 0, NULL); + #ifdef SUPPORT_HARD_LINKS +diff --git a/rsync.c b/rsync.c +index ae036a6b..a0b948dc 100644 +--- a/rsync.c ++++ b/rsync.c +@@ -556,7 +556,7 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp, + if (!(flags & ATTRS_SKIP_MTIME) + && (sxp->st.st_mtime != file->modtime + #ifdef ST_MTIME_NSEC +- || (NSEC_BUMP(file) && (uint32)sxp->st.ST_MTIME_NSEC != F_MOD_NSEC(file)) ++ || (flags & ATTRS_SET_NANO && NSEC_BUMP(file) && (uint32)sxp->st.ST_MTIME_NSEC != F_MOD_NSEC(file)) + #endif + )) { + int ret = set_modtime(fname, file->modtime, F_MOD_NSEC(file), sxp->st.st_mode); +@@ -672,7 +672,7 @@ int finish_transfer(const char *fname, const char *fnametmp, + + /* Change permissions before putting the file into place. */ + set_file_attrs(fnametmp, file, NULL, fnamecmp, +- ok_to_set_time ? 0 : ATTRS_SKIP_MTIME); ++ ok_to_set_time ? ATTRS_SET_NANO : ATTRS_SKIP_MTIME); + + /* move tmp file over real file */ + if (DEBUG_GTE(RECV, 1)) +@@ -697,7 +697,7 @@ int finish_transfer(const char *fname, const char *fnametmp, + + do_set_file_attrs: + set_file_attrs(fnametmp, file, NULL, fnamecmp, +- ok_to_set_time ? 0 : ATTRS_SKIP_MTIME); ++ ok_to_set_time ? ATTRS_SET_NANO : ATTRS_SKIP_MTIME); + + if (temp_copy_name) { + if (do_rename(fnametmp, fname) < 0) { +diff --git a/rsync.h b/rsync.h +index 6c732db3..53fff2d6 100644 +--- a/rsync.h ++++ b/rsync.h +@@ -165,6 +165,7 @@ + + #define ATTRS_REPORT (1<<0) + #define ATTRS_SKIP_MTIME (1<<1) ++#define ATTRS_SET_NANO (1<<2) + + #define FULL_FLUSH 1 + #define NORMAL_FLUSH 0 +-- +2.23.0 diff --git a/SOURCES/rsync-3.1.2-nfs-xattrs.patch b/SOURCES/rsync-3.1.2-nfs-xattrs.patch new file mode 100644 index 0000000..f8bc99f --- /dev/null +++ b/SOURCES/rsync-3.1.2-nfs-xattrs.patch @@ -0,0 +1,403 @@ +diff -up rsync-3.1.2/exclude.c.orig rsync-3.1.2/exclude.c +--- rsync-3.1.2/exclude.c.orig 2018-09-27 17:06:15.413701320 -0300 ++++ rsync-3.1.2/exclude.c 2018-09-27 17:06:19.259579122 -0300 +@@ -44,6 +44,8 @@ filter_rule_list filter_list = { .debug_ + filter_rule_list cvs_filter_list = { .debug_type = " [global CVS]" }; + filter_rule_list daemon_filter_list = { .debug_type = " [daemon]" }; + ++int saw_xattr_filter = 0; ++ + /* Need room enough for ":MODS " prefix plus some room to grow. */ + #define MAX_RULE_PREFIX (16) + +@@ -622,7 +624,7 @@ void change_local_filter_dir(const char + filt_array[cur_depth] = push_local_filters(dname, dlen); + } + +-static int rule_matches(const char *fname, filter_rule *ex, int name_is_dir) ++static int rule_matches(const char *fname, filter_rule *ex, int name_flags) + { + int slash_handling, str_cnt = 0, anchored_match = 0; + int ret_match = ex->rflags & FILTRULE_NEGATE ? 0 : 1; +@@ -633,6 +635,9 @@ static int rule_matches(const char *fnam + if (!*name) + return 0; + ++ if (!(name_flags & NAME_IS_XATTR) ^ !(ex->rflags & FILTRULE_XATTR)) ++ return 0; ++ + if (!ex->u.slash_cnt && !(ex->rflags & FILTRULE_WILD2)) { + /* If the pattern does not have any slashes AND it does + * not have a "**" (which could match a slash), then we +@@ -650,7 +655,7 @@ static int rule_matches(const char *fnam + strings[str_cnt++] = "/"; + } + strings[str_cnt++] = name; +- if (name_is_dir) { ++ if (name_flags & NAME_IS_DIR) { + /* Allow a trailing "/"+"***" to match the directory. */ + if (ex->rflags & FILTRULE_WILD3_SUFFIX) + strings[str_cnt++] = "/"; +@@ -702,7 +707,7 @@ static int rule_matches(const char *fnam + + static void report_filter_result(enum logcode code, char const *name, + filter_rule const *ent, +- int name_is_dir, const char *type) ++ int name_flags, const char *type) + { + /* If a trailing slash is present to match only directories, + * then it is stripped out by add_rule(). So as a special +@@ -712,17 +717,40 @@ static void report_filter_result(enum lo + static char *actions[2][2] + = { {"show", "hid"}, {"risk", "protect"} }; + const char *w = who_am_i(); ++ const char *t = name_flags & NAME_IS_XATTR ? "xattr" ++ : name_flags & NAME_IS_DIR ? "directory" ++ : "file"; + rprintf(code, "[%s] %sing %s %s because of pattern %s%s%s\n", + w, actions[*w!='s'][!(ent->rflags & FILTRULE_INCLUDE)], +- name_is_dir ? "directory" : "file", name, ent->pattern, ++ t, name, ent->pattern, + ent->rflags & FILTRULE_DIRECTORY ? "/" : "", type); + } + } + ++/* This function is used to check if a file should be included/excluded ++ * from the list of files based on its name and type etc. The value of ++ * filter_level is set to either SERVER_FILTERS or ALL_FILTERS. */ ++int name_is_excluded(const char *fname, int name_flags, int filter_level) ++{ ++ if (daemon_filter_list.head && check_filter(&daemon_filter_list, FLOG, fname, name_flags) < 0) { ++ if (!(name_flags & NAME_IS_XATTR)) ++ errno = ENOENT; ++ return 1; ++ } ++ ++ if (filter_level != ALL_FILTERS) ++ return 0; ++ ++ if (filter_list.head && check_filter(&filter_list, FINFO, fname, name_flags) < 0) ++ return 1; ++ ++ return 0; ++} ++ + /* Return -1 if file "name" is defined to be excluded by the specified + * exclude list, 1 if it is included, and 0 if it was not matched. */ + int check_filter(filter_rule_list *listp, enum logcode code, +- const char *name, int name_is_dir) ++ const char *name, int name_flags) + { + filter_rule *ent; + +@@ -730,22 +758,19 @@ int check_filter(filter_rule_list *listp + if (ignore_perishable && ent->rflags & FILTRULE_PERISHABLE) + continue; + if (ent->rflags & FILTRULE_PERDIR_MERGE) { +- int rc = check_filter(ent->u.mergelist, code, name, +- name_is_dir); ++ int rc = check_filter(ent->u.mergelist, code, name, name_flags); + if (rc) + return rc; + continue; + } + if (ent->rflags & FILTRULE_CVS_IGNORE) { +- int rc = check_filter(&cvs_filter_list, code, name, +- name_is_dir); ++ int rc = check_filter(&cvs_filter_list, code, name, name_flags); + if (rc) + return rc; + continue; + } +- if (rule_matches(name, ent, name_is_dir)) { +- report_filter_result(code, name, ent, name_is_dir, +- listp->debug_type); ++ if (rule_matches(name, ent, name_flags)) { ++ report_filter_result(code, name, ent, name_flags, listp->debug_type); + return ent->rflags & FILTRULE_INCLUDE ? 1 : -1; + } + } +@@ -970,6 +995,10 @@ static filter_rule *parse_rule_tok(const + goto invalid; + rule->rflags |= FILTRULE_WORD_SPLIT; + break; ++ case 'x': ++ rule->rflags |= FILTRULE_XATTR; ++ saw_xattr_filter = 1; ++ break; + } + } + if (*s) +@@ -1286,6 +1286,8 @@ char *get_rule_prefix(filter_rule *rule, const char *pat, int for_xfer, + } + if (rule->rflags & FILTRULE_EXCLUDE_SELF) + *op++ = 'e'; ++ if (rule->rflags & FILTRULE_XATTR) ++ *op++ = 'x'; + if (rule->rflags & FILTRULE_SENDER_SIDE + && (!for_xfer || protocol_version >= 29)) + *op++ = 's'; +diff -up rsync-3.1.2/flist.c.orig rsync-3.1.2/flist.c +--- rsync-3.1.2/flist.c.orig 2018-09-27 17:06:15.420701098 -0300 ++++ rsync-3.1.2/flist.c 2018-09-27 17:06:19.262579026 -0300 +@@ -237,16 +237,6 @@ int link_stat(const char *path, STRUCT_S + #endif + } + +-static inline int is_daemon_excluded(const char *fname, int is_dir) +-{ +- if (daemon_filter_list.head +- && check_filter(&daemon_filter_list, FLOG, fname, is_dir) < 0) { +- errno = ENOENT; +- return 1; +- } +- return 0; +-} +- + static inline int path_is_daemon_excluded(char *path, int ignore_filename) + { + if (daemon_filter_list.head) { +@@ -273,23 +263,10 @@ static inline int path_is_daemon_exclude + return 0; + } + +-/* This function is used to check if a file should be included/excluded +- * from the list of files based on its name and type etc. The value of +- * filter_level is set to either SERVER_FILTERS or ALL_FILTERS. */ +-static int is_excluded(const char *fname, int is_dir, int filter_level) ++ ++static inline int is_excluded(const char *fname, int is_dir, int filter_level) + { +-#if 0 /* This currently never happens, so avoid a useless compare. */ +- if (filter_level == NO_FILTERS) +- return 0; +-#endif +- if (is_daemon_excluded(fname, is_dir)) +- return 1; +- if (filter_level != ALL_FILTERS) +- return 0; +- if (filter_list.head +- && check_filter(&filter_list, FINFO, fname, is_dir) < 0) +- return 1; +- return 0; ++ return name_is_excluded(fname, is_dir ? NAME_IS_DIR : NAME_IS_FILE, filter_level); + } + + static void send_directory(int f, struct file_list *flist, +@@ -2262,7 +2239,7 @@ struct file_list *send_file_list(int f, + memmove(fbuf, fn, len + 1); + + if (link_stat(fbuf, &st, copy_dirlinks || name_type != NORMAL_NAME) != 0 +- || (name_type != DOTDIR_NAME && is_daemon_excluded(fbuf, S_ISDIR(st.st_mode))) ++ || (name_type != DOTDIR_NAME && is_excluded(fbuf, S_ISDIR(st.st_mode) != 0, SERVER_FILTERS)) + || (relative_paths && path_is_daemon_excluded(fbuf, 1))) { + if (errno != ENOENT || missing_args == 0) { + /* This is a transfer error, but inhibit deletion +diff -up rsync-3.1.2/rsync.h.orig rsync-3.1.2/rsync.h +--- rsync-3.1.2/rsync.h.orig 2018-09-27 17:06:15.426700907 -0300 ++++ rsync-3.1.2/rsync.h 2018-09-27 17:06:19.263578995 -0300 +@@ -856,6 +856,10 @@ struct map_struct { + int status; /* first errno from read errors */ + }; + ++#define NAME_IS_FILE (0) /* filter name as a file */ ++#define NAME_IS_DIR (1<<0) /* filter name as a dir */ ++#define NAME_IS_XATTR (1<<2) /* filter name as an xattr */ ++ + #define FILTRULE_WILD (1<<0) /* pattern has '*', '[', and/or '?' */ + #define FILTRULE_WILD2 (1<<1) /* pattern has '**' */ + #define FILTRULE_WILD2_PREFIX (1<<2) /* pattern starts with "**" */ +@@ -876,6 +880,7 @@ struct map_struct { + #define FILTRULE_RECEIVER_SIDE (1<<17)/* rule applies to the receiving side */ + #define FILTRULE_CLEAR_LIST (1<<18)/* this item is the "!" token */ + #define FILTRULE_PERISHABLE (1<<19)/* perishable if parent dir goes away */ ++#define FILTRULE_XATTR (1<<20)/* rule only applies to xattr names */ + + #define FILTRULES_SIDES (FILTRULE_SENDER_SIDE | FILTRULE_RECEIVER_SIDE) + +diff -up rsync-3.1.2/rsync.yo.orig rsync-3.1.2/rsync.yo +--- rsync-3.1.2/rsync.yo.orig 2018-09-27 17:06:15.433700685 -0300 ++++ rsync-3.1.2/rsync.yo 2018-09-27 17:06:19.266578899 -0300 +@@ -1109,9 +1109,27 @@ super-user copies all namespaces except + the user.* namespace. To be able to backup and restore non-user namespaces as + a normal user, see the bf(--fake-super) option. + +-Note that this option does not copy rsyncs special xattr values (e.g. those +-used by bf(--fake-super)) unless you repeat the option (e.g. -XX). This +-"copy all xattrs" mode cannot be used with bf(--fake-super). ++The above name filtering can be overridden by using one or more filter options ++with the bf(x) modifier. When you specify an xattr-affecting filter rule, rsync ++requires that you do your own system/user filtering, as well as any additional ++filtering for what xattr names are copied and what names are allowed to be ++deleted. For example, to skip the system namespace, you could specify: ++ ++quote(--filter='-x system.*') ++ ++To skip all namespaces except the user namespace, you could specify a ++negated-user match: ++ ++quote(--filter='-x! user.*') ++ ++To prevent any attributes from being deleted, you could specify a receiver-only ++rule that excludes all names: ++ ++quote(--filter='-xr *') ++ ++Note that the bf(-X) option does not copy rsync's special xattr values (e.g. ++those used by bf(--fake-super)) unless you repeat the option (e.g. -XX). ++This "copy all xattrs" mode cannot be used with bf(--fake-super). + + dit(bf(--chmod)) This option tells rsync to apply one or more + comma-separated "chmod" modes to the permission of the files in the +@@ -2890,6 +2908,10 @@ itemization( + option's default rules that exclude things like "CVS" and "*.o" are + marked as perishable, and will not prevent a directory that was removed + on the source from being deleted on the destination. ++ it() An bf(x) indicates that a rule affects xattr names in xattr copy/delete ++ operations (and is thus ignored when matching file/dir names). If no ++ xattr-matching rules are specified, a default xattr filtering rule is ++ used (see the bf(--xattrs) option). + ) + + manpagesection(MERGE-FILE FILTER RULES) +diff -up rsync-3.1.2/testsuite/xattrs.test.orig rsync-3.1.2/testsuite/xattrs.test +--- rsync-3.1.2/testsuite/xattrs.test.orig 2018-09-27 17:06:15.439700494 -0300 ++++ rsync-3.1.2/testsuite/xattrs.test 2018-09-27 17:06:19.267578867 -0300 +@@ -127,8 +127,10 @@ esac + + xls $dirs $files >"$scratchdir/xattrs.txt" + ++XFILT='-f-x_system.* -f-x_security.*' ++ + # OK, let's try a simple xattr copy. +-checkit "$RSYNC -avX $dashH --super . '$chkdir/'" "$fromdir" "$chkdir" ++checkit "$RSYNC -avX $XFILT $dashH --super . '$chkdir/'" "$fromdir" "$chkdir" + + cd "$chkdir" + xls $dirs $files | diff $diffopt "$scratchdir/xattrs.txt" - +@@ -142,7 +144,7 @@ if [ "$dashH" ]; then + done + fi + +-checkit "$RSYNC -aiX $dashH --super $altDest=../chk . ../to" "$fromdir" "$todir" ++checkit "$RSYNC -aiX $XFILT $dashH --super $altDest=../chk . ../to" "$fromdir" "$todir" + + cd "$todir" + xls $dirs $files | diff $diffopt "$scratchdir/xattrs.txt" - +@@ -156,7 +158,7 @@ xset user.nice 'this is nice, but differ + + xls $dirs $files >"$scratchdir/xattrs.txt" + +-checkit "$RSYNC -aiX $dashH --fake-super --link-dest=../chk . ../to" "$chkdir" "$todir" ++checkit "$RSYNC -aiX $XFILT $dashH --fake-super --link-dest=../chk . ../to" "$chkdir" "$todir" + + cd "$todir" + xls $dirs $files | diff $diffopt "$scratchdir/xattrs.txt" - +@@ -186,7 +188,7 @@ cd "$fromdir" + rm -rf "$todir" + + # When run by a non-root tester, this checks if no-user-perm files/dirs can be copied. +-checkit "$RSYNC -aiX $dashH --fake-super --chmod=a= . ../to" "$chkdir" "$todir" # 2>"$scratchdir/errors.txt" ++checkit "$RSYNC -aiX $XFILT $dashH --fake-super --chmod=a= . ../to" "$chkdir" "$todir" # 2>"$scratchdir/errors.txt" + + cd "$todir" + xls $dirs $files | diff $diffopt "$scratchdir/xattrs.txt" - +@@ -202,7 +204,7 @@ $RSYNC -aX file1 ../lnk/ + + xls file1 file2 >"$scratchdir/xattrs.txt" + +-checkit "$RSYNC -aiiX $dashH $altDest=../lnk . ../to" "$chkdir" "$todir" ++checkit "$RSYNC -aiiX $XFILT $dashH $altDest=../lnk . ../to" "$chkdir" "$todir" + + [ "$dashH" ] && rm ../lnk/extra-link + +@@ -215,7 +217,7 @@ rm "$todir/file2" + echo extra >file1 + $RSYNC -aX . ../chk/ + +-checkit "$RSYNC -aiiX . ../to" "$chkdir" "$todir" ++checkit "$RSYNC -aiiX $XFILT . ../to" "$chkdir" "$todir" + + cd "$todir" + xls file1 file2 | diff $diffopt "$scratchdir/xattrs.txt" - +diff -up rsync-3.1.2/xattrs.c.orig rsync-3.1.2/xattrs.c +--- rsync-3.1.2/xattrs.c.orig 2018-09-27 17:06:15.442700399 -0300 ++++ rsync-3.1.2/xattrs.c 2018-09-27 17:07:50.900667319 -0300 +@@ -39,6 +39,7 @@ extern int preserve_devices; + extern int preserve_specials; + extern int checksum_seed; + extern int protocol_version; ++extern int saw_xattr_filter; + + #define RSYNC_XAL_INITIAL 5 + #define RSYNC_XAL_LIST_INITIAL 100 +@@ -234,11 +235,14 @@ static int rsync_xal_get(const char *fna + name_len = strlen(name) + 1; + list_len -= name_len; + ++ if (saw_xattr_filter) { ++ if (name_is_excluded(name, NAME_IS_XATTR, ALL_FILTERS)) ++ continue; ++ } + #ifdef HAVE_LINUX_XATTRS + /* We always ignore the system namespace, and non-root + * ignores everything but the user namespace. */ +- if (user_only ? !HAS_PREFIX(name, USER_PREFIX) +- : HAS_PREFIX(name, SYSTEM_PREFIX)) ++ else if (user_only ? !HAS_PREFIX(name, USER_PREFIX) : HAS_PREFIX(name, SYSTEM_PREFIX)) + continue; + #endif + +@@ -337,11 +341,14 @@ int copy_xattrs(const char *source, cons + name_len = strlen(name) + 1; + list_len -= name_len; + ++ if (saw_xattr_filter) { ++ if (name_is_excluded(name, NAME_IS_XATTR, ALL_FILTERS)) ++ continue; ++ } + #ifdef HAVE_LINUX_XATTRS + /* We always ignore the system namespace, and non-root + * ignores everything but the user namespace. */ +- if (user_only ? !HAS_PREFIX(name, USER_PREFIX) +- : HAS_PREFIX(name, SYSTEM_PREFIX)) ++ else if (user_only ? !HAS_PREFIX(name, USER_PREFIX) : HAS_PREFIX(name, SYSTEM_PREFIX)) + continue; + #endif + +@@ -735,10 +742,17 @@ void receive_xattr(int f, struct file_st + *ptr = XSTATE_ABBREV; + read_buf(f, ptr + 1, MAX_DIGEST_LEN); + } ++ ++ if (saw_xattr_filter) { ++ if (name_is_excluded(name, NAME_IS_XATTR, ALL_FILTERS)) { ++ free(ptr); ++ continue; ++ } ++ } + #ifdef HAVE_LINUX_XATTRS + /* Non-root can only save the user namespace. */ + if (am_root <= 0 && !HAS_PREFIX(name, USER_PREFIX)) { +- if (!am_root) { ++ if (!am_root && !saw_xattr_filter) { + free(ptr); + continue; + } +@@ -899,11 +913,14 @@ static int rsync_xal_set(const char *fna + name_len = strlen(name) + 1; + list_len -= name_len; + ++ if (saw_xattr_filter) { ++ if (name_is_excluded(name, NAME_IS_XATTR, ALL_FILTERS)) ++ continue; ++ } + #ifdef HAVE_LINUX_XATTRS + /* We always ignore the system namespace, and non-root + * ignores everything but the user namespace. */ +- if (user_only ? !HAS_PREFIX(name, USER_PREFIX) +- : HAS_PREFIX(name, SYSTEM_PREFIX)) ++ else if (user_only ? !HAS_PREFIX(name, USER_PREFIX) : HAS_PREFIX(name, SYSTEM_PREFIX)) + continue; + #endif + if (am_root < 0 && name_len > RPRE_LEN diff --git a/SOURCES/rsync-3.1.2-remove-symlinks.patch b/SOURCES/rsync-3.1.2-remove-symlinks.patch new file mode 100644 index 0000000..43d175d --- /dev/null +++ b/SOURCES/rsync-3.1.2-remove-symlinks.patch @@ -0,0 +1,33 @@ +diff --git a/sender.c b/sender.c +index 03e4aadd..9b432ed9 100644 +--- a/sender.c ++++ b/sender.c +@@ -32,6 +32,7 @@ extern int logfile_format_has_i; + extern int want_xattr_optim; + extern int csum_length; + extern int append_mode; ++extern int copy_links; + extern int io_error; + extern int flist_eof; + extern int allowed_lull; +@@ -138,17 +139,16 @@ void successful_send(int ndx) + return; + f_name(file, fname); + +- if (do_lstat(fname, &st) < 0) { ++ if ((copy_links ? do_stat(fname, &st) : do_lstat(fname, &st)) < 0) { + failed_op = "re-lstat"; + goto failed; + } + +- if (S_ISREG(file->mode) /* Symlinks & devices don't need this check: */ +- && (st.st_size != F_LENGTH(file) || st.st_mtime != file->modtime ++ if (st.st_size != F_LENGTH(file) || st.st_mtime != file->modtime + #ifdef ST_MTIME_NSEC + || (NSEC_BUMP(file) && (uint32)st.ST_MTIME_NSEC != F_MOD_NSEC(file)) + #endif +- )) { ++ ) { + rprintf(FERROR_XFER, "ERROR: Skipping sender remove for changed file: %s\n", fname); + return; + } diff --git a/SOURCES/rsync-3.1.2-verbose.patch b/SOURCES/rsync-3.1.2-verbose.patch new file mode 100644 index 0000000..fc00de0 --- /dev/null +++ b/SOURCES/rsync-3.1.2-verbose.patch @@ -0,0 +1,14 @@ +diff --git a/main.c b/main.c +index 4613c962..e2b93c6e 100644 +--- a/main.c ++++ b/main.c +@@ -865,7 +865,8 @@ static int do_recv(int f_in, int f_out, char *local_name) + rprintf(FERROR, "Failed to stat %s: %s\n", backup_dir_buf, strerror(errno)); + exit_cleanup(RERR_FILEIO); + } +- rprintf(FINFO, "(new) backup_dir is %s\n", backup_dir_buf); ++ if (INFO_GTE(BACKUP, 1)) ++ rprintf(FINFO, "(new) backup_dir is %s\n", backup_dir_buf); + } else if (INFO_GTE(BACKUP, 1)) + rprintf(FINFO, "backup_dir is %s\n", backup_dir_buf); + if (backup_dir_len > 1) diff --git a/SOURCES/rsync-3.1.2-zlib.patch b/SOURCES/rsync-3.1.2-zlib.patch new file mode 100644 index 0000000..50f699e --- /dev/null +++ b/SOURCES/rsync-3.1.2-zlib.patch @@ -0,0 +1,13 @@ +diff --git a/token.c.old b/token.c +index ad9b9bc..b2a3614 100644 +--- a/token.c.old ++++ b/token.c +@@ -21,7 +21,7 @@ + + #include "rsync.h" + #include "itypes.h" +-#include ++#include "zlib/zlib.h" + + extern int do_compression; + extern int protocol_version; diff --git a/SOURCES/rsync-man.patch b/SOURCES/rsync-man.patch new file mode 100644 index 0000000..d1a08ca --- /dev/null +++ b/SOURCES/rsync-man.patch @@ -0,0 +1,10 @@ +--- rsync-3.0.9/rsync.1 2011-09-23 18:42:26.000000000 +0200 ++++ rsync-3.0.9/rsync.1 2012-09-19 10:40:19.698802861 +0200 +@@ -438,6 +438,7 @@ + \-o, \-\-owner preserve owner (super\-user only) + \-g, \-\-group preserve group + \-\-devices preserve device files (super\-user only) ++ \-\-copy-devices copy device contents as regular file + \-\-specials preserve special files + \-D same as \-\-devices \-\-specials + \-t, \-\-times preserve modification times diff --git a/SOURCES/rsyncd.conf b/SOURCES/rsyncd.conf new file mode 100644 index 0000000..6e058aa --- /dev/null +++ b/SOURCES/rsyncd.conf @@ -0,0 +1,20 @@ +# /etc/rsyncd: configuration file for rsync daemon mode + +# See rsyncd.conf man page for more options. + +# configuration example: + +# uid = nobody +# gid = nobody +# use chroot = yes +# max connections = 4 +# pid file = /var/run/rsyncd.pid +# exclude = lost+found/ +# transfer logging = yes +# timeout = 900 +# ignore nonreadable = yes +# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 + +# [ftp] +# path = /home/ftp +# comment = ftp export area diff --git a/SOURCES/rsyncd.service b/SOURCES/rsyncd.service new file mode 100644 index 0000000..3ffecce --- /dev/null +++ b/SOURCES/rsyncd.service @@ -0,0 +1,10 @@ +[Unit] +Description=fast remote file copy program daemon +ConditionPathExists=/etc/rsyncd.conf + +[Service] +EnvironmentFile=/etc/sysconfig/rsyncd +ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS" + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/rsyncd.socket b/SOURCES/rsyncd.socket new file mode 100644 index 0000000..7306ad0 --- /dev/null +++ b/SOURCES/rsyncd.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Rsync Server Socket +Conflicts=rsyncd.service + +[Socket] +ListenStream=873 +Accept=yes + +[Install] +WantedBy=sockets.target diff --git a/SOURCES/rsyncd.sysconfig b/SOURCES/rsyncd.sysconfig new file mode 100644 index 0000000..90a5a43 --- /dev/null +++ b/SOURCES/rsyncd.sysconfig @@ -0,0 +1 @@ +OPTIONS="" diff --git a/SOURCES/rsyncd@.service b/SOURCES/rsyncd@.service new file mode 100644 index 0000000..89f9621 --- /dev/null +++ b/SOURCES/rsyncd@.service @@ -0,0 +1,8 @@ +[Unit] +Description=fast remote file copy program daemon +ConditionPathExists=/etc/rsyncd.conf + +[Service] +EnvironmentFile=/etc/sysconfig/rsyncd +ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS" +StandardInput=socket diff --git a/SPECS/rsync.spec b/SPECS/rsync.spec new file mode 100644 index 0000000..d2f5011 --- /dev/null +++ b/SPECS/rsync.spec @@ -0,0 +1,595 @@ +%global _hardened_build 1 +%define isprerelease 0 + +%if %isprerelease +%define prerelease pre1 +%endif + +Summary: A program for synchronizing files over a network +Name: rsync +Version: 3.1.2 +Release: 10%{?prerelease}%{?dist} +Group: Applications/Internet +URL: http://rsync.samba.org/ + +Source0: ftp://rsync.samba.org/pub/rsync/rsync-%{version}%{?prerelease}.tar.gz +Source1: ftp://rsync.samba.org/pub/rsync/rsync-patches-%{version}%{?prerelease}.tar.gz +Source2: rsyncd.socket +Source3: rsyncd.service +Source4: rsyncd.conf +Source5: rsyncd.sysconfig +Source6: rsyncd@.service +BuildRequires: libacl-devel, libattr-devel, autoconf, popt-devel, zlib-devel, systemd-units +Requires: zlib +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +License: GPLv3+ + +Patch0: rsync-3.0.10-lose-track.patch +Patch1: rsync-man.patch +Patch3: rsync-3.0.6-iconv-logging.patch +Patch4: rsync-3.1.2-zlib.patch +Patch5: rsync-3.1.2-remove-symlinks.patch +Patch6: rsync-3.1.2-verbose.patch +Patch7: rsync-3.1.2-nfs-xattrs.patch +Patch8: rsync-3.1.2-nanoseconds.patch + +%description +Rsync uses a reliable algorithm to bring remote and host files into +sync very quickly. Rsync is fast because it just sends the differences +in the files over the network instead of sending the complete +files. Rsync is often used as a very powerful mirroring process or +just as a more capable replacement for the rcp command. A technical +report which describes the rsync algorithm is included in this +package. + +%prep +# TAG: for pre versions use + +%if %isprerelease +%setup -q -n rsync-%{version}%{?prerelease} +%setup -q -b 1 -n rsync-%{version}%{?prerelease} +%else +%setup -q +%setup -q -b 1 +%endif + +#Needed for compatibility with previous patched rsync versions +patch -p1 -i patches/acls.diff +patch -p1 -i patches/xattrs.diff + +#Enable --copy-devices parameter +patch -p1 -i patches/copy-devices.diff + +%patch0 -p1 -b .lose-track +%patch1 -p1 -b .man +%patch3 -p1 -b .iconv-logging +%patch4 -p1 -b .zlib +%patch5 -p1 -b .symlinks +%patch6 -p1 -b .verbose +%patch7 -p1 -b .nfs-xattrs +%patch8 -p1 -b .nanoseconds + +%build +rm -fr autom4te.cache +autoconf -o configure.sh +autoheader && touch config.h.in + +%configure + +make proto +make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS" + +%install +rm -rf $RPM_BUILD_ROOT + +%makeinstall INSTALLCMD='install -p' INSTALLMAN='install -p' + +install -D -m644 %{SOURCE3} $RPM_BUILD_ROOT/%{_unitdir}/rsyncd.service +install -D -m644 %{SOURCE2} $RPM_BUILD_ROOT/%{_unitdir}/rsyncd.socket +install -D -m644 %{SOURCE4} $RPM_BUILD_ROOT/%{_sysconfdir}/rsyncd.conf +install -D -m644 %{SOURCE5} $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/rsyncd +install -D -m644 %{SOURCE6} $RPM_BUILD_ROOT/%{_unitdir}/rsyncd@.service + +%check +make check +chmod -x support/* + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root) +%doc COPYING NEWS OLDNEWS README tech_report.tex support/ +%{_bindir}/%{name} +%{_mandir}/man1/%{name}.1* +%{_mandir}/man5/rsyncd.conf.5* +%config(noreplace) %{_sysconfdir}/rsyncd.conf +%config(noreplace) %{_sysconfdir}/sysconfig/rsyncd +/%{_unitdir}/rsyncd.socket +/%{_unitdir}/rsyncd.service +/%{_unitdir}/rsyncd@.service + +%post +%systemd_post rsyncd.service + +%preun +%systemd_preun rsyncd.service + +%postun +%systemd_postun_with_restart rsyncd.service + +%changelog +* Fri Aug 23 2019 Michal Ruprich - 3.1.2-10 +- Resolves: #1672779 - Rsync bug resets modification time of every destination file that has not changed + +* Mon Jul 22 2019 Michal Ruprich - 3.1.2-9 +- Resolves: #1633850 - rsync is unable to preserve NFS v4 ACLs via extended attributes + +* Sun Jul 21 2019 Michal Ruprich - 3.1.2-8 +- Resolves: #1566149 - rsync without --verbose still writes "(new) backup_dir is ..." to STDOUT + +* Tue Mar 26 2019 Michal Ruprich - 3.1.2-7 +- Resolves: #1690786 - remove-source-files fails with symlinks + +* Mon Aug 20 2018 Michal Ruprich - 3.1.2-6 +- Related: #1615799 - reverting changes made in RHEL-7.6 + +* Mon Aug 20 2018 Michal Ruprich - 3.1.2-5 +- Resolves: #1615799 - Rsync built-in testsuite fails with selinux enabled + +* Wed Oct 18 2017 Michal Ruprich - 3.1.2-4 +- Related: #1432899 - removing dependencies on perl +- using the bundled zlib.h(#1491582) +- turning on upstream tests + +* Wed Aug 30 2017 Michal Ruprich - 3.1.2-1 +- Resolves: #1432899 - Rebase rsync to version >= 3.1.0 +- rebase to 3.1.2 + +* Tue Jan 24 2017 Michal Ruprich - 3.0.9-18 +- Resolves: #1324754 - rsyncd unit enters failed state on exit + +* Tue Jun 23 2015 Luboš Uhliarik - 3.0.9-17 +- Resolves: #1082496 - socket activation for rsync doesn't work (added missing + rsyncd@.service file) + +* Tue Jun 23 2015 Luboš Uhliarik - 3.0.9-16 +- Resolves: #1090825 - rsync -X is ineffective when setting owner/group +- Fixed bogus dates + +* Tue Feb 11 2014 Pavel Šimerda - 3.0.9-15 +- Resolves: #1032637 - rsync unit tests cannot be compiled +- switch to hardened build + +* Tue Jan 28 2014 Pavel Šimerda - 3.0.9-14 +- Resolves: #1052814 - rsync command is terminated with SIGSEGV +- Resolves: #1052814 - add missing patch file + +* Fri Jan 24 2014 Daniel Mach - 3.0.9-13 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 3.0.9-12 +- Mass rebuild 2013-12-27 + +* Fri Jun 28 2013 Michal Luscon - 3.0.9-11 +- Add BuildRequires: systemd-units + +* Mon Jun 17 2013 Michal Luscon - 3.0.9-10 +- Fixed: #947765 - rsync daemon chooses wrong destination place + +* Fri May 17 2013 Michal Luscon - 3.0.9-9 +- Fix missing man page and help options + +* Thu Feb 14 2013 Fedora Release Engineering - 3.0.9-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Nov 15 2012 Michal Luscon 3.0.9-6 +- Systemd units for rsync + +* Tue Oct 23 2012 Michal Luscon 3.0.9-5 +- Reverted: #495310 - rsync contains forked copy of zlib + +* Tue Oct 16 2012 Michal Luscon 3.0.9-4 +- Fixed: #823088 - rsync loses track of files with different directory prefixes +- Fixed: #495310 - rsync contains forked copy of zlib + +* Sat Jul 21 2012 Fedora Release Engineering - 3.0.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 3.0.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Sep 14 2011 Vojtech Vitek (V-Teq) - 3.0.9-1 +- Rebase to 3.0.9 (#741004) + +* Wed Sep 14 2011 Vojtech Vitek (V-Teq) - 3.0.8-2 +- Fix security context of symbolic links (#709779) + +* Tue Mar 29 2011 Vojtech Vitek - 3.0.8-1 +- Rebase to 3.0.8, remove buffer overflow patch (#691362, #675036) + +* Wed Feb 09 2011 Fedora Release Engineering - 3.0.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Mar 29 2010 Jan Zeleny - 3.0.7-3 +- buffer overflow patch replaced by upstream version + +* Fri Jan 22 2010 Jan Zeleny - 3.0.7-2 +- fixed issue with buffer overflow when using long filenames (#557916) + +* Tue Jan 19 2010 Jan Zeleny - 3.0.7-1 +- rebased to 3.0.7 + +* Mon Dec 07 2009 Jan Zeleny - 3.0.6-4 +- applied patch to avoid retouching dir permissions (#542679) + +* Sun Jul 26 2009 Fedora Release Engineering - 3.0.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jun 1 2009 Simo Sorce 3.0.6-2 +- Final 3.0.6 release + +* Thu May 21 2009 Ján ONDREJ (SAL) - 3.0.6-1pre1 +- Enabled patches/copy-devices.diff patch (bz#494313) + +* Wed Apr 15 2009 Simo Sorce 3.0.6-0pre1 +- First 3.0.6 pre release +- Also change the spec to simplify releasing pre-releases + +* Wed Feb 25 2009 Fedora Release Engineering - 3.0.5-1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Jan 1 2009 Simo Sorce 3.0.5-0.fc11 +- New upstream bugfix release + +* Mon Sep 8 2008 Simo Sorce 3.0.4-0.fc10 +- New upstream bugfix release + +* Mon Jun 30 2008 Simo Sorce 3.0.3-0.fc10 +- New upstream release + +* Tue Apr 8 2008 Simo Sorce 3.0.2-0.fc9 +- Security release: http://rsync.samba.org/security.html#s3_0_2 + +* Fri Apr 4 2008 Simo Sorce 3.0.1-2.fc9 +- Make sure support scripts are not executable so that no bad perl dependecies + are created + +* Fri Apr 4 2008 Simo Sorce 3.0.1-1.fc9 +- Add NEWS and support/ scripts in the docs section +- 3.0.1 final + +* Mon Mar 31 2008 Simo Sorce 3.0.1-0.3.pre3.fc9 +- 3.0.1 pre release #3 +- Fixes some annoying minor bugs (see release notes) + +* Thu Mar 27 2008 Simo Sorce 3.0.1-0.2.pre2.fc9 +- 3.0.1 pre release #2 +- Fixes #439074 + +* Tue Mar 25 2008 Simo Sorce 3.0.1-0.1.pre1.fc9 +- 3.0.1 pre release #1 +- Fixes #438694 + +* Sun Mar 2 2008 Simo Sorce 3.0.0-1.fc9 +- Final 3.0.0 release + +* Sat Feb 23 2008 Simo Sorce 3.0.0-0.pre10.fc9 +- Tenth preprelease of the 3.0.0 series + +* Sat Feb 16 2008 Simo Sorce 3.0.0-0.pre9.fc9 +- Ninth preprelease of the 3.0.0 series + +* Sat Feb 2 2008 Simo Sorce 3.0.0-0.pre8.fc9 +- Eight prerelease +- Add second source, now patches are in a separate file +- Add temporary fix to the xattrs.diff patch line as, in this version + the patch contains one extra humk already contained in acls.diff + +* Sat Oct 27 2007 Simo Sorce 3.0.0-0.pre4.fc9 +- Fourth prerelease + +* Mon Oct 15 2007 Simo Sorce 3.0.0-0.pre2.1.fc9 +- Add support for IPv6 by default with xinetd + +* Fri Oct 12 2007 Simo Sorce 3.0.0-0.pre2.fc9 +- Second prerelease + +* Wed Oct 10 2007 Simo Sorce 3.0.0-0.pre1.fc9 +- New Major version prerelease + +* Wed Sep 5 2007 Simo Sorce 2.6.9-3.fc8 +- Add patch to fix crash bug with hardlinks and ACLs patches + +* Mon Feb 19 2007 Adam Jackson 2.6.9-2 +- Add dist tag to Release to fix upgrades from FC5 or FC6. + +* Mon Feb 19 2007 Simo Sorce - 2.6.9-2 +- fix acl/xattr bug with --delete: (bz#229145) + +* Wed Nov 22 2006 Florian La Roche - 2.6.9-1 +- update to 2.6.9 + +* Wed Jul 12 2006 Jesse Keating - 2.6.8-3.1 +- rebuild + +* Fri Jun 9 2006 Jay Fenlason 2.6.8-3 +- Add my xattrs_bug patch to fix a bug where xattrs don't get sent correctly. +- Add BuildRequires to make sure libattr-devel and libacl-devel are avaliable +- replace --with... with --enable... so they actually work +- Add make, autoconf and gcc to BuildRequires + +* Mon May 8 2006 Jay Fenlason 2.6.8-2 +- New upstream release +- Use the upstream xattr patch instead of mine. This closes + bz#190208 CVE-2006-2083 rsync buffer overflow issue + +* Fri Feb 10 2006 Jesse Keating - 2.6.6-2.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 2.6.6-2.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Jul 28 2005 Jay Fenlason 2.6.6-2 +- New upstream release. See the NEWS file for details. + +* Thu Jun 2 2005 Jay Fenlason 2.6.5-2 +- New upstream release + +* Tue May 17 2005 Jay Fenlason 2.6.5-0.pre1.0 +- new upstream pre-release + +* Tue May 17 2005 Jay Fenlason 2.6.4-3 +- Include the -address patch from upstream, to close + bz#154752 Unable to use --address in client mode + +* Thu Mar 31 2005 Jay Fenlason 2.6.4-2 +- New upstream version + +* Wed Mar 2 2005 Jay Fenlason 2.6.3-3 +- bump release, rebuild with gcc4 +- pass RPM_OPT_FLAGS to make + +* Thu Feb 10 2005 Jay Fenlason 2.6.3-2 +- Added my -xattr patch, which is based on the -acl patch. + +* Thu Sep 30 2004 Jay Fenlason 2.6.3-1 +- New upstream release. + +* Tue Sep 21 2004 Jay Fenlason 2.6.3-0.pre2 +- new upstream version. + +* Tue Aug 17 2004 Jay Fenlason 2.6.3-0.pre1 +- New upstream version with security fix for CAN-2004-0792 +- This obsoletes the -lastdir-corruption patch. + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue May 25 2004 Mark McLoughlin - 2.6.2-1 +- Backport fix for crasher when passing multiple directories of the same + length (bug #123708) + +* Fri Apr 30 2004 Jay Fenlason 2.6.2-0 +- New upstream version to correct the problems with 2.6.1. + This obsoletes all the patches to 2.6.1 + +* Thu Apr 29 2004 Jay Fenlason 2.6.1-1 +- Rsync 2.6.1 final. +- Add a patch from Wayne Davison that fixes a + use of uninitilized memory in the map_uid and map_gid functions. +- Add another patch from Wayne Davidson that fixes the -R option. +- Add a patch (extracted from a patch by Sami Farin + ) to not ignore the return value + of close(). + +* Thu Mar 25 2004 Jay Fenlason 2.6.1-0.pre1 +- New upstream version + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Mon Jan 5 2004 Jay Fenlason 2.6.0-0 +- New upstream version, obsoletes the rsync-2.5.6-signal.patch + +* Wed Dec 3 2003 Bill Nottingham 2.5.7-2 +- rebuild + +* Wed Dec 3 2003 Bill Nottingham 2.5.7-1 +- update to 2.5.7 + +* Tue Aug 05 2003 Hardy Merrill 2.5.6-20 +- rebuild in new build env + +* Tue Aug 05 2003 Lon Hohberger 2.5.6-19 +- spec file fix + +* Tue Aug 05 2003 Hardy Merrill 2.5.6-18 +- rebuild in new build env + +* Tue Aug 05 2003 Hardy Merrill 2.5.6-17 +- fixed spec - added patch0 to prep. + +* Tue Aug 05 2003 Hardy Merrill 2.5.6-16 +- rebuild in new build env + +* Mon Aug 04 2003 Hardy Merrill 2.5.6-15 +- add rsync-2.5.6-signal.patch to fix kernel warnings that + appear because socket.c sets SIGCHLD to SIG_IGN and then + calls wait. This is in response to bug#98740. This patch + *has* been committed to CVS upstream and will be in + upstream rsync-2.5.7. + +* Fri Jun 13 2003 Hardy Merrill 2.5.6-14 +- build scratch - for compile warnings + +* Fri Jun 13 2003 Hardy Merrill 2.5.6-13 +- build scratch - for compile warnings + +* Thu Jun 12 2003 Hardy Merrill 2.5.6-12 +- rebuild in new build env + +* Thu Jun 12 2003 Hardy Merrill 2.5.6-11 +- removed rsync-2.5.6-sign.patch. Upstream code + incorporates signed vs unsigned changes. + +* Wed Jun 11 2003 Hardy Merrill 2.5.6-10_CVSHEAD_signpatch +- build scratch - added rsync-2.5.6-sign.patch. + +* Wed Jun 11 2003 Hardy Merrill 2.5.6-9_CVSHEAD_nopatches +- build scratch. + +* Wed Jun 11 2003 Hardy Merrill 2.5.6-8 +- build scratch - deleted rsync-2.5.6-sign.patch. + +* Mon Jun 09 2003 Hardy Merrill 2.5.6-7 +- rebuild in new build env + +* Thu Jun 05 2003 Hardy Merrill 2.5.6-6 +- removed patch rsync-2.5.4-maxdel.patch +- removed patch rsync-2.4.6-segv.patch + - current 2.5.6 properly handles (no segfault) the situation + (rsync '[a]') that caused a need for this patch. +- added patch rsync-2.5.6-sign.patch, which is a working + subset of patches (that still apply) included in the original + rsync-2.5.4-moresignage.patch + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Tue Mar 11 2003 Hardy Merrill 2.5.6-4 +- rebuild in new build env + +* Tue Mar 11 2003 Hardy Merrill 2.5.6-3 +- fixed changelog comments + +* Mon Mar 10 2003 Hardy Merrill 2.5.6-2 +- rebuild in new build env + +* Mon Mar 10 2003 Hardy Merrill 2.5.6-1 +- update to 2.5.6 from upstream + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Fri Jan 17 2003 Hardy Merrill 2.5.5-3 +- fix spelling mistake in rsync.xinetd. #66036 & dup #75006 + +* Wed Dec 11 2002 Tim Powers 2.5.5-2 +- rebuild on all arches + +* Mon Jun 24 2002 Bill Nottingham 2.5.5-1 +- update to 2.5.5 + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Wed Apr 10 2002 Bill Nottingham 2.5.4-2 +- upstream patches: fix accidental use of --whole-file, fix + minor memory leak, and bad worst-case child kill behavior +- make passing -e to rsync:// URLs not cause an error exit (#62489) + +* Wed Mar 13 2002 Bill Nottingham 2.5.4-1 +- update to 2.5.4, do assorted patchmerging + +* Wed Feb 20 2002 Bill Nottingham +- fix --address (#60127) +- call setgroups before dropping privs () + +* Mon Jan 28 2002 Bill Nottingham +- fix some errors in the unsigned patch + +* Sun Jan 27 2002 Bill Nottingham +- rebuild to get proper LFS_CFLAGS + +* Wed Jan 23 2002 Bill Nottingham +- fix some signed/unsigned issues () +- tweak ipv6 patch (#55337, ) +- make xinetd file %config(noreplace) + +* Fri Aug 17 2001 Bill Nottingham +- fix segfault on weird arguments (#51801) + +* Tue Jul 24 2001 Bill Nottingham +- IPv6 patch () (#47780) + +* Tue Jun 19 2001 Bill Nottingham +- add patch to fix hangs at end of sync, and other odd behaviors (#42111) + +* Sat Sep 30 2000 Florian La Roche +- add xinetd configuration + +* Tue Sep 26 2000 Bernhard Rosenkraenzer +- 2.4.6 + +* Mon Jul 31 2000 Bill Nottingham +- update to 2.4.4 - fixes yet another problem with rsh transport + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Sat Jun 10 2000 Bill Nottingham +- rebuild in new build env. + +* Mon Apr 10 2000 Bill Nottingham +- update to 2.4.3 + +* Tue Apr 4 2000 Bill Nottingham +- update to 2.4.2 + +* Tue Mar 7 2000 Bill Nottingham +- fix maxdelete behavior so it isn't sent to older servers. + +* Mon Jan 31 2000 Jeff Johnson +- update to 2.4.1. + +* Fri Dec 17 1999 Bill Nottingham +- update to 2.3.2 + +* Sat Jun 12 1999 Jeff Johnson +- add "max. delete" patch to limit damage when server is hosed. + +* Wed Apr 07 1999 Bill Nottingham +- update to 2.3.1. + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 2) + +* Tue Mar 16 1999 Jeff Johnson +- update to 2.3.0. + +* Sat Mar 13 1999 Jeff Johnson +- update to 2.3.0 beta. + +* Fri Dec 18 1998 Bill Nottingham +- update to 2.2.1 + +* Thu Sep 10 1998 Jeff Johnson +- updated to 2.1.1 + +* Mon Aug 17 1998 Erik Troan +- updated to 2.1.0 + +* Thu Aug 06 1998 Erik Troan +- buildrooted and attr-rophied +- removed tech-report.ps; the .tex should be good enough + +* Mon Aug 25 1997 John A. Martin +- Built 1.6.3-2 after finding no rsync-1.6.3-1.src.rpm although there + was an ftp://ftp.redhat.com/pub/contrib/alpha/rsync-1.6.3-1.alpha.rpm + showing no packager nor signature but giving + "Source RPM: rsync-1.6.3-1.src.rpm". +- Changes from 1.6.2-1 packaging: added '$RPM_OPT_FLAGS' to make, strip + to '%%build', removed '%%prefix'. + +* Thu Apr 10 1997 Michael De La Rue +- rsync-1.6.2-1 packaged. (This entry by jam to credit Michael for the + previous package(s).)