The branch, master has been updated via 826ddc54 Enhance the validation of --block-size for older protocols. Fixes bug #13974. via 3bd4e1e8 Make the --copy-links caveat a little clearer. via 51e23e0a Use nanosleep if it is available. Fixes bug #14328. from 08650cb1 Add a --copy-as=USER[:GROUP] option
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 826ddc5403c7fc53e00dc3503d7451d99a930989 Author: Wayne Davison <way...@samba.org> Date: Sun Apr 5 10:04:05 2020 -0700 Enhance the validation of --block-size for older protocols. Fixes bug #13974. commit 3bd4e1e8cd868840f29ae5eda2e1c604a72acbdf Author: Wayne Davison <way...@samba.org> Date: Sun Apr 5 09:43:59 2020 -0700 Make the --copy-links caveat a little clearer. commit 51e23e0ab73016482d4eba73208bb63226f7493a Author: Wayne Davison <way...@samba.org> Date: Sun Apr 5 09:22:00 2020 -0700 Use nanosleep if it is available. Fixes bug #14328. ----------------------------------------------------------------------- Summary of changes: configure.ac | 2 +- options.c | 15 +++++++++++---- rsync.yo | 9 +++++---- util2.c | 14 +++++++++++--- 4 files changed, 28 insertions(+), 12 deletions(-) Changeset truncated at 500 lines: diff --git a/configure.ac b/configure.ac index 4f68e98a..0756242f 100644 --- a/configure.ac +++ b/configure.ac @@ -599,7 +599,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd strdup chown chmod lchmod mknod mkfifo \ setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \ seteuid strerror putenv iconv_open locale_charset nl_langinfo getxattr \ extattr_get_link sigaction sigprocmask setattrlist getgrouplist \ - initgroups utimensat posix_fallocate attropen setvbuf usleep) + initgroups utimensat posix_fallocate attropen setvbuf nanosleep usleep) dnl cygwin iconv.h defines iconv_open as libiconv_open if test x"$ac_cv_func_iconv_open" != x"yes"; then diff --git a/options.c b/options.c index a9b07184..3464f9dd 100644 --- a/options.c +++ b/options.c @@ -1984,10 +1984,17 @@ int parse_arguments(int *argc_p, const char ***argv_p) } #endif - if (block_size > MAX_BLOCK_SIZE) { - snprintf(err_buf, sizeof err_buf, - "--block-size=%lu is too large (max: %u)\n", block_size, MAX_BLOCK_SIZE); - return 0; + if (block_size) { + /* We may not know the real protocol_version at this point if this is the client + * option parsing, but we still want to check it so that the client can specify + * a --protocol=29 option with a larger block size. */ + int32 max_blength = protocol_version < 30 ? OLD_MAX_BLOCK_SIZE : MAX_BLOCK_SIZE; + + if (block_size > max_blength) { + snprintf(err_buf, sizeof err_buf, + "--block-size=%lu is too large (max: %u)\n", block_size, max_blength); + return 0; + } } if (write_batch && read_batch) { diff --git a/rsync.yo b/rsync.yo index 1950349c..fdaf3d27 100644 --- a/rsync.yo +++ b/rsync.yo @@ -940,10 +940,11 @@ additional effect if bf(--copy-links) was also specified. Note that the cut-off point is the top of the transfer, which is the part of the path that rsync isn't mentioning in the verbose output. If you copy -"subdir" to "/dest/" then the subdir directory is a name inside the transfer -tree, not the top of the transfer (its parent directory is the top) so it is -legal for created relative symlinks to refer to other names inside the /dest -dir. +"/src/subdir" to "/dest/" then the "subdir" directory is a name inside the +transfer tree, not the top of the transfer (which is /src) so it is legal for +created relative symlinks to refer to other names inside the /src and /dest +directories. If you instead copy "/src/subdir/" (with a trailing slash) to +"/dest/subdir" that would not allow symlinks to any files outside of "subdir". dit(bf(--safe-links)) This tells rsync to ignore any symbolic links which point outside the copied tree. All absolute symlinks are diff --git a/util2.c b/util2.c index 619c92eb..b46677c0 100644 --- a/util2.c +++ b/util2.c @@ -28,13 +28,21 @@ /** * Sleep for a specified number of milliseconds. * - * Always returns TRUE. (In the future it might return FALSE if - * interrupted.) + * Always returns True. **/ int msleep(int t) { -#ifdef HAVE_USLEEP +#ifdef HAVE_NANOSLEEP + struct timespec ts; + + ts.tv_sec = t / 1000; + ts.tv_nsec = (t % 1000) * 1000000L; + + while (nanosleep(&ts, &ts) < 0 && errno == EINTR) {} + +#elif defined HAVE_USLEEP usleep(t*1000); + #else int tdiff = 0; struct timeval tval, t1, t2; -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs