Hello community,

here is the log from the commit of package rsync for openSUSE:Factory checked 
in at 2015-10-17 16:37:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rsync (Old)
 and      /work/SRC/openSUSE:Factory/.rsync.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rsync"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rsync/rsync.changes      2015-08-21 
07:40:29.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rsync.new/rsync.changes 2015-10-17 
16:37:59.000000000 +0200
@@ -1,0 +2,16 @@
+Wed Oct  7 12:26:26 UTC 2015 - vci...@suse.com
+
+- better disable slp by default, it doesn't seem to be used much
+  and it often caused problems (eg boo#898513, bsc#922710)
+  * set "use slp" in rsyncd.conf to enable
+  * modified rsync-add_back_use_slp_directive.patch
+
+-------------------------------------------------------------------
+Tue Oct  6 11:16:55 UTC 2015 - vci...@suse.com
+
+- add a compatibility flag to avoid checksum collisions (bsc#900914)
+  * fixes rsync equivalent of librsync's CVE-2014-8242
+  * added rsync-equivalent_of_CVE-2014-8242.patch
+- modify rsync-add_back_use_slp_directive.patch
+
+-------------------------------------------------------------------

New:
----
  rsync-equivalent_of_CVE-2014-8242.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rsync.spec ++++++
--- /var/tmp/diff_new_pack.m9nNtX/_old  2015-10-17 16:38:00.000000000 +0200
+++ /var/tmp/diff_new_pack.m9nNtX/_new  2015-10-17 16:38:00.000000000 +0200
@@ -44,7 +44,9 @@
 Patch3:         system-zlib.diff
 Patch4:         rsync-CVE-2014-9512.patch
 Patch5:         rsync-no-libattr.patch
+#PATCH-FIX-SUSE boo#922710 slp
 Patch6:         rsync-add_back_use_slp_directive.patch
+Patch7:         rsync-equivalent_of_CVE-2014-8242.patch
 BuildRequires:  autoconf
 BuildRequires:  libacl-devel
 BuildRequires:  openslp-devel
@@ -87,6 +89,7 @@
 patch -p1 < patches/xattrs.diff
 patch -p1 < patches/slp.diff
 %patch6 -p1
+%patch7 -p1
 # fate#312479
 patch -p1 < patches/time-limit.diff
 %patch5 -p1


++++++ rsync-add_back_use_slp_directive.patch ++++++
--- /var/tmp/diff_new_pack.m9nNtX/_old  2015-10-17 16:38:00.000000000 +0200
+++ /var/tmp/diff_new_pack.m9nNtX/_new  2015-10-17 16:38:00.000000000 +0200
@@ -1,7 +1,7 @@
 Index: rsync-3.1.1/clientserver.c
 ===================================================================
---- rsync-3.1.1.orig/clientserver.c    2015-08-11 11:10:05.445550476 +0200
-+++ rsync-3.1.1/clientserver.c 2015-08-11 11:11:12.922400586 +0200
+--- rsync-3.1.1.orig/clientserver.c    2015-10-07 14:58:43.767379915 +0200
++++ rsync-3.1.1/clientserver.c 2015-10-07 14:59:24.515920754 +0200
 @@ -1200,7 +1200,7 @@ int daemon_main(void)
         * local address??? */
  
@@ -13,8 +13,8 @@
        }
 Index: rsync-3.1.1/loadparm.c
 ===================================================================
---- rsync-3.1.1.orig/loadparm.c        2015-08-11 11:10:05.445550476 +0200
-+++ rsync-3.1.1/loadparm.c     2015-08-11 11:32:41.294010307 +0200
+--- rsync-3.1.1.orig/loadparm.c        2015-10-07 14:58:43.767379915 +0200
++++ rsync-3.1.1/loadparm.c     2015-10-07 14:59:24.515920754 +0200
 @@ -101,6 +101,7 @@ typedef struct {
        int rsync_port;
  #ifdef HAVE_LIBSLP
@@ -23,23 +23,26 @@
  #endif
  } global_vars;
  
-@@ -322,6 +323,7 @@ static struct parm_struct parm_table[] =
+@@ -181,6 +182,10 @@ static const all_vars Defaults = {
+ 
+  /* listen_backlog; */                5,
+  /* rsync_port; */            0,
++#ifdef HAVE_LIBSLP
++ /* slp_refresh; */           0,
++ /* use_slp; */                       False,
++#endif
+  },
+ 
+  /* ==== local_vars ==== */
+@@ -322,6 +327,7 @@ static struct parm_struct parm_table[] =
   {"port",              P_INTEGER,P_GLOBAL,&Vars.g.rsync_port,          
NULL,0},
  #ifdef HAVE_LIBSLP
   {"slp refresh",       P_INTEGER,P_GLOBAL,&Vars.g.slp_refresh,         
NULL,0},
-+ {"use slp",           P_BOOL,   P_GLOBAL,&Vars.g.use_slp,            NULL,0},
++ {"use slp",           P_BOOL,   P_GLOBAL,&Vars.g.use_slp,             
NULL,0},
  #endif
   {"socket options",    P_STRING, P_GLOBAL,&Vars.g.socket_options,      
NULL,0},
  
-@@ -376,6 +378,7 @@ static struct parm_struct parm_table[] =
- static void reset_all_vars(void)
- {
-       memcpy(&Vars, &Defaults, sizeof Vars);
-+      Vars.g.use_slp = True;
- }
- 
- /* Expand %VAR% references.  Any unknown vars or unrecognized
-@@ -458,6 +461,7 @@ FN_GLOBAL_INTEGER(lp_listen_backlog, &Va
+@@ -458,6 +464,7 @@ FN_GLOBAL_INTEGER(lp_listen_backlog, &Va
  FN_GLOBAL_INTEGER(lp_rsync_port, &Vars.g.rsync_port)
  #ifdef HAVE_LIBSLP
  FN_GLOBAL_INTEGER(lp_slp_refresh, &Vars.g.slp_refresh)
@@ -49,14 +52,14 @@
  FN_LOCAL_STRING(lp_auth_users, auth_users)
 Index: rsync-3.1.1/rsyncd.conf.yo
 ===================================================================
---- rsync-3.1.1.orig/rsyncd.conf.yo    2015-08-11 11:10:05.447550501 +0200
-+++ rsync-3.1.1/rsyncd.conf.yo 2015-08-11 11:34:15.206231147 +0200
+--- rsync-3.1.1.orig/rsyncd.conf.yo    2015-10-07 14:58:43.767379915 +0200
++++ rsync-3.1.1/rsyncd.conf.yo 2015-10-07 14:59:24.516920767 +0200
 @@ -124,6 +124,10 @@ via the bf(--sockopts) command-line opti
  dit(bf(listen backlog)) You can override the default backlog value when the
  daemon listens for connections.  It defaults to 5.
  
 +dit(bf(use slp)) This parameter is used to determine if the module names are
-+advertised via slp.  The default is for this to be enabled, which will
++advertised via slp.  The default is for this to be disabled, which won't
 +advertise your public modules.
 +
  dit(bf(slp refresh)) This parameter is used to determine how long service
@@ -64,8 +67,8 @@
  you have Service Location Protocol support compiled in. If this is
 Index: rsync-3.1.1/socket.c
 ===================================================================
---- rsync-3.1.1.orig/socket.c  2015-08-11 11:10:05.447550501 +0200
-+++ rsync-3.1.1/socket.c       2015-08-11 11:35:25.434145276 +0200
+--- rsync-3.1.1.orig/socket.c  2015-10-07 14:58:43.767379915 +0200
++++ rsync-3.1.1/socket.c       2015-10-07 14:59:24.516920767 +0200
 @@ -546,7 +546,7 @@ void start_accept_loop(int port, int (*f
        int *sp, maxfd, i;
  #ifdef HAVE_LIBSLP
@@ -75,3 +78,42 @@
        if (slp_timeout) {
                if (slp_timeout < SLP_MIN_TIMEOUT)
                        slp_timeout = SLP_MIN_TIMEOUT;
+Index: rsync-3.1.1/main.c
+===================================================================
+--- rsync-3.1.1.orig/main.c    2015-10-07 14:58:43.767379915 +0200
++++ rsync-3.1.1/main.c 2015-10-07 14:59:24.516920767 +0200
+@@ -1250,11 +1250,14 @@ static int start_client(int argc, char *
+               if (shell_machine && !shell_machine[0]) {
+ #ifdef HAVE_LIBSLP
+                       /* User entered just rsync:// URI */
+-                      print_service_list();
+-                      exit_cleanup(0);
+-#else /* No SLP, die here */
++                      if (lp_use_slp()) {
++                              print_service_list();
++                              exit_cleanup(0);
++                      } else {
++                              rprintf(FINFO, "SLP is disabled, cannot 
browse\n");
++                      }
++#else /* No SLP */
+                       rprintf(FINFO, "No SLP support, cannot browse\n");
+-                      exit_cleanup(RERR_SYNTAX);
+ #endif
+               }
+ 
+Index: rsync-3.1.1/rsyncd.conf.5
+===================================================================
+--- rsync-3.1.1.orig/rsyncd.conf.5     2015-10-07 14:36:06.288364061 +0200
++++ rsync-3.1.1/rsyncd.conf.5  2015-10-07 15:00:28.309767222 +0200
+@@ -142,6 +142,11 @@ via the \fB\-\-sockopts\fP command\-line
+ You can override the default backlog value when the
+ daemon listens for connections.  It defaults to 5.
+ .IP 
++.IP "\fBuse slp\fP"
++This parameter is used to determine if the module names are
++advertised via slp.  The default is for this to be disabled, which won't
++advertise your public modules.
++.IP 
+ .IP "\fBslp refresh\fP"
+ This parameter is used to determine how long service
+ advertisements are valid (measured in seconds), and is only applicable if

++++++ rsync-equivalent_of_CVE-2014-8242.patch ++++++
>From eac858085e3ac94ec0ab5061d11f52652c90a869 Mon Sep 17 00:00:00 2001
From: Wayne Davison <way...@samba.org>
Date: Mon, 11 May 2015 12:36:20 -0700
Subject: [PATCH] Add compat flag to allow proper seed checksum order. Fixes
 the equivalent of librsync's CVE-2014-8242 issue.

---
 checksum.c | 17 +++++++++++++----
 compat.c   |  5 +++++
 options.c  |  1 +
 3 files changed, 19 insertions(+), 4 deletions(-)

Index: rsync-3.1.1/checksum.c
===================================================================
--- rsync-3.1.1.orig/checksum.c 2015-10-06 11:18:33.293065513 +0200
+++ rsync-3.1.1/checksum.c      2015-10-06 11:18:34.382078657 +0200
@@ -23,6 +23,7 @@
 
 extern int checksum_seed;
 extern int protocol_version;
+extern int proper_seed_order;
 
 /*
   a simple 32 bit checksum that can be upadted from either end
@@ -54,10 +55,18 @@ void get_checksum2(char *buf, int32 len,
        if (protocol_version >= 30) {
                uchar seedbuf[4];
                md5_begin(&m);
-               md5_update(&m, (uchar *)buf, len);
-               if (checksum_seed) {
-                       SIVALu(seedbuf, 0, checksum_seed);
-                       md5_update(&m, seedbuf, 4);
+               if (proper_seed_order) {
+                       if (checksum_seed) {
+                               SIVALu(seedbuf, 0, checksum_seed);
+                               md5_update(&m, seedbuf, 4);
+                       }
+                       md5_update(&m, (uchar *)buf, len);
+               } else {
+                       md5_update(&m, (uchar *)buf, len);
+                       if (checksum_seed) {
+                               SIVALu(seedbuf, 0, checksum_seed);
+                               md5_update(&m, seedbuf, 4);
+                       }
                }
                md5_result(&m, (uchar *)sum);
        } else {
Index: rsync-3.1.1/compat.c
===================================================================
--- rsync-3.1.1.orig/compat.c   2015-10-06 11:18:33.293065513 +0200
+++ rsync-3.1.1/compat.c        2015-10-06 11:18:34.383078669 +0200
@@ -27,6 +27,7 @@ int inc_recurse = 0;
 int compat_flags = 0;
 int use_safe_inc_flist = 0;
 int want_xattr_optim = 0;
+int proper_seed_order = 0;
 
 extern int am_server;
 extern int am_sender;
@@ -78,6 +79,7 @@ int filesfrom_convert = 0;
 #define CF_SYMLINK_ICONV (1<<2)
 #define CF_SAFE_FLIST   (1<<3)
 #define CF_AVOID_XATTR_OPTIM (1<<4)
+#define CF_CHKSUM_SEED_FIX (1<<5)
 
 static const char *client_info;
 
@@ -257,12 +259,15 @@ void setup_protocol(int f_out,int f_in)
                                compat_flags |= CF_SAFE_FLIST;
                        if (local_server || strchr(client_info, 'x') != NULL)
                                compat_flags |= CF_AVOID_XATTR_OPTIM;
+                       if (local_server || strchr(client_info, 'C') != NULL)
+                               compat_flags |= CF_CHKSUM_SEED_FIX;
                        write_byte(f_out, compat_flags);
                } else
                        compat_flags = read_byte(f_in);
                /* The inc_recurse var MUST be set to 0 or 1. */
                inc_recurse = compat_flags & CF_INC_RECURSE ? 1 : 0;
                want_xattr_optim = protocol_version >= 31 && !(compat_flags & 
CF_AVOID_XATTR_OPTIM);
+               proper_seed_order = compat_flags & CF_CHKSUM_SEED_FIX ? 1 : 0;
                if (am_sender) {
                        receiver_symlink_times = am_server
                            ? strchr(client_info, 'L') != NULL
Index: rsync-3.1.1/options.c
===================================================================
--- rsync-3.1.1.orig/options.c  2015-10-06 11:18:34.383078669 +0200
+++ rsync-3.1.1/options.c       2015-10-06 11:19:37.630842114 +0200
@@ -2505,6 +2505,7 @@ void server_options(char **args, int *ar
 #endif
                argstr[x++] = 'f'; /* flist I/O-error safety support */
                argstr[x++] = 'x'; /* xattr hardlink optimization not desired */
+               argstr[x++] = 'C'; /* support checksum seed order fix */
        }
 
        if (x >= (int)sizeof argstr) { /* Not possible... */


Reply via email to