[rsync] Fixed: #823088 - rsync loses track of files with different directory prefixes Fixed: #495310 - rsync

mluscon mluscon at fedoraproject.org
Thu Oct 18 09:29:50 UTC 2012


commit d1bb487096a766d76f523bb36f659e3006ee47af
Author: Michal Luscon <mluscon at redhat.com>
Date:   Thu Oct 18 11:26:47 2012 +0200

    Fixed: #823088 - rsync loses track of files with different directory prefixes
    Fixed: #495310 - rsync contains forked copy of zlib

 rsync-3.0.10-bundled-zlib.patch          |  165 ++++++++++++++++++++++++++++++
 rsync-3.0.10-lose-track.patch            |   11 ++
 rsync-3.0.8-no-symlink-user-xattrs.patch |   59 -----------
 rsync.spec                               |   24 +++--
 4 files changed, 193 insertions(+), 66 deletions(-)
---
diff --git a/rsync-3.0.10-bundled-zlib.patch b/rsync-3.0.10-bundled-zlib.patch
new file mode 100644
index 0000000..533a1f0
--- /dev/null
+++ b/rsync-3.0.10-bundled-zlib.patch
@@ -0,0 +1,165 @@
+From 7da17144fd764a2420a8d08897475c0b7fdbf956 Mon Sep 17 00:00:00 2001
+From: Wayne Davison <wayned at samba.org>
+Date: Mon, 21 Nov 2011 09:22:14 -0800
+Subject: [PATCH] Add compatibility with an unmodified zlib.
+
+---
+ Makefile.in  |  4 ++--
+ batch.c      |  2 +-
+ configure.ac | 26 +++++++++++++++++++++++++-
+ options.c    |  2 +-
+ token.c      | 24 +++++++++++++++---------
+ 5 files changed, 44 insertions(+), 14 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 946a742..1b603b5 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -31,7 +31,7 @@
+ HEADERS=byteorder.h config.h errcode.h proto.h rsync.h ifuncs.h lib/pool_alloc.h
+ LIBOBJ=lib/wildmatch.o lib/compat.o lib/snprintf.o lib/mdfour.o lib/md5.o \
+ 	lib/permstring.o lib/pool_alloc.o lib/sysacls.o lib/sysxattrs.o @LIBOBJS@
+-ZLIBOBJ=zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o \
++zlib_OBJS=zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o \
+ 	zlib/trees.o zlib/zutil.o zlib/adler32.o zlib/compress.o zlib/crc32.o
+ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
+ 	util.o main.o checksum.o match.o syscall.o log.o backup.o
+@@ -41,7 +41,7 @@ OBJS3=progress.o pipe.o
+ DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
+ popt_OBJS=popt/findme.o  popt/popt.o  popt/poptconfig.o \
+ 	popt/popthelp.o popt/poptparse.o
+-OBJS=$(OBJS1) $(OBJS2) $(OBJS3) $(DAEMON_OBJ) $(LIBOBJ) $(ZLIBOBJ) @BUILD_POPT@
++OBJS=$(OBJS1) $(OBJS2) $(OBJS3) $(DAEMON_OBJ) $(LIBOBJ) @BUILD_ZLIB@ @BUILD_POPT@
+ 
+ TLS_OBJ = tls.o syscall.o lib/compat.o lib/snprintf.o lib/permstring.o lib/sysxattrs.o @BUILD_POPT@
+ 
+diff --git a/batch.c b/batch.c
+index b63f0c5..78d567d 100644
+--- a/batch.c
++++ b/batch.c
+@@ -20,7 +20,7 @@
+  */
+ 
+ #include "rsync.h"
+-#include "zlib/zlib.h"
++#include <zlib.h>
+ #include <time.h>
+ 
+ extern int eol_nulls;
+diff --git a/configure.ac b/configure.ac
+index 58aeea0..9e6b555 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -78,6 +78,9 @@ fi
+ AC_ARG_WITH(included-popt,
+         AC_HELP_STRING([--with-included-popt], [use bundled popt library, not from system]))
+ 
++AC_ARG_WITH(included-zlib,
++        AC_HELP_STRING([--with-included-zlib], [use bundled zlib library, not from system]))
++
+ AC_ARG_WITH(rsync-path,
+ 	AC_HELP_STRING([--with-rsync-path=PATH], [set default --rsync-path to PATH (default: rsync)]),
+ 	[ RSYNC_PATH="$with_rsync_path" ],
+@@ -343,7 +346,8 @@ AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h \
+     sys/un.h sys/attr.h mcheck.h arpa/inet.h arpa/nameser.h locale.h \
+     netdb.h malloc.h float.h limits.h iconv.h libcharset.h langinfo.h \
+     sys/acl.h acl/libacl.h attr/xattr.h sys/xattr.h sys/extattr.h \
+-    popt.h popt/popt.h netinet/in_systm.h netinet/ip.h)
++    popt.h popt/popt.h netinet/in_systm.h netinet/ip.h \
++    zlib.h)
+ AC_HEADER_MAJOR
+ 
+ AC_CACHE_CHECK([if makedev takes 3 args],rsync_cv_MAKEDEV_TAKES_3_ARGS,[
+@@ -773,6 +777,25 @@ else
+     AC_MSG_RESULT(no)
+ fi
+ 
++# We default to using our zlib unless --with-included-zlib=no is given.
++if test x"$with_included_zlib" != x"no"; then
++    with_included_zlib=yes
++elif test x"$ac_cv_header_zlib_h" != x"yes"; then
++    with_included_zlib=yes
++fi
++if test x"$with_included_zlib" != x"yes"; then
++    AC_CHECK_LIB(z, deflateParams, , [with_included_zlib=yes])
++fi
++
++AC_MSG_CHECKING([whether to use included zlib])
++if test x"$with_included_zlib" = x"yes"; then
++    AC_MSG_RESULT($srcdir/zlib)
++    BUILD_ZLIB='$(zlib_OBJS)'
++    CFLAGS="$CFLAGS -I$srcdir/zlib"
++else
++    AC_MSG_RESULT(no)
++fi
++
+ AC_CACHE_CHECK([for unsigned char],rsync_cv_SIGNED_CHAR_OK,[
+ AC_TRY_COMPILE([],[signed char *s = ""],
+ rsync_cv_SIGNED_CHAR_OK=yes,rsync_cv_SIGNED_CHAR_OK=no)])
+@@ -926,6 +949,7 @@ AC_SUBST(OBJ_SAVE)
+ AC_SUBST(OBJ_RESTORE)
+ AC_SUBST(CC_SHOBJ_FLAG)
+ AC_SUBST(BUILD_POPT)
++AC_SUBST(BUILD_ZLIB)
+ AC_SUBST(MAKE_MAN)
+ 
+ AC_CHECK_FUNCS(_acl __acl _facl __facl)
+diff --git a/options.c b/options.c
+index d32376f..e8db07c 100644
+--- a/options.c
++++ b/options.c
+@@ -22,7 +22,7 @@
+ #include "rsync.h"
+ #include "ifuncs.h"
+ #include <popt.h>
+-#include "zlib/zlib.h"
++#include <zlib.h>
+ 
+ extern int module_id;
+ extern int local_server;
+diff --git a/token.c b/token.c
+index 381d5c1..7628e2e 100644
+--- a/token.c
++++ b/token.c
+@@ -21,7 +21,11 @@
+ 
+ #include "rsync.h"
+ #include "ifuncs.h"
+-#include "zlib/zlib.h"
++#include <zlib.h>
++
++#ifndef Z_INSERT_ONLY
++#define Z_INSERT_ONLY Z_SYNC_FLUSH
++#endif
+ 
+ extern int do_compression;
+ extern int module_id;
+@@ -415,14 +415,16 @@
+ 			toklen -= n1;
+ 			tx_strm.next_in = (Bytef *)map_ptr(buf, offset, n1);
+ 			tx_strm.avail_in = n1;
+-			tx_strm.next_out = (Bytef *) obuf;
+-			tx_strm.avail_out = AVAIL_OUT_SIZE(CHUNK_SIZE);
+-			r = deflate(&tx_strm, Z_INSERT_ONLY);
+-			if (r != Z_OK || tx_strm.avail_in != 0) {
+-				rprintf(FERROR, "deflate on token returned %d (%d bytes left)\n",
+-					r, tx_strm.avail_in);
+-				exit_cleanup(RERR_STREAMIO);
+-			}
++                       do {
++                               tx_strm.next_out = (Bytef *) obuf;
++                               tx_strm.avail_out = AVAIL_OUT_SIZE(CHUNK_SIZE);
++                               r = deflate(&tx_strm, Z_INSERT_ONLY);
++                               if (r != Z_OK) {
++                                       rprintf(FERROR, "deflate on token returned %d (%d bytes left)\n",
++                                               r, tx_strm.avail_in);
++                                       exit_cleanup(RERR_STREAMIO);
++                               }
++                       } while (tx_strm.avail_in != 0);
+ 		} while (toklen > 0);
+ 	}
+ }
+
+-- 
+1.7.11.4
+
diff --git a/rsync-3.0.10-lose-track.patch b/rsync-3.0.10-lose-track.patch
new file mode 100644
index 0000000..b132124
--- /dev/null
+++ b/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/rsync.spec b/rsync.spec
index 6235c8f..db65f99 100644
--- a/rsync.spec
+++ b/rsync.spec
@@ -7,17 +7,19 @@
 Summary: A program for synchronizing files over a network
 Name: rsync
 Version: 3.0.9
-Release: 3%{?prerelease}%{?dist}
+Release: 4%{?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: rsync.xinetd
-BuildRequires: libacl-devel, libattr-devel, autoconf, popt-devel
+BuildRequires: libacl-devel, libattr-devel, autoconf, popt-devel, zlib-devel
+Requires: zlib
 License: GPLv3+
 
-Patch0: rsync-3.0.8-no-symlink-user-xattrs.patch
+Patch0: rsync-3.0.10-bundled-zlib.patch
+Patch1: rsync-3.0.10-lose-track.patch
 
 %description
 Rsync uses a reliable algorithm to bring remote and host files into
@@ -48,13 +50,17 @@ patch -p1 -i patches/xattrs.diff
 #Enable --copy-devices parameter
 patch -p1 -i patches/copy-devices.diff
 
-#%patch0 -p1 -b .no-symlink-user-xattrs
+%patch0 -p1 -b .bundled-zlib
+%patch1 -p1 -b .lose-track
 
 %build
 rm -fr autom4te.cache
-autoconf
-autoheader
-%configure
+autoconf -o configure.sh
+autoheader && touch config.h.in
+
+%configure \
+  --with-included-zlib=no
+  
 make proto
 make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
 
@@ -77,6 +83,10 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man5/rsyncd.conf.5*
 
 %changelog
+* Tue Oct 16 2012 Michal Luscon <mluscon at redhat.com> 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 <rel-eng at lists.fedoraproject.org> - 3.0.9-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 


More information about the scm-commits mailing list