diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-01-08 06:09:28 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-01-08 06:09:28 +0000 |
commit | d468c2ce3f93bf698b768bc954bafcf93f583894 (patch) | |
tree | 6e932d29e50b39924f4a410d875f875033a23cfa /net-misc/rsync/files | |
parent | Update to 2.6.27.10 and add a 2.6.28 ebuild. (diff) | |
download | gentoo-2-d468c2ce3f93bf698b768bc954bafcf93f583894.tar.gz gentoo-2-d468c2ce3f93bf698b768bc954bafcf93f583894.tar.bz2 gentoo-2-d468c2ce3f93bf698b768bc954bafcf93f583894.zip |
old
Diffstat (limited to 'net-misc/rsync/files')
-rw-r--r-- | net-misc/rsync/files/rsync-2.6.9-delete-acls-xattr.patch | 50 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-2.6.9-fname-obo.patch | 62 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-2.6.9-munge-symlinks.patch | 344 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-2.6.9-pid-early.patch | 45 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-2.6.9-stats-fix.patch | 84 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-3.0.0-NULL-config.patch | 62 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-3.0.0-acl-crash.patch | 110 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-3.0.0-dry-run-hang.patch | 19 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-3.0.0-fake-super-attrs.patch | 243 | ||||
-rw-r--r-- | net-misc/rsync/files/rsync-3.0.1-xattr-alloc.diff | 38 |
10 files changed, 0 insertions, 1057 deletions
diff --git a/net-misc/rsync/files/rsync-2.6.9-delete-acls-xattr.patch b/net-misc/rsync/files/rsync-2.6.9-delete-acls-xattr.patch deleted file mode 100644 index 5fcac75fb3cd..000000000000 --- a/net-misc/rsync/files/rsync-2.6.9-delete-acls-xattr.patch +++ /dev/null @@ -1,50 +0,0 @@ -fix from upstream for using --delete with acls/xattrs - -http://www.mail-archive.com/rsync@lists.samba.org/msg17506.html -http://bugs.gentoo.org/158130 - ---- rsync/flist.c -+++ rsync/flist.c -@@ -998,7 +998,7 @@ - file->mode = tweak_mode(file->mode, chmod_modes); - - #ifdef SUPPORT_ACLS -- if (preserve_acls) { -+ if (preserve_acls && f >= 0) { - sx.st.st_mode = file->mode; - sx.acc_acl = sx.def_acl = NULL; - if (get_acl(fname, &sx) < 0) -@@ -1006,7 +1006,7 @@ - } - #endif - #ifdef SUPPORT_XATTRS -- if (preserve_xattrs) { -+ if (preserve_xattrs && f >= 0) { - sx.xattr = NULL; - if (get_xattr(fname, &sx) < 0) - return NULL; -@@ -1021,20 +1021,20 @@ - flist->files[flist->count++] = file; - send_file_entry(file, f); - #ifdef SUPPORT_ACLS -- if (preserve_acls) -+ if (preserve_acls && f >= 0) - send_acl(&sx, f); - #endif - #ifdef SUPPORT_XATTRS -- if (preserve_xattrs) -+ if (preserve_xattrs && f >= 0) - send_xattr(&sx, f); - #endif - } else { - #ifdef SUPPORT_ACLS -- if (preserve_acls) -+ if (preserve_acls && f >= 0) - free_acl(&sx); - #endif - #ifdef SUPPORT_XATTRS -- if (preserve_xattrs) -+ if (preserve_xattrs && f >= 0) - free_xattr(&sx); - #endif - } diff --git a/net-misc/rsync/files/rsync-2.6.9-fname-obo.patch b/net-misc/rsync/files/rsync-2.6.9-fname-obo.patch deleted file mode 100644 index 4b0a5a28ac9f..000000000000 --- a/net-misc/rsync/files/rsync-2.6.9-fname-obo.patch +++ /dev/null @@ -1,62 +0,0 @@ -http://bugs.gentoo.org/189132 - ---- rsync-2.6.9/sender.c -+++ rsync-2.6.9/sender.c -@@ -123,6 +123,7 @@ - char fname[MAXPATHLEN]; - struct file_struct *file; - unsigned int offset; -+ size_t l = 0; - - if (ndx < 0 || ndx >= the_file_list->count) - return; -@@ -133,6 +134,20 @@ - file->dir.root, "/", NULL); - } else - offset = 0; -+ -+ l = offset + 1; -+ if (file) { -+ if (file->dirname) -+ l += strlen(file->dirname); -+ if (file->basename) -+ l += strlen(file->basename); -+ } -+ -+ if (l >= sizeof(fname)) { -+ rprintf(FERROR, "Overlong pathname\n"); -+ exit_cleanup(RERR_FILESELECT); -+ } -+ - f_name(file, fname + offset); - if (remove_source_files) { - if (do_unlink(fname) == 0) { -@@ -224,6 +239,7 @@ - enum logcode log_code = log_before_transfer ? FLOG : FINFO; - int f_xfer = write_batch < 0 ? batch_fd : f_out; - int i, j; -+ size_t l = 0; - - if (verbose > 2) - rprintf(FINFO, "send_files starting\n"); -@@ -259,6 +275,20 @@ - fname[offset++] = '/'; - } else - offset = 0; -+ -+ l = offset + 1; -+ if (file) { -+ if (file->dirname) -+ l += strlen(file->dirname); -+ if (file->basename) -+ l += strlen(file->basename); -+ } -+ -+ if (l >= sizeof(fname)) { -+ rprintf(FERROR, "Overlong pathname\n"); -+ exit_cleanup(RERR_FILESELECT); -+ } -+ - fname2 = f_name(file, fname + offset); - - if (verbose > 2) diff --git a/net-misc/rsync/files/rsync-2.6.9-munge-symlinks.patch b/net-misc/rsync/files/rsync-2.6.9-munge-symlinks.patch deleted file mode 100644 index efe1e16be029..000000000000 --- a/net-misc/rsync/files/rsync-2.6.9-munge-symlinks.patch +++ /dev/null @@ -1,344 +0,0 @@ -http://rsync.samba.org/ftp/rsync/munge-symlinks-2.6.9.diff - -http://bugs.gentoo.org/200821 - ---- rsync-2.6.9/clientserver.c 2006-10-23 17:36:42.000000000 -0700 -+++ ./clientserver.c 2007-11-26 21:32:53.000000000 -0800 -@@ -55,6 +55,7 @@ extern struct filter_list_struct server_ - char *auth_user; - int read_only = 0; - int module_id = -1; -+int munge_symlinks = 0; - struct chmod_mode_struct *daemon_chmod_modes; - - /* Length of lp_path() string when in daemon mode & not chrooted, else 0. */ -@@ -524,6 +525,18 @@ static int rsync_module(int f_in, int f_ - sanitize_paths = 1; - } - -+ if ((munge_symlinks = lp_munge_symlinks(i)) < 0) -+ munge_symlinks = !use_chroot; -+ if (munge_symlinks) { -+ STRUCT_STAT st; -+ if (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); -+ exit_cleanup(RERR_UNSUPPORTED); -+ } -+ } -+ - if (am_root) { - /* XXXX: You could argue that if the daemon is started - * by a non-root user and they explicitly specify a ---- rsync-2.6.9/flist.c 2006-10-13 18:17:36.000000000 -0700 -+++ ./flist.c 2007-11-27 12:56:25.000000000 -0800 -@@ -53,6 +53,7 @@ extern int copy_links; - extern int copy_unsafe_links; - extern int protocol_version; - extern int sanitize_paths; -+extern int munge_symlinks; - extern struct stats stats; - extern struct file_list *the_file_list; - -@@ -174,6 +175,11 @@ static int readlink_stat(const char *pat - } - return do_stat(path, stp); - } -+ if (munge_symlinks && am_sender && llen > SYMLINK_PREFIX_LEN -+ && strncmp(linkbuf, SYMLINK_PREFIX, SYMLINK_PREFIX_LEN) == 0) { -+ memmove(linkbuf, linkbuf + SYMLINK_PREFIX_LEN, -+ llen - SYMLINK_PREFIX_LEN + 1); -+ } - } - return 0; - #else -@@ -591,6 +597,8 @@ static struct file_struct *receive_file_ - linkname_len - 1); - overflow_exit("receive_file_entry"); - } -+ if (munge_symlinks) -+ linkname_len += SYMLINK_PREFIX_LEN; - } - else - #endif -@@ -658,10 +666,17 @@ static struct file_struct *receive_file_ - #ifdef SUPPORT_LINKS - if (linkname_len) { - file->u.link = bp; -+ if (munge_symlinks) { -+ strlcpy(bp, SYMLINK_PREFIX, linkname_len); -+ bp += SYMLINK_PREFIX_LEN; -+ linkname_len -= SYMLINK_PREFIX_LEN; -+ } - read_sbuf(f, bp, linkname_len - 1); -- if (sanitize_paths) -+ if (sanitize_paths && !munge_symlinks) { - sanitize_path(bp, bp, "", lastdir_depth, NULL); -- bp += linkname_len; -+ bp += strlen(bp) + 1; -+ } else -+ bp += linkname_len; - } - #endif - ---- rsync-2.6.9/loadparm.c 2006-10-12 23:49:44.000000000 -0700 -+++ ./loadparm.c 2007-11-26 11:46:46.000000000 -0800 -@@ -153,6 +153,7 @@ typedef struct - BOOL ignore_errors; - BOOL ignore_nonreadable; - BOOL list; -+ BOOL munge_symlinks; - BOOL read_only; - BOOL strict_modes; - BOOL transfer_logging; -@@ -200,6 +201,7 @@ static service sDefault = - /* ignore_errors; */ False, - /* ignore_nonreadable; */ False, - /* list; */ True, -+ /* munge_symlinks; */ (BOOL)-1, - /* read_only; */ True, - /* strict_modes; */ True, - /* transfer_logging; */ False, -@@ -313,6 +315,7 @@ static struct parm_struct parm_table[] = - {"log format", P_STRING, P_LOCAL, &sDefault.log_format, NULL,0}, - {"max connections", P_INTEGER,P_LOCAL, &sDefault.max_connections, NULL,0}, - {"max verbosity", P_INTEGER,P_LOCAL, &sDefault.max_verbosity, NULL,0}, -+ {"munge symlinks", P_BOOL, P_LOCAL, &sDefault.munge_symlinks, NULL,0}, - {"name", P_STRING, P_LOCAL, &sDefault.name, NULL,0}, - {"outgoing chmod", P_STRING, P_LOCAL, &sDefault.outgoing_chmod, NULL,0}, - {"path", P_PATH, P_LOCAL, &sDefault.path, NULL,0}, -@@ -415,6 +418,7 @@ FN_LOCAL_INTEGER(lp_timeout, timeout) - FN_LOCAL_BOOL(lp_ignore_errors, ignore_errors) - FN_LOCAL_BOOL(lp_ignore_nonreadable, ignore_nonreadable) - FN_LOCAL_BOOL(lp_list, list) -+FN_LOCAL_BOOL(lp_munge_symlinks, munge_symlinks) - FN_LOCAL_BOOL(lp_read_only, read_only) - FN_LOCAL_BOOL(lp_strict_modes, strict_modes) - FN_LOCAL_BOOL(lp_transfer_logging, transfer_logging) ---- rsync-2.6.9/proto.h 2006-11-06 20:39:47.000000000 -0800 -+++ ./proto.h 2007-11-27 13:15:23.000000000 -0800 -@@ -176,6 +176,7 @@ int lp_timeout(int ); - BOOL lp_ignore_errors(int ); - BOOL lp_ignore_nonreadable(int ); - BOOL lp_list(int ); -+BOOL lp_munge_symlinks(int ); - BOOL lp_read_only(int ); - BOOL lp_strict_modes(int ); - BOOL lp_transfer_logging(int ); ---- rsync-2.6.9/rsync.h 2006-10-23 20:31:30.000000000 -0700 -+++ ./rsync.h 2007-11-26 21:34:11.000000000 -0800 -@@ -33,6 +33,9 @@ - #define DEFAULT_LOCK_FILE "/var/run/rsyncd.lock" - #define URL_PREFIX "rsync://" - -+#define SYMLINK_PREFIX "/rsyncd-munged/" -+#define SYMLINK_PREFIX_LEN ((int)sizeof SYMLINK_PREFIX - 1) -+ - #define BACKUP_SUFFIX "~" - - /* a non-zero CHAR_OFFSET makes the rolling sum stronger, but is ---- rsync-2.6.9/rsyncd.conf.5 2006-11-06 20:39:52.000000000 -0800 -+++ ./rsyncd.conf.5 2007-11-27 13:15:23.000000000 -0800 -@@ -145,12 +145,15 @@ the advantage of extra protection agains - holes, but it has the disadvantages of requiring super-user privileges, - of not being able to follow symbolic links that are either absolute or outside - of the new root path, and of complicating the preservation of usernames and groups --(see below)\&. When "use chroot" is false, for security reasons, --symlinks may only be relative paths pointing to other files within the root --path, and leading slashes are removed from most absolute paths (options --such as \fB\-\-backup\-dir\fP, \fB\-\-compare\-dest\fP, etc\&. interpret an absolute path as --rooted in the module\&'s "path" dir, just as if chroot was specified)\&. --The default for "use chroot" is true\&. -+(see below)\&. When "use chroot" is false, rsync will: (1) munge symlinks by -+default for security reasons (see "munge symlinks" for a way to turn this -+off, but only if you trust your users), (2) substitute leading slashes in -+absolute paths with the module\&'s path (so that options such as -+\fB\-\-backup\-dir\fP, \fB\-\-compare\-dest\fP, etc\&. interpret an absolute path as -+rooted in the module\&'s "path" dir), and (3) trim "\&.\&." path elements from -+args if rsync believes they would escape the chroot\&. -+The default for "use chroot" is true, and is the safer choice (especially -+if the module is not read-only)\&. - .IP - In order to preserve usernames and groupnames, rsync needs to be able to - use the standard library functions for looking up names and IDs (i\&.e\&. -@@ -181,6 +184,41 @@ access to some of the excluded files ins - do this automatically, but you might as well specify both to be extra - sure)\&. - .IP -+.IP "\fBmunge symlinks\fP" -+The "munge symlinks" option tells rsync to modify -+all incoming symlinks in a way that makes them unusable but recoverable -+(see below)\&. This should help protect your files from user trickery when -+your daemon module is writable\&. The default is disabled when "use chroot" -+is on and enabled when "use chroot" is off\&. -+.IP -+If you disable this option on a daemon that is not read-only, there -+are tricks that a user can play with uploaded symlinks to access -+daemon-excluded items (if your module has any), and, if "use chroot" -+is off, rsync can even be tricked into showing or changing data that -+is outside the module\&'s path (as access-permissions allow)\&. -+.IP -+The way rsync disables the use of symlinks is to prefix each one with -+the string "/rsyncd-munged/"\&. This prevents the links from being used -+as long as that directory does not exist\&. When this option is enabled, -+rsync will refuse to run if that path is a directory or a symlink to -+a directory\&. When using the "munge symlinks" option in a chroot area, -+you should add this path to the exclude setting for the module so that -+the user can\&'t try to create it\&. -+.IP -+Note: rsync makes no attempt to verify that any pre-existing symlinks in -+the hierarchy are as safe as you want them to be\&. If you setup an rsync -+daemon on a new area or locally add symlinks, you can manually protect your -+symlinks from being abused by prefixing "/rsyncd-munged/" to the start of -+every symlink\&'s value\&. There is a perl script in the support directory -+of the source code named "munge-symlinks" that can be used to add or remove -+this prefix from your symlinks\&. -+.IP -+When this option is disabled on a writable module and "use chroot" is off, -+incoming symlinks will be modified to drop a leading slash and to remove "\&.\&." -+path elements that rsync believes will allow a symlink to escape the module\&'s -+hierarchy\&. There are tricky ways to work around this, though, so you had -+better trust your users if you choose this combination of options\&. -+.IP - .IP "\fBmax connections\fP" - The "max connections" option allows you to - specify the maximum number of simultaneous connections you will allow\&. ---- rsync-2.6.9/rsyncd.conf.yo 2006-11-06 20:39:47.000000000 -0800 -+++ ./rsyncd.conf.yo 2007-11-27 13:14:07.000000000 -0800 -@@ -129,12 +129,15 @@ the advantage of extra protection agains - holes, but it has the disadvantages of requiring super-user privileges, - of not being able to follow symbolic links that are either absolute or outside - of the new root path, and of complicating the preservation of usernames and groups --(see below). When "use chroot" is false, for security reasons, --symlinks may only be relative paths pointing to other files within the root --path, and leading slashes are removed from most absolute paths (options --such as bf(--backup-dir), bf(--compare-dest), etc. interpret an absolute path as --rooted in the module's "path" dir, just as if chroot was specified). --The default for "use chroot" is true. -+(see below). When "use chroot" is false, rsync will: (1) munge symlinks by -+default for security reasons (see "munge symlinks" for a way to turn this -+off, but only if you trust your users), (2) substitute leading slashes in -+absolute paths with the module's path (so that options such as -+bf(--backup-dir), bf(--compare-dest), etc. interpret an absolute path as -+rooted in the module's "path" dir), and (3) trim ".." path elements from -+args if rsync believes they would escape the chroot. -+The default for "use chroot" is true, and is the safer choice (especially -+if the module is not read-only). - - In order to preserve usernames and groupnames, rsync needs to be able to - use the standard library functions for looking up names and IDs (i.e. -@@ -158,6 +161,40 @@ access to some of the excluded files ins - do this automatically, but you might as well specify both to be extra - sure). - -+dit(bf(munge symlinks)) The "munge symlinks" option tells rsync to modify -+all incoming symlinks in a way that makes them unusable but recoverable -+(see below). This should help protect your files from user trickery when -+your daemon module is writable. The default is disabled when "use chroot" -+is on and enabled when "use chroot" is off. -+ -+If you disable this option on a daemon that is not read-only, there -+are tricks that a user can play with uploaded symlinks to access -+daemon-excluded items (if your module has any), and, if "use chroot" -+is off, rsync can even be tricked into showing or changing data that -+is outside the module's path (as access-permissions allow). -+ -+The way rsync disables the use of symlinks is to prefix each one with -+the string "/rsyncd-munged/". This prevents the links from being used -+as long as that directory does not exist. When this option is enabled, -+rsync will refuse to run if that path is a directory or a symlink to -+a directory. When using the "munge symlinks" option in a chroot area, -+you should add this path to the exclude setting for the module so that -+the user can't try to create it. -+ -+Note: rsync makes no attempt to verify that any pre-existing symlinks in -+the hierarchy are as safe as you want them to be. If you setup an rsync -+daemon on a new area or locally add symlinks, you can manually protect your -+symlinks from being abused by prefixing "/rsyncd-munged/" to the start of -+every symlink's value. There is a perl script in the support directory -+of the source code named "munge-symlinks" that can be used to add or remove -+this prefix from your symlinks. -+ -+When this option is disabled on a writable module and "use chroot" is off, -+incoming symlinks will be modified to drop a leading slash and to remove ".." -+path elements that rsync believes will allow a symlink to escape the module's -+hierarchy. There are tricky ways to work around this, though, so you had -+better trust your users if you choose this combination of options. -+ - dit(bf(max connections)) The "max connections" option allows you to - specify the maximum number of simultaneous connections you will allow. - Any clients connecting when the maximum has been reached will receive a ---- rsync-2.6.9/support/munge-symlinks 1969-12-31 16:00:00.000000000 -0800 -+++ ./support/munge-symlinks 2007-11-26 22:04:26.000000000 -0800 -@@ -0,0 +1,60 @@ -+#!/usr/bin/perl -+# This script will either prefix all symlink values with the string -+# "/rsyncd-munged/" or remove that prefix. -+ -+use strict; -+use Getopt::Long; -+ -+my $SYMLINK_PREFIX = '/rsyncd-munged/'; -+ -+my $munge_opt; -+ -+&GetOptions( -+ 'munge' => sub { $munge_opt = 1 }, -+ 'unmunge' => sub { $munge_opt = 0 }, -+ 'all' => \( my $all_opt ), -+ 'help|h' => \( my $help_opt ), -+) or &usage; -+ -+&usage if $help_opt || !defined $munge_opt; -+ -+my $munged_re = $all_opt ? qr/^($SYMLINK_PREFIX)+(?=.)/ : qr/^$SYMLINK_PREFIX(?=.)/; -+ -+push(@ARGV, '.') unless @ARGV; -+ -+open(PIPE, '-|', 'find', @ARGV, '-type', 'l') or die $!; -+ -+while (<PIPE>) { -+ chomp; -+ my $lnk = readlink($_) or next; -+ if ($munge_opt) { -+ next if !$all_opt && $lnk =~ /$munged_re/; -+ $lnk =~ s/^/$SYMLINK_PREFIX/; -+ } else { -+ next unless $lnk =~ s/$munged_re//; -+ } -+ if (!unlink($_)) { -+ warn "Unable to unlink symlink: $_ ($!)\n"; -+ } elsif (!symlink($lnk, $_)) { -+ warn "Unable to recreate symlink: $_ -> $lnk ($!)\n"; -+ } else { -+ print "$_ -> $lnk\n"; -+ } -+} -+ -+close PIPE; -+exit; -+ -+sub usage -+{ -+ die <<EOT; -+Usage: munge-symlinks --munge|--unmunge [--all] [DIR|SYMLINK...] -+ -+--munge Add the $SYMLINK_PREFIX prefix to symlinks if not already -+ present, or always when combined with --all. -+--unmunge Remove one $SYMLINK_PREFIX prefix from symlinks or all -+ such prefixes with --all. -+ -+See the "munge symlinks" option in the rsyncd.conf manpage for more details. -+EOT -+} ---- rsync-2.6.9/testsuite/rsync.fns 2006-05-30 11:26:17.000000000 -0700 -+++ ./testsuite/rsync.fns 2007-11-26 11:49:35.000000000 -0800 -@@ -231,6 +231,7 @@ build_rsyncd_conf() { - - pid file = $pidfile - use chroot = no -+munge symlinks = no - hosts allow = localhost 127.0.0.1 $hostname - log file = $logfile - log format = %i %h [%a] %m (%u) %l %f%L diff --git a/net-misc/rsync/files/rsync-2.6.9-pid-early.patch b/net-misc/rsync/files/rsync-2.6.9-pid-early.patch deleted file mode 100644 index 6a2daec9722d..000000000000 --- a/net-misc/rsync/files/rsync-2.6.9-pid-early.patch +++ /dev/null @@ -1,45 +0,0 @@ -http://bugs.gentoo.org/192075 -https://bugzilla.samba.org/show_bug.cgi?id=4998 - ---- a/clientserver.c -+++ b/clientserver.c -@@ -830,21 +830,14 @@ - return start_daemon(STDIN_FILENO, STDIN_FILENO); - } - -- if (!no_detach) -- become_daemon(); -- - if (!lp_load(config_file, 1)) - exit_cleanup(RERR_SYNTAX); - -- if (rsync_port == 0 && (rsync_port = lp_rsync_port()) == 0) -- rsync_port = RSYNC_PORT; -- if (bind_address == NULL && *lp_bind_address()) -- bind_address = lp_bind_address(); -- - log_init(0); - -- rprintf(FLOG, "rsyncd version %s starting, listening on port %d\n", -- RSYNC_VERSION, rsync_port); -+ if (!no_detach) -+ become_daemon(); -+ - /* TODO: If listening on a particular address, then show that - * address too. In fact, why not just do inet_ntop on the - * local address??? */ -@@ -866,6 +859,14 @@ - close(fd); - } - -+ if (rsync_port == 0 && (rsync_port = lp_rsync_port()) == 0) -+ rsync_port = RSYNC_PORT; -+ if (bind_address == NULL && *lp_bind_address()) -+ bind_address = lp_bind_address(); -+ -+ rprintf(FLOG, "rsyncd version %s starting, listening on port %d\n", -+ RSYNC_VERSION, rsync_port); -+ - start_accept_loop(rsync_port, start_daemon); - return -1; - } diff --git a/net-misc/rsync/files/rsync-2.6.9-stats-fix.patch b/net-misc/rsync/files/rsync-2.6.9-stats-fix.patch deleted file mode 100644 index dd75b6ee7dae..000000000000 --- a/net-misc/rsync/files/rsync-2.6.9-stats-fix.patch +++ /dev/null @@ -1,84 +0,0 @@ -http://bugs.gentoo.org/165121 - ---- old/flist.c -+++ new/flist.c -@@ -476,6 +476,9 @@ static void send_file_entry(struct file_ - } - - strlcpy(lastname, fname, MAXPATHLEN); -+ -+ if (S_ISREG(mode) || S_ISLNK(mode)) -+ stats.total_size += file->length; - } - - static struct file_struct *receive_file_entry(struct file_list *flist, -@@ -699,6 +702,9 @@ static struct file_struct *receive_file_ - read_buf(f, sum, checksum_len); - } - -+ if (S_ISREG(mode) || S_ISLNK(mode)) -+ stats.total_size += file_length; -+ - return file; - } - -@@ -938,9 +944,6 @@ struct file_struct *make_file(char *fnam - file->mode = save_mode; - } - -- if (S_ISREG(st.st_mode) || S_ISLNK(st.st_mode)) -- stats.total_size += st.st_size; -- - return file; - } - -@@ -1357,9 +1360,6 @@ struct file_list *recv_file_list(int f) - flags |= read_byte(f) << 8; - file = receive_file_entry(flist, flags, f); - -- if (S_ISREG(file->mode) || S_ISLNK(file->mode)) -- stats.total_size += file->length; -- - flist->files[flist->count++] = file; - - maybe_emit_filelist_progress(flist->count); ---- old/io.c -+++ new/io.c -@@ -245,10 +245,15 @@ static void read_msg_fd(void) - - switch (tag) { - case MSG_DONE: -- if (len != 0 || !am_generator) { -+ if ((len != 0 && len != 8) || !am_generator) { - rprintf(FERROR, "invalid message %d:%d\n", tag, len); - exit_cleanup(RERR_STREAMIO); - } -+ if (len) { -+ read_loop(fd, buf, 8); -+ stats.total_read = IVAL(buf, 0) -+ | (((int64)IVAL(buf, 4)) << 32); -+ } - flist_ndx_push(&redo_list, -1); - break; - case MSG_REDO: ---- old/main.c -+++ new/main.c -@@ -710,6 +710,7 @@ static int do_recv(int f_in,int f_out,st - } - - if (pid == 0) { -+ char numbuf[8]; - close(error_pipe[0]); - if (f_in != f_out) - close(f_out); -@@ -724,7 +725,9 @@ static int do_recv(int f_in,int f_out,st - io_flush(FULL_FLUSH); - handle_stats(f_in); - -- send_msg(MSG_DONE, "", 0); -+ SIVAL(numbuf, 0, (stats.total_read & 0xFFFFFFFF)); -+ SIVAL(numbuf, 4, ((stats.total_read >> 32) & 0xFFFFFFFF)); -+ send_msg(MSG_DONE, numbuf, 8); - io_flush(FULL_FLUSH); - - /* Handle any keep-alive packets from the post-processing work diff --git a/net-misc/rsync/files/rsync-3.0.0-NULL-config.patch b/net-misc/rsync/files/rsync-3.0.0-NULL-config.patch deleted file mode 100644 index 35ec07f6b1af..000000000000 --- a/net-misc/rsync/files/rsync-3.0.0-NULL-config.patch +++ /dev/null @@ -1,62 +0,0 @@ -commit d1c06c2180f337deaa059fc408fcca4f4770a585 -Author: Wayne Davison <wayned@samba.org> -Date: Mon Mar 3 18:33:11 2008 -0800 - - Fixing a problem with a NULL config_file pointer when accessing - a single-use daemon without no --config option specified. Added - a test to ensure that this doesn't break in the future. - -diff --git a/clientserver.c b/clientserver.c -index a330111..7c15e3b 100644 ---- a/clientserver.c -+++ b/clientserver.c -@@ -864,6 +864,17 @@ static void send_listing(int fd) - io_printf(fd,"@RSYNCD: EXIT\n"); - } - -+static int load_config(int globals_only) -+{ -+ if (!config_file) { -+ if (am_server && am_root <= 0) -+ config_file = RSYNCD_USERCONF; -+ else -+ config_file = RSYNCD_SYSCONF; -+ } -+ return lp_load(config_file, globals_only); -+} -+ - /* this is called when a connection is established to a client - and we want to start talking. The setup of the system is done from - here */ -@@ -879,7 +890,7 @@ int start_daemon(int f_in, int f_out) - * might cause log-file output to occur. This ensures that the - * "log file" param gets honored for the 2 non-forked use-cases - * (when rsync is run by init and run by a remote shell). */ -- if (!lp_load(config_file, 0)) -+ if (!load_config(0)) - exit_cleanup(RERR_SYNTAX); - - addr = client_addr(f_in); -@@ -988,13 +999,6 @@ static void become_daemon(void) - - int daemon_main(void) - { -- if (!config_file) { -- if (am_server && am_root <= 0) -- config_file = RSYNCD_USERCONF; -- else -- config_file = RSYNCD_SYSCONF; -- } -- - if (is_a_socket(STDIN_FILENO)) { - int i; - -@@ -1009,7 +1013,7 @@ int daemon_main(void) - return start_daemon(STDIN_FILENO, STDIN_FILENO); - } - -- if (!lp_load(config_file, 1)) { -+ if (!load_config(1)) { - fprintf(stderr, "Failed to parse config file: %s\n", config_file); - exit_cleanup(RERR_SYNTAX); - } diff --git a/net-misc/rsync/files/rsync-3.0.0-acl-crash.patch b/net-misc/rsync/files/rsync-3.0.0-acl-crash.patch deleted file mode 100644 index cb3ad74ccc22..000000000000 --- a/net-misc/rsync/files/rsync-3.0.0-acl-crash.patch +++ /dev/null @@ -1,110 +0,0 @@ -commit d6c9c3319b191d196c323174c0dc11c834ae9e75 -Author: Wayne Davison <wayned@samba.org> -Date: Sat Mar 15 00:43:31 2008 -0700 - - - Fixed a crash bug when backing up files with ACLs enabled and we - create a directory in the backup-path area. - - Fixed a bug where make_file() was setting F_PATHNAME() on the - receiving side. - - A non-pool (temp-memory) file structure now stores the size of - its extra_cnt value in the F_DEPTH() int so that unmake_file() - can always be sure of how to free() the memory. - - The ACL-preserving code no longer allocates 4 more bytes per - file entry than it needs. - - Got rid of a useless adding of the symlink length to "bp". - -diff --git a/flist.c b/flist.c -index 665fa19..489d92c 100644 ---- a/flist.c -+++ b/flist.c -@@ -819,9 +819,9 @@ static struct file_struct *recv_file_entry(struct file_list *flist, - #endif - - #ifdef SUPPORT_ACLS -- /* We need one or two index int32s when we're preserving ACLs. */ -- if (preserve_acls) -- extra_len += (S_ISDIR(mode) ? 2 : 1) * EXTRA_LEN; -+ /* Directories need an extra int32 for the default ACL. */ -+ if (preserve_acls && S_ISDIR(mode)) -+ extra_len += EXTRA_LEN; - #endif - - if (always_checksum && S_ISREG(mode)) -@@ -854,7 +854,7 @@ static struct file_struct *recv_file_entry(struct file_list *flist, - bp += FILE_STRUCT_LEN; - - memcpy(bp, basename, basename_len); -- bp += basename_len + linkname_len; /* skip space for symlink too */ -+ bp += basename_len; - - #ifdef SUPPORT_HARD_LINKS - if (xflags & XMIT_HLINKED) -@@ -919,7 +919,6 @@ static struct file_struct *recv_file_entry(struct file_list *flist, - - #ifdef SUPPORT_LINKS - if (linkname_len) { -- bp = (char*)file->basename + basename_len; - if (first_hlink_ndx >= flist->ndx_start) { - struct file_struct *first = flist->files[first_hlink_ndx - flist->ndx_start]; - memcpy(bp, F_SYMLINK(first), linkname_len); -@@ -1123,8 +1122,14 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, - pool = dir_flist->file_pool; - } else - pool = flist->file_pool; -- } else -+ } else { -+#ifdef SUPPORT_ACLS -+ /* Directories need an extra int32 for the default ACL. */ -+ if (preserve_acls && S_ISDIR(st.st_mode)) -+ extra_len += EXTRA_LEN; -+#endif - pool = NULL; -+ } - - if (verbose > 2) { - rprintf(FINFO, "[%s] make_file(%s,*,%d)\n", -@@ -1172,7 +1177,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, - bp += FILE_STRUCT_LEN; - - memcpy(bp, basename, basename_len); -- bp += basename_len + linkname_len; /* skip space for symlink too */ -+ bp += basename_len; - - #ifdef SUPPORT_HARD_LINKS - if (preserve_hard_links && flist && flist->prev) { -@@ -1210,16 +1215,17 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, - file->dirname = lastdir; - - #ifdef SUPPORT_LINKS -- if (linkname_len) { -- bp = (char*)file->basename + basename_len; -+ if (linkname_len) - memcpy(bp, linkname, linkname_len); -- } - #endif - - if (always_checksum && am_sender && S_ISREG(st.st_mode)) - file_checksum(thisname, tmp_sum, st.st_size); - -- F_PATHNAME(file) = pathname; -+ if (am_sender) -+ F_PATHNAME(file) = pathname; -+ else if (!pool) -+ F_DEPTH(file) = extra_len / EXTRA_LEN; - - /* This code is only used by the receiver when it is building - * a list of files for a delete pass. */ -@@ -1255,12 +1261,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, - /* Only called for temporary file_struct entries created by make_file(). */ - void unmake_file(struct file_struct *file) - { -- int extra_cnt = file_extra_cnt + LEN64_BUMP(file); --#if EXTRA_ROUNDING > 0 -- if (extra_cnt & EXTRA_ROUNDING) -- extra_cnt = (extra_cnt | EXTRA_ROUNDING) + 1; --#endif -- free(REQ_EXTRA(file, extra_cnt)); -+ free(REQ_EXTRA(file, F_DEPTH(file))); - } - - static struct file_struct *send_file_name(int f, struct file_list *flist, diff --git a/net-misc/rsync/files/rsync-3.0.0-dry-run-hang.patch b/net-misc/rsync/files/rsync-3.0.0-dry-run-hang.patch deleted file mode 100644 index 1f85ac7fa437..000000000000 --- a/net-misc/rsync/files/rsync-3.0.0-dry-run-hang.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit 24ded29ff63d0adee798936ad20f21befcf8187b -Author: Wayne Davison <wayned@samba.org> -Date: Sun Mar 16 06:56:26 2008 -0700 - - Fixed a hang when using --remove-source-files in dry-run mode. - -diff --git a/generator.c b/generator.c -index b1634bd..4ec0ac4 100644 ---- a/generator.c -+++ b/generator.c -@@ -1856,7 +1856,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, - rprintf(FINFO, "generating and sending sums for %d\n", ndx); - - notify_others: -- if (remove_source_files && !delay_updates && !phase) -+ if (remove_source_files && !delay_updates && !phase && !dry_run) - increment_active_files(ndx, itemizing, code); - if (inc_recurse && !dry_run) - cur_flist->in_progress++; diff --git a/net-misc/rsync/files/rsync-3.0.0-fake-super-attrs.patch b/net-misc/rsync/files/rsync-3.0.0-fake-super-attrs.patch deleted file mode 100644 index e11960a97ee4..000000000000 --- a/net-misc/rsync/files/rsync-3.0.0-fake-super-attrs.patch +++ /dev/null @@ -1,243 +0,0 @@ -commit cbbd8e2e8bf72aa46c84c7de43e19da40f040fa7 -Author: Wayne Davison <wayned@samba.org> -Date: Fri Mar 7 15:23:39 2008 -0800 - - The --fake-super option conflicts with -XX (which copies internal - rsync xattrs literally). - -diff --git a/clientserver.c b/clientserver.c -index 7c15e3b..6bcbc81 100644 ---- a/clientserver.c -+++ b/clientserver.c -@@ -32,6 +32,7 @@ extern int am_daemon; - extern int am_root; - extern int rsync_port; - extern int ignore_errors; -+extern int preserve_xattrs; - extern int kluge_around_eof; - extern int daemon_over_rsh; - extern int sanitize_paths; -@@ -745,9 +746,11 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) - if (write_batch < 0) - dry_run = 1; - -- if (lp_fake_super(i)) -+ if (lp_fake_super(i)) { -+ if (preserve_xattrs > 1) -+ preserve_xattrs = 1; - am_root = -1; -- else if (am_root < 0) /* Treat --fake-super from client as --super. */ -+ } else if (am_root < 0) /* Treat --fake-super from client as --super. */ - am_root = 2; - - if (filesfrom_fd == 0) -diff --git a/options.c b/options.c -index 7972121..4ac8846 100644 ---- a/options.c -+++ b/options.c -@@ -1314,7 +1314,13 @@ int parse_arguments(int *argc_p, const char ***argv_p, int frommain) - } - #endif - --#ifndef SUPPORT_XATTRS -+#ifdef SUPPORT_XATTRS -+ if (am_root < 0 && preserve_xattrs > 1) { -+ snprintf(err_buf, sizeof err_buf, -+ "--fake-super conflicts with -XX\n"); -+ return 0; -+ } -+#else - if (am_root < 0) { - snprintf(err_buf, sizeof err_buf, - "--fake-super requires an rsync with extended attributes enabled\n"); -commit d724dd186ed6a2d66fa13a9357ce91e459d39e8c -Author: Wayne Davison <wayned@samba.org> -Date: Fri Mar 7 16:16:29 2008 -0800 - - Fixed the interaction of --fake-super with --link-dest & --xattrs. - Fixed the munging of non-user namespace xattrs w/--fake-super. - Fixed the sorting of received xattrs when name-munging occurs. - Added xattr tests to verify that these things stay fixed. - -diff --git a/testsuite/xattrs.test b/testsuite/xattrs.test -index 97c5f8d..66c3e75 100644 ---- a/testsuite/xattrs.test -+++ b/testsuite/xattrs.test -@@ -20,6 +20,7 @@ case "`xattr 2>&1`" in - xls() { - xattr -l "${@}" - } -+ RUSR='rsync' - ;; - *) - xset() { -@@ -31,6 +32,7 @@ case "`xattr 2>&1`" in - xls() { - getfattr -d "${@}" - } -+ RUSR='user.rsync' - ;; - esac - -@@ -65,13 +67,15 @@ xset user.long 'a long attribute for our new file that tests to ensure that this - xset user.foo 'new foo' foo/file3 foo/bar/file5 - xset user.bar 'new bar' foo/file3 foo/bar/file5 - xset user.long 'this is also a long attribute that will be truncated in the initial data send' foo/file3 foo/bar/file5 --xset user.equal 'this long attribute should remain the same and not need to be transferred' foo/file3 foo/bar/file5 -+xset $RUSR.equal 'this long attribute should remain the same and not need to be transferred' foo/file3 foo/bar/file5 -+xset $RUSR.equal 'this short' foo/file3 foo/bar/file5 - - xset user.short 'old short' "$chkdir/file1" - xset user.extra 'remove me' "$chkdir/file1" - - xset user.foo 'old foo' "$chkdir/foo/file3" --xset user.equal 'this long attribute should remain the same and not need to be transferred' "$chkdir/foo/file3" -+xset $RUSR.equal 'this long attribute should remain the same and not need to be transferred' "$chkdir/foo/file3" -+xset $RUSR.equal 'this short' "$chkdir/foo/file3" - - xls $files >"$scratchdir/xattrs.txt" - -@@ -95,10 +99,17 @@ xls $files >"$scratchdir/xattrs.txt" - - rm -rf "$todir" - --checkit "$RSYNC -aiX --link-dest=../chk . ../to" "$chkdir" "$todir" -+checkit "$RSYNC -aiX --fake-super --link-dest=../chk . ../to" "$chkdir" "$todir" - - cd "$todir" - xls $files | diff $diffopt "$scratchdir/xattrs.txt" - - -+sed -n -e '/\.\/file1$/d' -e '/^[^ ]* *[^ ]* *[^ ]* *1 /p' "$scratchdir/ls-to" >"$scratchdir/ls-diff" -+if [ -s "$scratchdir/ls-diff" ]; then -+ echo "Missing hard links on:" -+ cat "$scratchdir/ls-diff" -+ exit 1 -+fi -+ - # The script would have aborted on error, so getting here means we've won. - exit 0 -diff --git a/xattrs.c b/xattrs.c -index a436572..53363bd 100644 ---- a/xattrs.c -+++ b/xattrs.c -@@ -62,9 +62,12 @@ extern int checksum_seed; - #endif - #define RPRE_LEN ((int)sizeof RSYNC_PREFIX - 1) - --#define XSTAT_ATTR RSYNC_PREFIX "%stat" --#define XACC_ACL_ATTR RSYNC_PREFIX "%aacl" --#define XDEF_ACL_ATTR RSYNC_PREFIX "%dacl" -+#define XSTAT_SUFFIX "stat" -+#define XSTAT_ATTR RSYNC_PREFIX "%" XSTAT_SUFFIX -+#define XACC_ACL_SUFFIX "aacl" -+#define XACC_ACL_ATTR RSYNC_PREFIX "%" XACC_ACL_SUFFIX -+#define XDEF_ACL_SUFFIX "dacl" -+#define XDEF_ACL_ATTR RSYNC_PREFIX "%" XDEF_ACL_SUFFIX - - typedef struct { - char *datum, *name; -@@ -231,7 +234,10 @@ static int rsync_xal_get(const char *fname, item_list *xalp) - if (name_len > RPRE_LEN && name[RPRE_LEN] == '%' - && HAS_PREFIX(name, RSYNC_PREFIX)) { - if ((am_sender && preserve_xattrs < 2) -- || (am_root < 0 && strcmp(name, XSTAT_ATTR) == 0)) -+ || (am_root < 0 -+ && (strcmp(name+RPRE_LEN+1, XSTAT_SUFFIX) == 0 -+ || strcmp(name+RPRE_LEN+1, XACC_ACL_SUFFIX) == 0 -+ || strcmp(name+RPRE_LEN+1, XDEF_ACL_SUFFIX) == 0))) - continue; - } - -@@ -253,14 +259,6 @@ static int rsync_xal_get(const char *fname, item_list *xalp) - } else - name_offset = datum_len; - --#ifdef HAVE_LINUX_XATTRS -- if (am_root < 0 && name_len > RPRE_LEN && name[RPRE_LEN] != '%' -- && HAS_PREFIX(name, RSYNC_PREFIX)) { -- name += RPRE_LEN; -- name_len -= RPRE_LEN; -- } --#endif -- - rxa = EXPAND_ITEM_LIST(xalp, rsync_xa, RSYNC_XAL_INITIAL); - rxa->name = ptr + name_offset; - memcpy(rxa->name, name, name_len); -@@ -352,25 +350,33 @@ int send_xattr(stat_x *sxp, int f) - int count = sxp->xattr->count; - write_varint(f, count); - for (rxa = sxp->xattr->items; count--; rxa++) { -+ int name_len = rxa->name_len; -+ const char *name = rxa->name; -+ /* Strip the rsync prefix from disguised namespaces. */ -+ if ( - #ifdef HAVE_LINUX_XATTRS -- write_varint(f, rxa->name_len); -+ am_root < 0 -+#endif -+ && name_len > RPRE_LEN && name[RPRE_LEN] != '%' -+ && HAS_PREFIX(name, RSYNC_PREFIX)) { -+ name += RPRE_LEN; -+ name_len -= RPRE_LEN; -+ } -+#ifndef HAVE_LINUX_XATTRS -+ else { -+ /* Put everything else in the user namespace. */ -+ name_len += UPRE_LEN; -+ } -+#endif -+ write_varint(f, name_len); - write_varint(f, rxa->datum_len); -- write_buf(f, rxa->name, rxa->name_len); --#else -- /* We strip the rsync prefix from disguised namespaces -- * and put everything else in the user namespace. */ -- if (HAS_PREFIX(rxa->name, RSYNC_PREFIX) -- && rxa->name[RPRE_LEN] != '%') { -- write_varint(f, rxa->name_len - RPRE_LEN); -- write_varint(f, rxa->datum_len); -- write_buf(f, rxa->name + RPRE_LEN, rxa->name_len - RPRE_LEN); -- } else { -- write_varint(f, rxa->name_len + UPRE_LEN); -- write_varint(f, rxa->datum_len); -+#ifndef HAVE_LINUX_XATTRS -+ if (name_len > rxa->name_len) { - write_buf(f, USER_PREFIX, UPRE_LEN); -- write_buf(f, rxa->name, rxa->name_len); -+ name_len -= UPRE_LEN; - } - #endif -+ write_buf(f, name, name_len); - if (rxa->datum_len > MAX_FULL_DATUM) - write_buf(f, rxa->datum + 1, MAX_DIGEST_LEN); - else -@@ -574,6 +580,11 @@ void receive_xattr(struct file_struct *file, int f) - { - static item_list temp_xattr = EMPTY_ITEM_LIST; - int count, num; -+#ifdef HAVE_LINUX_XATTRS -+ int need_sort = 0; -+#else -+ int need_sort = 1; -+#endif - int ndx = read_varint(f); - - if (ndx < 0 || (size_t)ndx > rsync_xal_l.count) { -@@ -624,6 +635,7 @@ void receive_xattr(struct file_struct *file, int f) - name -= RPRE_LEN; - name_len += RPRE_LEN; - memcpy(name, RSYNC_PREFIX, RPRE_LEN); -+ need_sort = 1; - } - #else - /* This OS only has a user namespace, so we either -@@ -655,6 +667,9 @@ void receive_xattr(struct file_struct *file, int f) - rxa->num = num; - } - -+ if (need_sort && count > 1) -+ qsort(temp_xattr.items, count, sizeof (rsync_xa), rsync_xal_compare_names); -+ - ndx = rsync_xal_l.count; /* pre-incremented count */ - rsync_xal_store(&temp_xattr); /* adds item to rsync_xal_l */ - diff --git a/net-misc/rsync/files/rsync-3.0.1-xattr-alloc.diff b/net-misc/rsync/files/rsync-3.0.1-xattr-alloc.diff deleted file mode 100644 index c409ac75cd7e..000000000000 --- a/net-misc/rsync/files/rsync-3.0.1-xattr-alloc.diff +++ /dev/null @@ -1,38 +0,0 @@ -fix from upstream - -http://bugs.gentoo.org/216887 - ---- a/util.c -+++ b/util.c -@@ -1329,7 +1329,7 @@ void *_new_array(unsigned long num, unsigned int size, int use_calloc) - return use_calloc ? calloc(num, size) : malloc(num * size); - } - --void *_realloc_array(void *ptr, unsigned int size, unsigned long num) -+void *_realloc_array(void *ptr, unsigned int size, size_t num) - { - if (num >= MALLOC_MAX/size) - return NULL; -@@ -1550,7 +1550,10 @@ void *expand_item_list(item_list *lp, size_t item_size, - new_size += incr; - else - new_size *= 2; -- new_ptr = realloc_array(lp->items, char, new_size * item_size); -+ if (new_size < lp->malloced) -+ overflow_exit("expand_item_list"); -+ /* Using _realloc_array() lets us pass the size, not a type. */ -+ new_ptr = _realloc_array(lp->items, item_size, new_size); - if (verbose >= 4) { - rprintf(FINFO, "[%s] expand %s to %.0f bytes, did%s move\n", - who_am_i(), desc, (double)new_size * item_size, ---- a/proto.h -+++ b/proto.h -@@ -322,7 +322,7 @@ - int cmp_time(time_t file1, time_t file2); - int _Insure_trap_error(int a1, int a2, int a3, int a4, int a5, int a6); - void *_new_array(unsigned int size, unsigned long num); --void *_realloc_array(void *ptr, unsigned int size, unsigned long num); -+void *_realloc_array(void *ptr, unsigned int size, size_t num); - const char *find_filename_suffix(const char *fn, int fn_len, int *len_ptr); - uint32 fuzzy_distance(const char *s1, int len1, const char *s2, int len2); - struct bitbag *bitbag_create(int max_ndx); |