summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-01-08 06:09:28 +0000
committerMike Frysinger <vapier@gentoo.org>2009-01-08 06:09:28 +0000
commitd468c2ce3f93bf698b768bc954bafcf93f583894 (patch)
tree6e932d29e50b39924f4a410d875f875033a23cfa /net-misc/rsync/files
parentUpdate to 2.6.27.10 and add a 2.6.28 ebuild. (diff)
downloadgentoo-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.patch50
-rw-r--r--net-misc/rsync/files/rsync-2.6.9-fname-obo.patch62
-rw-r--r--net-misc/rsync/files/rsync-2.6.9-munge-symlinks.patch344
-rw-r--r--net-misc/rsync/files/rsync-2.6.9-pid-early.patch45
-rw-r--r--net-misc/rsync/files/rsync-2.6.9-stats-fix.patch84
-rw-r--r--net-misc/rsync/files/rsync-3.0.0-NULL-config.patch62
-rw-r--r--net-misc/rsync/files/rsync-3.0.0-acl-crash.patch110
-rw-r--r--net-misc/rsync/files/rsync-3.0.0-dry-run-hang.patch19
-rw-r--r--net-misc/rsync/files/rsync-3.0.0-fake-super-attrs.patch243
-rw-r--r--net-misc/rsync/files/rsync-3.0.1-xattr-alloc.diff38
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);