Hello community, here is the log from the commit of package rsync for openSUSE:Factory checked in at 2018-01-16 09:33:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rsync (Old) and /work/SRC/openSUSE:Factory/.rsync.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rsync" Tue Jan 16 09:33:19 2018 rev:64 rq:563120 version:3.1.2 Changes: -------- --- /work/SRC/openSUSE:Factory/rsync/rsync.changes 2017-11-29 10:50:16.269849962 +0100 +++ /work/SRC/openSUSE:Factory/.rsync.new/rsync.changes 2018-01-16 09:33:21.071016137 +0100 @@ -1,0 +2,8 @@ +Tue Jan 9 17:07:12 UTC 2018 - [email protected] + +- Fix: Stop file upload after errors [bsc#1062063] +- Added patches: + * rsync-send_error_to_sender.patch + * rsync-avoid-uploading-after-error.patch + +------------------------------------------------------------------- New: ---- rsync-avoid-uploading-after-error.patch rsync-send_error_to_sender.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rsync.spec ++++++ --- /var/tmp/diff_new_pack.Ms7eSo/_old 2018-01-16 09:33:21.834980392 +0100 +++ /var/tmp/diff_new_pack.Ms7eSo/_new 2018-01-16 09:33:21.838980206 +0100 @@ -1,7 +1,7 @@ # # spec file for package rsync # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -42,6 +42,9 @@ Patch2: rsync-both-compressions.patch #PATCH-FIX-UPSTREAM CVE-2017-16548 bsc#1066644 Missing trailing '\0' check could lead to remote DoS Patch3: rsync-CVE-2017-16548.patch +#PATCH-FIX-UPSTREAM bcs#1062063 rsync doesn't stop on errors +Patch4: rsync-send_error_to_sender.patch +Patch5: rsync-avoid-uploading-after-error.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: libacl-devel @@ -76,6 +79,8 @@ %patch0 -p1 %patch2 -p1 %patch3 -p1 +%patch4 +%patch5 %build autoreconf -fiv ++++++ rsync-avoid-uploading-after-error.patch ++++++ https://bugzilla.samba.org/show_bug.cgi?id=12525#c1 --- cleanup.c.orig 2017-01-18 14:53:35.000000000 +0100 +++ cleanup.c 2017-01-18 14:56:58.000000000 +0100 @@ -255,7 +255,7 @@ } if (!am_sender) io_flush(MSG_FLUSH); /* Be sure to send all messages */ - noop_io_until_death(); + /* noop_io_until_death(); */ } else if (!am_sender) io_flush(MSG_FLUSH); /* Be sure to send all messages */ ++++++ rsync-send_error_to_sender.patch ++++++ https://bugzilla.samba.org/show_bug.cgi?id=12522#c2 --- rsync.h.orig 2017-01-16 18:59:44.580812000 +0100 +++ rsync.h 2017-01-16 18:59:51.814260000 +0100 @@ -166,6 +166,7 @@ #define ATTRS_REPORT (1<<0) #define ATTRS_SKIP_MTIME (1<<1) +#define MSG_FLUSH 2 #define FULL_FLUSH 1 #define NORMAL_FLUSH 0 --- io.c.orig 2015-08-08 21:47:03.000000000 +0200 +++ io.c 2017-01-16 19:01:07.000000000 +0100 @@ -1985,10 +1985,11 @@ void io_flush(int flush_it_all) { if (iobuf.out.len > iobuf.out_empty_len) { - if (flush_it_all) /* FULL_FLUSH: flush everything in the output buffers */ + if (flush_it_all == FULL_FLUSH) /* flush everything in the output buffers */ perform_io(iobuf.out.size - iobuf.out_empty_len, PIO_NEED_OUTROOM); - else /* NORMAL_FLUSH: flush at least 1 byte */ + else if (flush_it_all == NORMAL_FLUSH) /* flush at least 1 byte */ perform_io(iobuf.out.size - iobuf.out.len + 1, PIO_NEED_OUTROOM); + /* MSG_FLUSH: flush iobuf.msg only */ } if (iobuf.msg.len) perform_io(iobuf.msg.size, PIO_NEED_MSGROOM); --- cleanup.c.orig 2015-08-08 21:47:03.000000000 +0200 +++ cleanup.c 2017-01-18 14:53:35.000000000 +0100 @@ -26,6 +26,7 @@ extern int am_server; extern int am_daemon; extern int am_receiver; +extern int am_sender; extern int io_error; extern int keep_partial; extern int got_xfer_error; @@ -243,15 +244,21 @@ switch_step++; if (exit_code && exit_code != RERR_SOCKETIO && exit_code != RERR_STREAMIO && exit_code != RERR_SIGNAL1 - && exit_code != RERR_TIMEOUT && !shutting_down && (protocol_version >= 31 || am_receiver)) { - if (line > 0) { - if (DEBUG_GTE(EXIT, 3)) { - rprintf(FINFO, "[%s] sending MSG_ERROR_EXIT with exit_code %d\n", - who_am_i(), exit_code); + && exit_code != RERR_TIMEOUT && !shutting_down) { + if (protocol_version >= 31 || am_receiver) { + if (line > 0) { + if (DEBUG_GTE(EXIT, 3)) { + rprintf(FINFO, "[%s] sending MSG_ERROR_EXIT with exit_code %d\n", + who_am_i(), exit_code); + } + send_msg_int(MSG_ERROR_EXIT, exit_code); } - send_msg_int(MSG_ERROR_EXIT, exit_code); + if (!am_sender) + io_flush(MSG_FLUSH); /* Be sure to send all messages */ + noop_io_until_death(); } - noop_io_until_death(); + else if (!am_sender) + io_flush(MSG_FLUSH); /* Be sure to send all messages */ } /* FALLTHROUGH */
