[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 4592aa77 More tweaks for Actions. from 8bc363cc Separate the builds and make Cygwin always run. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 4592aa770d51d5e83845b032feea1de441f03ee7 Author: Wayne Davison Date: Wed Apr 10 13:12:52 2024 -0700 More tweaks for Actions. - When a .github/workflows/*.yml file changes, skip running unaffected builds. - We need git to be installed for git-version.h generation. --- Summary of changes: .github/workflows/cygwin-build.yml | 6 ++ .github/workflows/freebsd-build.yml | 8 +++- .github/workflows/macos-build.yml | 6 ++ .github/workflows/solaris-build.yml | 8 +++- .github/workflows/ubuntu-build.yml | 6 ++ 5 files changed, 32 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/.github/workflows/cygwin-build.yml b/.github/workflows/cygwin-build.yml index a9635f2e..c6afb118 100644 --- a/.github/workflows/cygwin-build.yml +++ b/.github/workflows/cygwin-build.yml @@ -3,8 +3,14 @@ name: Test rsync on Cygwin on: push: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/cygwin-build.yml' pull_request: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/cygwin-build.yml' schedule: - cron: '42 8 * * *' diff --git a/.github/workflows/freebsd-build.yml b/.github/workflows/freebsd-build.yml index d82b160b..1ac22388 100644 --- a/.github/workflows/freebsd-build.yml +++ b/.github/workflows/freebsd-build.yml @@ -3,8 +3,14 @@ name: Test rsync on FreeBSD on: push: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/freebsd-build.yml' pull_request: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/freebsd-build.yml' schedule: - cron: '42 8 * * *' @@ -22,7 +28,7 @@ jobs: with: usesh: true prepare: | - pkg install -y bash autotools m4 devel/xxhash zstd liblz4 python3 archivers/liblz4 + pkg install -y bash autotools m4 devel/xxhash zstd liblz4 python3 archivers/liblz4 git run: | freebsd-version ./configure --with-rrsync -disable-zstd --disable-md2man --disable-xxhash --disable-lz4 diff --git a/.github/workflows/macos-build.yml b/.github/workflows/macos-build.yml index bb85bb00..5471bf53 100644 --- a/.github/workflows/macos-build.yml +++ b/.github/workflows/macos-build.yml @@ -3,8 +3,14 @@ name: Test rsync on macOS on: push: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/macos-build.yml' pull_request: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/macos-build.yml' schedule: - cron: '42 8 * * *' diff --git a/.github/workflows/solaris-build.yml b/.github/workflows/solaris-build.yml index 557a5781..231fbd4a 100644 --- a/.github/workflows/solaris-build.yml +++ b/.github/workflows/solaris-build.yml @@ -3,8 +3,14 @@ name: Test rsync on Solaris on: push: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/solaris-build.yml' pull_request: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/solaris-build.yml' schedule: - cron: '42 8 * * *' @@ -22,7 +28,7 @@ jobs: with: usesh: true prepare: | - pkg install bash automake gnu-m4 pkg://solaris/runtime/python-35 autoconf gcc + pkg install bash automake gnu-m4 pkg://solaris/runtime/python-35 autoconf gcc git run: | uname -a ./configure --with-rrsync -disable-zstd --disable-md2man --disable-xxhash --disable-lz4 diff --git a/.github/workflows/ubuntu-build.yml b/.github/workflows/ubuntu-build.yml index 60dc8d5f..1db9a482 100644 --- a/.github/workflows/ubuntu-build.yml +++ b/.github/workflows/ubuntu-build.yml @@ -3,8 +3,14 @@ name: Test rsync on Ubuntu on: push: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/ubuntu-build.yml' pull_request: branches: [ master ] +paths-ignore: + - '.github/workflows/*.yml' + - '!.github/workflows/ubuntu-build.yml' schedule: - cron: '42 8 * * *' -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
d.yml b/.github/workflows/solaris-build.yml index 7de3d35e..557a5781 100644 --- a/.github/workflows/solaris-build.yml +++ b/.github/workflows/solaris-build.yml @@ -5,16 +5,18 @@ on: branches: [ master ] pull_request: branches: [ master ] + schedule: +- cron: '42 8 * * *' jobs: - solaris-test: + test: runs-on: ubuntu-latest name: Test rsync on Solaris steps: - uses: actions/checkout@v4 with: fetch-depth: 0 -- name: Test in Solaris +- name: Test in Solaris VM id: test uses: vmactions/solaris-vm@v1 with: @@ -27,3 +29,15 @@ jobs: make ./rsync --version ./rsync-ssl --no-motd download.samba.org::rsyncftp/ || true +- name: save artifact + uses: actions/upload-artifact@v3 + with: +name: solaris-bin +path: | + rsync + rsync-ssl + rsync.1 + rsync-ssl.1 + rsyncd.conf.5 + rrsync.1 + rrsync diff --git a/.github/workflows/ubuntu-build.yml b/.github/workflows/ubuntu-build.yml new file mode 100644 index ..60dc8d5f --- /dev/null +++ b/.github/workflows/ubuntu-build.yml @@ -0,0 +1,50 @@ +name: Test rsync on Ubuntu + +on: + push: +branches: [ master ] + pull_request: +branches: [ master ] + schedule: +- cron: '42 8 * * *' + +jobs: + test: +runs-on: ubuntu-20.04 +name: Test rsync on Ubuntu +steps: +- uses: actions/checkout@v4 + with: +fetch-depth: 0 +- name: prep + run: | +sudo apt-get install acl libacl1-dev attr libattr1-dev liblz4-dev libzstd-dev libxxhash-dev python3-cmarkgfm openssl +echo "/usr/local/bin" >>$GITHUB_PATH +- name: configure + run: ./configure --with-rrsync +- name: make + run: make +- name: install + run: sudo make install +- name: info + run: rsync --version +- name: check + run: sudo RSYNC_EXPECT_SKIPPED=crtimes make check +- name: check30 + run: sudo RSYNC_EXPECT_SKIPPED=crtimes make check30 +- name: check29 + run: sudo RSYNC_EXPECT_SKIPPED=crtimes make check29 +- name: ssl file list + run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true +- name: save artifact + uses: actions/upload-artifact@v3 + with: +name: ubuntu-bin +path: | + rsync + rsync-ssl + rsync.1 + rsync-ssl.1 + rsyncd.conf.5 + rrsync.1 + rrsync -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via fcc79836 Get fetch-depth:0 right. from 804411b7 Get rid of gensend target & cached git version. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit fcc79836b8f99bb9993b26de3a03cee14daf5ddf Author: Wayne Davison Date: Wed Apr 10 12:30:05 2024 -0700 Get fetch-depth:0 right. --- Summary of changes: .github/workflows/build.yml | 9 ++--- .github/workflows/freebsd-build.yml | 3 ++- .github/workflows/solaris-build.yml | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 09a8ce24..f407dab7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,8 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - fetch-depth: 0 + with: +fetch-depth: 0 - name: prep run: | sudo apt-get install acl libacl1-dev attr libattr1-dev liblz4-dev libzstd-dev libxxhash-dev python3-cmarkgfm openssl @@ -52,7 +53,8 @@ jobs: runs-on: macos-latest steps: - uses: actions/checkout@v4 - fetch-depth: 0 + with: +fetch-depth: 0 - name: prep run: | brew install automake openssl xxhash zstd lz4 @@ -88,7 +90,8 @@ jobs: if: (github.event_name == 'schedule' || contains(github.event.head_commit.message, '[buildall]')) steps: - uses: actions/checkout@v4 - fetch-depth: 0 + with: +fetch-depth: 0 - name: cygwin run: choco install -y --no-progress cygwin cyg-get - name: prep diff --git a/.github/workflows/freebsd-build.yml b/.github/workflows/freebsd-build.yml index 0fb5adb0..2c0061ee 100644 --- a/.github/workflows/freebsd-build.yml +++ b/.github/workflows/freebsd-build.yml @@ -12,7 +12,8 @@ jobs: name: Test rsync on FreeBSD steps: - uses: actions/checkout@v4 - fetch-depth: 0 + with: +fetch-depth: 0 - name: Test in FreeBSD id: test uses: vmactions/freebsd-vm@v1 diff --git a/.github/workflows/solaris-build.yml b/.github/workflows/solaris-build.yml index feb4ad0b..7de3d35e 100644 --- a/.github/workflows/solaris-build.yml +++ b/.github/workflows/solaris-build.yml @@ -12,7 +12,8 @@ jobs: name: Test rsync on Solaris steps: - uses: actions/checkout@v4 - fetch-depth: 0 + with: +fetch-depth: 0 - name: Test in Solaris id: test uses: vmactions/solaris-vm@v1 -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
a/packaging/pre-push +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -e - -cat >/dev/null # Just discard stdin data - -if [[ -f /proc/$PPID/cmdline ]]; then -while read -d $'\0' arg ; do - if [[ "$arg" == '--tags' ]] ; then - exit 0 - fi -done https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 5510255f Tweak maintainer messaging. via 56a039b0 Changes for 3.3.1dev. from 7bc3be2b CI: fixed rules for when to trigger https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 5510255f120ba13a1874086a1ef7ea8a7bf66570 Author: Wayne Davison Date: Mon Apr 8 13:16:12 2024 -0700 Tweak maintainer messaging. commit 56a039b04a186678e8e150a95529f23d93e2ca56 Author: Wayne Davison Date: Mon Apr 8 13:14:59 2024 -0700 Changes for 3.3.1dev. --- Summary of changes: NEWS.md | 15 +++ README.md| 8 +--- rsync.1.md | 3 +-- rsyncd.conf.5.md | 3 +-- version.h| 2 +- 5 files changed, 23 insertions(+), 8 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 846ed0ac..1a88a70d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,17 @@ +# NEWS for rsync 3.3.1 (UNRELEASED) + +## Changes in this version: + +### BUG FIXES: + +- Fixed the included popt to avoid a memory error on modern gcc versions. + +### INTERNAL: + + - Updated included popt to version 1.19. + +-- + # NEWS for rsync 3.3.0 (6 Apr 2024) ## Changes in this version: @@ -4762,6 +4776,7 @@ | RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL| |--||--|-| +| ?? Apr 2024 | 3.3.1 | | 31 | | 06 Apr 2024 | 3.3.0 | | 31 | | 20 Oct 2022 | 3.2.7 | | 31 | | 09 Sep 2022 | 3.2.6 | | 31 | diff --git a/README.md b/README.md index f9689972..6bedf2e1 100644 --- a/README.md +++ b/README.md @@ -132,9 +132,11 @@ source. COPYRIGHT - -Rsync was originally written by Andrew Tridgell and is currently -maintained by Wayne Davison. It has been improved by many developers -from around the world. +Rsync was originally written by Andrew Tridgell and has been improved by many +developers from around the world. + +Rsync was originally written by Andrew Tridgell and Paul Mackerras. Many +people from around the world have helped to maintain and improve it. Rsync may be used, modified and redistributed only under the terms of the GNU General Public License, found in the file [COPYING][9] in this diff --git a/rsync.1.md b/rsync.1.md index afaf1de8..4407a013 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -4838,8 +4838,7 @@ David Bell. I've probably missed some people, my apologies if I have. ## AUTHOR Rsync was originally written by Andrew Tridgell and Paul Mackerras. Many -people have later contributed to it. It is currently maintained by Wayne -Davison. +people from around the world have helped to maintain and improve it. Mailing lists for support and development are available at <https://lists.samba.org/>. diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md index 2ba7..2f257659 100644 --- a/rsyncd.conf.5.md +++ b/rsyncd.conf.5.md @@ -1273,8 +1273,7 @@ Thanks to Karsten Thygesen for his many suggestions and documentation! ## AUTHOR Rsync was originally written by Andrew Tridgell and Paul Mackerras. Many -people have later contributed to it. It is currently maintained by Wayne -Davison. +people from around the world have helped to maintain and improve it. Mailing lists for support and development are available at <https://lists.samba.org/>. diff --git a/version.h b/version.h index b162146e..47d5dbe1 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.3.0" +#define RSYNC_VERSION "3.3.1pre" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
b+=k[1]; a+=k[0]; break; + case 8:b += k[1]; a+=k[0]; break; + case 7:b += k[1]&0xff; a+=k[0]; break; + case 6:b += k[1]&0x; a+=k[0]; break; + case 5:b += k[1]&0xff; a+=k[0]; break; + case 4:a += k[0]; break; + case 3:a += k[0]&0xff; break; + case 2:a += k[0]&0x; break; + case 1:a += k[0]&0xff; break; + case 0:goto exit; + } + +#else /* make valgrind happy */ + + k8 = (const uint8_t *)k; + switch (size) { + case 12:c += k[2]; b+=k[1]; a+=k[0] break; + case 11:c += ((uint32_t)k8[10])<<16;/* fallthrough */ + case 10:c += ((uint32_t)k8[9])<<8; /* fallthrough */ + case 9:c += k8[8]; /* fallthrough */ + case 8:b += k[1]; a+=k[0]; break; + case 7:b += ((uint32_t)k8[6])<<16; /* fallthrough */ + case 6:b += ((uint32_t)k8[5])<<8; /* fallthrough */ + case 5:b += k8[4]; /* fallthrough */ + case 4:a += k[0]; break; + case 3:a += ((uint32_t)k8[2])<<16; /* fallthrough */ + case 2:a += ((uint32_t)k8[1])<<8; /* fallthrough */ + case 1:a += k8[0]; break; + case 0:goto exit; + } + +#endif /* !valgrind */ + +} else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) { + const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */ + const uint8_t *k8; + + /*--- all but last block: aligned reads and different mixing */ + while (size > 12) { + a += k[0] + (((uint32_t)k[1])<<16); + b += k[2] + (((uint32_t)k[3])<<16); + c += k[4] + (((uint32_t)k[5])<<16); + _JLU3_MIX(a,b,c); + size -= 12; + k += 6; + } + + /*- handle the last (probably partial) block */ + k8 = (const uint8_t *)k; + switch (size) { + case 12: + c += k[4]+(((uint32_t)k[5])<<16); + b += k[2]+(((uint32_t)k[3])<<16); + a += k[0]+(((uint32_t)k[1])<<16); + break; + case 11: + c += ((uint32_t)k8[10])<<16; + /* fallthrough */ + case 10: + c += (uint32_t)k[4]; + b += k[2]+(((uint32_t)k[3])<<16); + a += k[0]+(((uint32_t)k[1])<<16); + break; + case 9: + c += (uint32_t)k8[8]; + /* fallthrough */ + case 8: + b += k[2]+(((uint32_t)k[3])<<16); -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via ae3e13ba Update github links. from 6c8ca91c Preparing for release of 3.3.0 [buildall] https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit ae3e13ba99d0d6c1727ca7930b0eab5f60122ae0 Author: Wayne Davison Date: Sat Apr 6 10:33:42 2024 -0700 Update github links. --- Summary of changes: README.md | 6 +++--- configure.ac| 2 +- rsync.1.md | 2 +- rsyncd.conf.5.md| 2 +- support/rrsync.1.md | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/README.md b/README.md index a86c7710..f9689972 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ If you need to build rsync yourself, check out the [INSTALL][1] page for information on what libraries and packages you can use to get the maximum features in your build. -[1]: https://github.com/WayneD/rsync/blob/master/INSTALL.md +[1]: https://github.com/RsyncProject/rsync/blob/master/INSTALL.md SETUP - @@ -120,7 +120,7 @@ If you want to get the very latest version of rsync direct from the source code repository, then you will need to use git. The git repo is hosted [on GitHub][6] and [on Samba's site][7]. -[6]: https://github.com/WayneD/rsync +[6]: https://github.com/RsyncProject/rsync [7]: https://git.samba.org/?p=rsync.git;a=summary See [the download page][8] for full details on all the ways to grab the @@ -140,5 +140,5 @@ Rsync may be used, modified and redistributed only under the terms of the GNU General Public License, found in the file [COPYING][9] in this distribution, or at [the Free Software Foundation][10]. -[9]: https://github.com/WayneD/rsync/blob/master/COPYING +[9]: https://github.com/RsyncProject/rsync/blob/master/COPYING [10]: https://www.fsf.org/licenses/gpl.html diff --git a/configure.ac b/configure.ac index ccad7f13..0d868571 100644 --- a/configure.ac +++ b/configure.ac @@ -573,7 +573,7 @@ if test x"$no_lib" != x; then echo "" echo "See the INSTALL file for hints on how to install the missing libraries and/or" echo "how to generate (or fetch) manpages:" -echo "https://github.com/WayneD/rsync/blob/master/INSTALL.md; +echo "https://github.com/RsyncProject/rsync/blob/master/INSTALL.md; echo "" echo "To disable one or more features, the relevant configure options are:" for lib in $no_lib; do diff --git a/rsync.1.md b/rsync.1.md index 2ae6f481..afaf1de8 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -4818,7 +4818,7 @@ An rsync web site is available at <https://rsync.samba.org/>. The site includes an FAQ-O-Matic which may cover questions unanswered by this manual page. -The rsync github project is <https://github.com/WayneD/rsync>. +The rsync github project is <https://github.com/RsyncProject/rsync>. We would be delighted to hear from you if you like this program. Please contact the mailing-list at . diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md index cd10e659..ec976bac 100644 --- a/rsyncd.conf.5.md +++ b/rsyncd.conf.5.md @@ -1260,7 +1260,7 @@ Rsync is distributed under the GNU General Public License. See the file [COPYING](COPYING) for details. An rsync web site is available at <https://rsync.samba.org/> and its github -project is <https://github.com/WayneD/rsync>. +project is <https://github.com/RsyncProject/rsync>. ## THANKS diff --git a/support/rrsync.1.md b/support/rrsync.1.md index 24892900..5f33930e 100644 --- a/support/rrsync.1.md +++ b/support/rrsync.1.md @@ -163,7 +163,7 @@ rsync is distributed under the GNU General Public License. See the file [COPYING](COPYING) for details. An rsync web site is available at <https://rsync.samba.org/> and its github -project is <https://github.com/WayneD/rsync>. +project is <https://github.com/RsyncProject/rsync>. ## AUTHOR -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.3.0 created
The annotated tag, v3.3.0 has been created at df60f6aa84e3ba9f251dde205f3ed03726b37137 (tag) tagging 6c8ca91c731b7bf2b081694bda85b7dadc2b7aff (commit) replaces v3.3.0pre1 tagged by Wayne Davison on Sat Apr 6 09:38:26 2024 -0700 - Log - Version 3.3.0. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCZhF6ghEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxaDFAJ9PhspDNI6jUQrBjHGbHiCvUCznEwCg8xaJ kBZO9GbiniI6ILawknW7kAI= =86eP -END PGP SIGNATURE- Grant Gardner (1): typo in rsyncd.conf.5.md Jiri Slaby (1): exclude: fix crashes with fortified strlcpy() Wayne Davison (9): A couple spelling tweaks; tweak order. Mention updated config files. A couple more NEWS improvements. Fix old stats bug that counted devices as symlinks. Convert mnt-excl into python. Make `--max-alloc=0` safer. Mention latest changes in NEWS. Some year updates. Preparing for release of 3.3.0 [buildall] zhangwenlong (1): update config.guess config.sub (#478) --- -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 6c8ca91c Preparing for release of 3.3.0 [buildall] from 079e74a3 Some year updates. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 6c8ca91c731b7bf2b081694bda85b7dadc2b7aff Author: Wayne Davison Date: Sat Apr 6 09:30:21 2024 -0700 Preparing for release of 3.3.0 [buildall] --- Summary of changes: NEWS.md | 4 ++-- delete.c | 2 +- exclude.c| 2 +- packaging/lsb/rsync.spec | 10 +- util2.c | 2 +- version.h| 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index da1e1852..846ed0ac 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# NEWS for rsync 3.3.0 (UNRELEASED) +# NEWS for rsync 3.3.0 (6 Apr 2024) ## Changes in this version: @@ -4762,7 +4762,7 @@ | RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL| |--||--|-| -| ?? May 2023 | 3.3.0 | | 31 | +| 06 Apr 2024 | 3.3.0 | | 31 | | 20 Oct 2022 | 3.2.7 | | 31 | | 09 Sep 2022 | 3.2.6 | | 31 | | 14 Aug 2022 | 3.2.5 | | 31 | diff --git a/delete.c b/delete.c index dcb6a9af..89c1f8d6 100644 --- a/delete.c +++ b/delete.c @@ -4,7 +4,7 @@ * Copyright (C) 1996-2000 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras * Copyright (C) 2002 Martin Pool - * Copyright (C) 2003-2023 Wayne Davison + * Copyright (C) 2003-2024 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/exclude.c b/exclude.c index 1a5de3b9..87edbcf7 100644 --- a/exclude.c +++ b/exclude.c @@ -4,7 +4,7 @@ * Copyright (C) 1996-2001 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras * Copyright (C) 2002 Martin Pool - * Copyright (C) 2003-2022 Wayne Davison + * Copyright (C) 2003-2024 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/packaging/lsb/rsync.spec b/packaging/lsb/rsync.spec index 5df58b96..10385a39 100644 --- a/packaging/lsb/rsync.spec +++ b/packaging/lsb/rsync.spec @@ -1,9 +1,9 @@ Summary: A fast, versatile, remote (and local) file-copying tool Name: rsync Version: 3.3.0 -%define fullversion %{version}pre1 -Release: 0.1.pre1 -%define srcdir src-previews +%define fullversion %{version} +Release: 1 +%define srcdir src Group: Applications/Internet License: GPL Source0: https://rsync.samba.org/ftp/rsync/%{srcdir}/rsync-%{fullversion}.tar.gz @@ -79,8 +79,8 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/rsync-ssl/certs %changelog -* Sat Apr 29 2023 Wayne Davison -Released 3.3.0pre1. +* Sat Apr 06 2024 Wayne Davison +Released 3.3.0. * Fri Mar 21 2008 Wayne Davison Added installation of /etc/xinetd.d/rsync file and some commented-out diff --git a/util2.c b/util2.c index e398340e..b59bff0a 100644 --- a/util2.c +++ b/util2.c @@ -4,7 +4,7 @@ * Copyright (C) 1996-2000 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras * Copyright (C) 2001, 2002 Martin Pool - * Copyright (C) 2003-2023 Wayne Davison + * Copyright (C) 2003-2024 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/version.h b/version.h index da4bb368..b162146e 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.3.0pre1" +#define RSYNC_VERSION "3.3.0" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 079e74a3 Some year updates. via abc3c746 Mention latest changes in NEWS. via 99ab5946 exclude: fix crashes with fortified strlcpy() from a47ae6fa typo in rsyncd.conf.5.md https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 079e74a30f3615ccd70864621dab6d8df0ae0122 Author: Wayne Davison Date: Sat Apr 6 09:21:44 2024 -0700 Some year updates. commit abc3c746527bb030db37010e03ef574ddc47fe36 Author: Wayne Davison Date: Sat Apr 6 09:17:16 2024 -0700 Mention latest changes in NEWS. commit 99ab59464bf44f18d668e373bc3d0f65190b87ac Author: Jiri Slaby Date: Fri Aug 18 08:26:20 2023 +0200 exclude: fix crashes with fortified strlcpy() Fortified (-D_FORTIFY_SOURCE=2 for gcc) builds make strlcpy() crash when its third parameter (size) is larger than the buffer: $ rsync -FFXHav '--filter=merge global-rsync-filter' Align-37-43/ xxx sending incremental file list *** buffer overflow detected ***: terminated It's in the exclude code in setup_merge_file(): strlcpy(y, save, MAXPATHLEN); Note the 'y' pointer was incremented, so it no longer points to memory with MAXPATHLEN "owned" bytes. Fix it by remembering the number of copied bytes into the 'save' buffer and use that instead of MAXPATHLEN which is clearly incorrect. Fixes #511. --- Summary of changes: NEWS.md | 7 +++ delete.c | 2 +- exclude.c | 5 +++-- latest-year.h | 2 +- util2.c | 2 +- 5 files changed, 13 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index ca60c32c..da1e1852 100644 --- a/NEWS.md +++ b/NEWS.md @@ -10,6 +10,11 @@ - Fixed an buffer overflow in the checksum2 code if SHA1 is being used for the checksum2 algorithm. +- Fixed an issue when rsync is compiled using `_FORTIFY_SOURCE` so that the + extra tests don't complain about a strlcpy() limit value (which was too + large, even though it wasn't possible for the larger value to cause an + overflow). + - Add a backtick to the list of characters that the filename quoting needs to escape using backslashes. @@ -49,6 +54,8 @@ - Changed the mapfrom & mapto perl scripts (in the support dir) into a single python script named idmap. Converted a couple more perl scripts into python. +- Changed the mnt-excl perl script (in the support dir) into a python script. + ### DEVELOPER RELATED: - Updated config.guess (timestamp 2023-01-01) and config.sub (timestamp diff --git a/delete.c b/delete.c index 80766164..dcb6a9af 100644 --- a/delete.c +++ b/delete.c @@ -4,7 +4,7 @@ * Copyright (C) 1996-2000 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras * Copyright (C) 2002 Martin Pool - * Copyright (C) 2003-2020 Wayne Davison + * Copyright (C) 2003-2023 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/exclude.c b/exclude.c index ffe55b16..1a5de3b9 100644 --- a/exclude.c +++ b/exclude.c @@ -720,7 +720,8 @@ static BOOL setup_merge_file(int mergelist_num, filter_rule *ex, parent_dirscan = True; while (*y) { char save[MAXPATHLEN]; - strlcpy(save, y, MAXPATHLEN); + /* copylen is strlen(y) which is < MAXPATHLEN. +1 for \0 */ + size_t copylen = strlcpy(save, y, MAXPATHLEN) + 1; *y = '\0'; dirbuf_len = y - dirbuf; strlcpy(x, ex->pattern, MAXPATHLEN - (x - buf)); @@ -734,7 +735,7 @@ static BOOL setup_merge_file(int mergelist_num, filter_rule *ex, lp->head = NULL; } lp->tail = NULL; - strlcpy(y, save, MAXPATHLEN); + strlcpy(y, save, copylen); while ((*x++ = *y++) != '/') {} } parent_dirscan = False; diff --git a/latest-year.h b/latest-year.h index 0dcf3464..f978fb8b 100644 --- a/latest-year.h +++ b/latest-year.h @@ -1 +1 @@ -#define LATEST_YEAR "2023" +#define LATEST_YEAR "2024" diff --git a/util2.c b/util2.c index 3b5a8f41..e398340e 100644 --- a/util2.c +++ b/util2.c @@ -4,7 +4,7 @@ * Copyright (C) 1996-2000 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras * Copyright (C) 2001, 2002 Martin Pool - * Copyright (C) 2003-2020 Wayne Davison + * Copyright (C) 2003-2023 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via a47ae6fa typo in rsyncd.conf.5.md from 2f9b963a Make `--max-alloc=0` safer. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit a47ae6fad901d94c1853fa27b56bc458a48bbee2 Author: Grant Gardner Date: Sun Mar 17 14:00:16 2024 +1100 typo in rsyncd.conf.5.md --- Summary of changes: rsyncd.conf.5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md index 3d91cd93..cd10e659 100644 --- a/rsyncd.conf.5.md +++ b/rsyncd.conf.5.md @@ -1023,7 +1023,7 @@ in the values of parameters. See that section for details. _not_ displayed if the script returns success. The other programs cannot send any text to the user. All output except for the `pre-xfer exec` stdout goes to the corresponding daemon's stdout/stderr, which is typically -discarded. See the `--no-detatch` option for a way to see the daemon's +discarded. See the `--no-detach` option for a way to see the daemon's output, which can assist with debugging. Note that the `early exec` command runs before any part of the transfer -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
set of excludes # that will exclude all mount points from the list. This is @@ -27,23 +27,33 @@ # awk '{print $2}' /proc/mounts | grep -v '^/$' | \ # rsync -avf 'merge,/- -' /dir host:/dest/ -use strict; -use warnings; -use Cwd 'abs_path'; +import os, argparse -my $file = '/proc/mounts'; -my $dir = shift || '/'; -my $trailing_slash = $dir =~ m{./$} ? '/' : ''; -$dir = abs_path($dir) . $trailing_slash; -$dir =~ s{([^/]*)$}{}; -my $trailing = $1; -$trailing = '' if $trailing eq '.' || !-d "$dir$trailing"; -$trailing .= '/' if $trailing ne ''; +MNT_FILE = '/proc/mounts'; -open(IN, $file) or die "Unable to open $file: $!\n"; -while () { -$_ = (split)[1]; -next unless s{^\Q$dir$trailing\E}{}o && $_ ne ''; -print "- /$trailing$_\n"; -} -close IN; +def main(): +trailing_slash = '/' if args.path.endswith(('/', '/.')) and args.path != '/' else '' +args.path = os.path.realpath(args.path) + trailing_slash +parent_dir = os.path.dirname(args.path) +trailing = os.path.basename(args.path) +if not os.path.isdir(args.path): +trailing = '' +elif trailing != '': +trailing += '/' +want_path = os.path.join(parent_dir, trailing) +wp_len = len(want_path) + +with open(MNT_FILE) as fh: +for line in fh: +mnt_path = line.split()[1] +if mnt_path.startswith(want_path) and mnt_path != want_path: +print(f"- /{trailing}{mnt_path[wp_len:]}") + +if __name__ == '__main__': +parser = argparse.ArgumentParser(description="Output mount points as rsync excludes.", add_help=False) +parser.add_argument("--help", "-h", action="help", help="Output this help message and exit.") +parser.add_argument('path', metavar='PATH', nargs='?', default='/', help="Limit output to those within the PATH hierarchy.") +args = parser.parse_args() +main() + +# vim: sw=4 et diff --git a/util2.c b/util2.c index a8609a5d..3b5a8f41 100644 --- a/util2.c +++ b/util2.c @@ -72,7 +72,7 @@ int msleep(int t) void *my_alloc(void *ptr, size_t num, size_t size, const char *file, int line) { - if (max_alloc && num >= max_alloc/size) { + if (num >= max_alloc/size) { if (!file) return NULL; rprintf(FERROR, "[%s] exceeded --max-alloc=%s setting (file=%s, line=%d)\n", -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
s"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -456,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 86f41650 A couple spelling tweaks; tweak order. from 9a06b2ed Preparing for release of 3.3.0pre1 [buildall] https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 86f41650fb048fa5857a137f70074d77ebe06e36 Author: Wayne Davison Date: Sun Apr 30 17:28:50 2023 -0700 A couple spelling tweaks; tweak order. --- Summary of changes: NEWS.md| 8 rsync.1.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 1d3a158b..67869ccc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -10,12 +10,12 @@ - Fixed an buffer overflow in the checksum2 code if SHA1 is being used for the checksum2 algorithm. -- Fixed a string-comparison issue in the internal file-list code that affected - tr_TR.utf-8. - - Add a backtick to the list of characters that the filename quoting needs to escape using backslashes. +- Fixed a string-comparison issue in the internal file-list code that affected + tr_TR.utf-8. + - Make sure that a local transfer marks the sender side as trusted. - Change the argv handling to work with a newer popt library -- one that likes @@ -100,7 +100,7 @@ - The `--fuzzy` option was optimized a bit to try to cut down on the amount of computations when considering a big pool of files. The simple heuristic from - Kenneth Finnegan resuled in about a 2x speedup. + Kenneth Finnegan resulted in about a 2x speedup. - If rsync is forced to use protocol 29 or before (perhaps due to talking to an rsync before 3.0.0), the modify time of a file is limited to 4-bytes. Rsync diff --git a/rsync.1.md b/rsync.1.md index 16dbf20c..894b3663 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -245,7 +245,7 @@ to be copied to different destination directories using more than one copy. While a copy of a case-ignoring filesystem to a case-ignoring filesystem can work out fairly well, if no `--delete-during` or `--delete-before` option is -active, rsync can potentially update an existing file on the receiveing side +active, rsync can potentially update an existing file on the receiving side without noticing that the upper-/lower-case of the filename should be changed to match the sender. -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
ight (C) 2003-2023 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -372,7 +372,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r, if (fd != -1 && offset > 0) { if (sparse_files > 0) { - if (sparse_end(fd, offset) != 0) + if (sparse_end(fd, offset, updating_basis_or_equiv) != 0) goto report_write_error; } else if (flush_write_file(fd) < 0) { report_write_error: diff --git a/rsync.1.md b/rsync.1.md index ee0a4f39..16dbf20c 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -1636,7 +1636,9 @@ expand it. 0. `--crtimes`, `-N,` This tells rsync to set the create times (newness) of the destination -files to the same value as the source files. +files to the same value as the source files. Your OS & filesystem must +support the setting of arbitrary creation (birth) times for this option +to be supported. 0. `--omit-dir-times`, `-O` diff --git a/support/rrsync b/support/rrsync index 94c85f59..4b4b87c5 100755 --- a/support/rrsync +++ b/support/rrsync @@ -258,6 +258,9 @@ def main(): if args.munge: rsync_opts.append('--munge-links') + +if args.no_overwrite: + rsync_opts.append('--ignore-existing') if not rsync_args: rsync_args = [ '.' ] @@ -364,6 +367,7 @@ if __name__ == '__main__': arg_parser.add_argument('-munge', action='store_true', help="Enable rsync's --munge-links on the server side.") arg_parser.add_argument('-no-del', action='store_true', help="Disable rsync's --delete* and --remove* options.") arg_parser.add_argument('-no-lock', action='store_true', help="Avoid the single-run (per-user) lock check.") +arg_parser.add_argument('-no-overwrite', action='store_true', help="Prevent overwriting existing files by enforcing --ignore-existing") arg_parser.add_argument('-help', '-h', action='help', help="Output this help message and exit.") arg_parser.add_argument('dir', metavar='DIR', help="The restricted directory to use.") args = arg_parser.parse_args() diff --git a/support/rrsync.1.md b/support/rrsync.1.md index 98f2cab0..24892900 100644 --- a/support/rrsync.1.md +++ b/support/rrsync.1.md @@ -5,7 +5,7 @@ rrsync - a script to setup restricted rsync users via ssh logins ## SYNOPSIS ``` -rrsync [-ro|-rw] [-munge] [-no-del] [-no-lock] DIR +rrsync [-ro|-rw] [-munge] [-no-del] [-no-lock] [-no-overwrite] DIR ``` The single non-option argument specifies the restricted _DIR_ to use. It can be @@ -85,6 +85,11 @@ The remainder of this manpage is dedicated to using the rrsync script. Avoid the single-run (per-user) lock check. Useful with [`-munge`](#opt). +0. `-no-overwrite` + + Enforce `--ignore-existing` on the server. Prevents overwriting existing +files when the server is the receiver. + 0. `-help`, `-h` Output this help message and exit. diff --git a/version.h b/version.h index fdfce4c4..da4bb368 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.7" +#define RSYNC_VERSION "3.3.0pre1" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.3.0pre1 created
The annotated tag, v3.3.0pre1 has been created at a96e9badc76e93f883fe56c651067d35e2a9e9eb (tag) tagging 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3 (commit) replaces v3.2.7 tagged by Wayne Davison on Sat Apr 29 09:10:32 2023 -0700 - Log - Version 3.3.0pre1. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCZE1BeBEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxfm3AJ0XImdSUym/s+yvmGuWUkQKqZvlSACcCXjt 9tKfVod0Sn0UDTNoqzjBquM= =UeuT -END PGP SIGNATURE- Wayne Davison (25): Cygwin needs stdout flushed. [buildall] Fix protocol <= 29 daemon auth if openssl is handling md4. Init the checksum choices before the daemon auth. Call `OpenSSL_add_all_algorithms()` on older openssl versions. Check for EVP_MD_CTX_copy in crypto lib instead of MD5_Init. Upgrade verion of actions. Avoid quoting of tilde when it's a destination arg. Tweak an older NEWS item to be a bit clearer. Convert a few more scripts to python3. Another python conversion. Duplicate argv data before poptFreeContext(). Improve [global] module documentation. A couple manpage links. Trust the sender on a local transfer. Add backtick to SHELL_CHARS. Don't call memcmp() on an empty lastdir. Fix flist string comparison issue in tr_TR.utf-8 locale. Tweak shell protection news to mention a few more characters. Make use of .UR & .UE for links. Fix overflow of sum2 buffer for sha1 rolling checksums. Add --force-link-text to md-convert. Fix issue with trailing --sparse --inplace blocks. Mention that `--crtimes` support is spotty. Update the NEWS. Preparing for release of 3.3.0pre1 [buildall] dogvisor (1): add rrsync option to enforce `--ignore-existing` (#461) --- -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 5c93dedf Add backtick to SHELL_CHARS. via f1e3434b Trust the sender on a local transfer. via 48252c3c A couple manpage links. from 5b67ff2a Improve [global] module documentation. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 5c93dedf4538426982f8832fa9103f09a78a01ad Author: Wayne Davison Date: Wed Jan 4 21:52:48 2023 -0800 Add backtick to SHELL_CHARS. commit f1e3434b59dd3dfbf4b6faf8dbc81dd068adc305 Author: Wayne Davison Date: Thu Dec 1 20:16:51 2022 -0800 Trust the sender on a local transfer. commit 48252c3c2bc0b1a375137dd91932122d6ee82a8a Author: Wayne Davison Date: Wed Nov 23 07:58:43 2022 -0800 A couple manpage links. --- Summary of changes: main.c | 6 +- options.c| 2 +- rsyncd.conf.5.md | 10 +- 3 files changed, 11 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/main.c b/main.c index 9f36904d..0c60b86d 100644 --- a/main.c +++ b/main.c @@ -89,6 +89,8 @@ extern int backup_dir_len; extern int basis_dir_cnt; extern int default_af_hint; extern int stdout_format_has_i; +extern int trust_sender_filter; +extern int trust_sender_args; extern struct stats stats; extern char *stdout_format; extern char *logfile_format; @@ -1471,8 +1473,10 @@ static int start_client(int argc, char *argv[]) } /* A local transfer doesn't unbackslash anything, so leave the args alone. */ - if (local_server) + if (local_server) { old_style_args = 2; + trust_sender_args = trust_sender_filter = 1; + } if (!rsync_port && remote_argc && !**remote_argv) /* Turn an empty arg into a dot dir. */ *remote_argv = "."; diff --git a/options.c b/options.c index ded0e7a3..c9c82527 100644 --- a/options.c +++ b/options.c @@ -2518,7 +2518,7 @@ static char SPLIT_ARG_WHEN_OLD[1]; **/ char *safe_arg(const char *opt, const char *arg) { -#define SHELL_CHARS "!#$&;|<>(){}\"' \t\\" +#define SHELL_CHARS "!#$&;|<>(){}\"'` \t\\" #define WILD_CHARS "*?[]" /* We don't allow remote brace expansion */ BOOL is_filename_arg = !opt; char *escapes = is_filename_arg ? SHELL_CHARS : WILD_CHARS SHELL_CHARS; diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md index 8ebbf87f..3d91cd93 100644 --- a/rsyncd.conf.5.md +++ b/rsyncd.conf.5.md @@ -120,9 +120,9 @@ parameters: You can override the default backlog value when the daemon listens for connections. It defaults to 5. -You may also include any module parameters in the global part of the config -file, in which case the supplied value will override the default for that -parameter. +You may also include any [MODULE PARAMETERS](#) in the global part of the +config file, in which case the supplied value will override the default for +that parameter. You may use references to environment variables in the values of parameters. String parameters will have %VAR% references expanded as late as possible (when @@ -153,8 +153,8 @@ parameters as a combination of the default values that are set at that position in the config file plus its own parameter list, the use of a "[global]" section can help to maintain shared config values for multiple modules. -As with GLOBAL PARAMETERS, you may use references to environment variables in -the values of parameters. See the GLOBAL PARAMETERS section for more details. +As with [GLOBAL PARAMETERS](#), you may use references to environment variables +in the values of parameters. See that section for details. 0. `comment` -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
"You may not combine multiple --delete-WHEN options.\n"); - return 0; + goto cleanup; } if (delete_before || delete_during || delete_after) delete_mode = 1; @@ -2184,7 +2201,7 @@ int parse_arguments(int *argc_p, const char ***argv_p) delete_during = 1; else { create_refuse_error(refused_delete_before); - return 0; + goto cleanup; } } else if (refused_delete_during) delete_before = 1; @@ -2193,14 +2210,14 @@ int parse_arguments(int *argc_p, const char ***argv_p) if (!xfer_dirs && delete_mode) { snprintf(err_buf, sizeof err_buf, "--delete does not work without --recursive (-r) or --dirs (-d).\n"); - return 0; + goto cleanup; } -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 53749940 Avoid quoting of tilde when it's a destination arg. via 52636612 Upgrade verion of actions. from 556a2c5b Check for EVP_MD_CTX_copy in crypto lib instead of MD5_Init. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 537499408948f4e3dd048a861eb58f211e4546f8 Author: Wayne Davison Date: Sat Nov 5 09:14:33 2022 -0700 Avoid quoting of tilde when it's a destination arg. commit 526366129aea62d01e57b4e6304c5088f065cf5e Author: Wayne Davison Date: Wed Nov 2 23:54:41 2022 -0700 Upgrade verion of actions. --- Summary of changes: .github/workflows/build.yml | 12 ++-- options.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 75987fa3..3439e181 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: ubuntu-build: runs-on: ubuntu-20.04 steps: -- uses: actions/checkout@v2 +- uses: actions/checkout@v3 - name: prep run: | sudo apt-get install acl libacl1-dev attr libattr1-dev liblz4-dev libzstd-dev libxxhash-dev python3-cmarkgfm openssl wget @@ -38,7 +38,7 @@ jobs: - name: ssl file list run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true - name: save artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ubuntu-bin path: | @@ -53,7 +53,7 @@ jobs: macos-build: runs-on: macos-latest steps: -- uses: actions/checkout@v2 +- uses: actions/checkout@v3 - name: prep run: | brew install automake openssl xxhash zstd lz4 wget @@ -73,7 +73,7 @@ jobs: - name: ssl file list run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true - name: save artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: macos-bin path: | @@ -89,7 +89,7 @@ jobs: runs-on: windows-2022 if: (github.event_name == 'schedule' || contains(github.event.head_commit.message, '[buildall]')) steps: -- uses: actions/checkout@v2 +- uses: actions/checkout@v3 - name: cygwin run: choco install -y --no-progress cygwin cyg-get - name: prep @@ -112,7 +112,7 @@ jobs: - name: ssl file list run: bash -c 'PATH="/usr/local/bin:$PATH" rsync-ssl --no-motd download.samba.org::rsyncftp/ || true' - name: save artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: cygwin-bin path: | diff --git a/options.c b/options.c index d38bbe8d..cfa3e1dc 100644 --- a/options.c +++ b/options.c @@ -2510,7 +2510,7 @@ char *safe_arg(const char *opt, const char *arg) char *ret; if (!protect_args && old_style_args < 2 && (!old_style_args || (!is_filename_arg && opt != SPLIT_ARG_WHEN_OLD))) { const char *f; - if (!trust_sender_args && *arg == '~' + if (*arg == '~' && is_filename_arg && !am_sender && !trust_sender_args && ((relative_paths && !strstr(arg, "/./")) || !strchr(arg, '/'))) { extras++; -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 556a2c5b Check for EVP_MD_CTX_copy in crypto lib instead of MD5_Init. from 27feda04 Call `OpenSSL_add_all_algorithms()` on older openssl versions. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 556a2c5bc2f6244f140a96302d4df92cfc25af8b Author: Wayne Davison Date: Tue Oct 25 21:55:53 2022 -0700 Check for EVP_MD_CTX_copy in crypto lib instead of MD5_Init. --- Summary of changes: configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/configure.ac b/configure.ac index a2c99558..ccad7f13 100644 --- a/configure.ac +++ b/configure.ac @@ -432,10 +432,10 @@ AH_TEMPLATE([USE_OPENSSL], if test x"$enable_openssl" != x"no"; then if test x"$ac_cv_header_openssl_md4_h" = x"yes" && test x"$ac_cv_header_openssl_md5_h" = x"yes"; then AC_MSG_RESULT(yes) - AC_SEARCH_LIBS(MD5_Init, crypto, + AC_SEARCH_LIBS(EVP_MD_CTX_copy, crypto, [AC_DEFINE(USE_OPENSSL) enable_openssl=yes], - [err_msg="$err_msg$nl- Failed to find MD5_Init function in openssl crypto lib."; + [err_msg="$err_msg$nl- Failed to find EVP_MD_CTX_copy function in openssl crypto lib."; no_lib="$no_lib openssl"]) else AC_MSG_RESULT(no) -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated discards c07d297640a2bb488b3480262ca8f1032b96258c (commit) via 27feda04 Call `OpenSSL_add_all_algorithms()` on older openssl versions. via bf96cd31 Init the checksum choices before the daemon auth. from c07d2976 Init the checksum choices before the daemon auth. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 27feda0436e39e04ae53e08247739f8b6c906d56 Author: Wayne Davison Date: Tue Oct 25 09:02:05 2022 -0700 Call `OpenSSL_add_all_algorithms()` on older openssl versions. commit bf96cd314c29c042a28399beac2c8b63b957967f Author: Wayne Davison Date: Tue Oct 25 08:55:07 2022 -0700 Init the checksum choices before the daemon auth. --- Summary of changes: checksum.c | 6 +- compat.c | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/checksum.c b/checksum.c index 60de3655..c6007f36 100644 --- a/checksum.c +++ b/checksum.c @@ -154,7 +154,7 @@ static const EVP_MD *csum_evp_md(struct name_num_item *nni) emd = NULL; else #endif - emd = EVP_get_digestbyname(nni->name); + emd = EVP_get_digestbyname(nni->name); if (emd && !(nni->flags & NNI_EVP_OK)) { /* Make sure it works before we advertise it */ if (!ctx_evp && !(ctx_evp = EVP_MD_CTX_create())) out_of_memory("csum_evp_md"); @@ -787,6 +787,10 @@ void init_checksum_choices() if (initialized_choices) return; +#if defined USE_OPENSSL && OPENSSL_VERSION_NUMBER < 0x1010L + OpenSSL_add_all_algorithms(); +#endif + #if defined SUPPORT_XXH3 || defined USE_OPENSSL for (nni = valid_checksums.list; nni->name; nni++) verify_digest(nni, True); diff --git a/compat.c b/compat.c index 25bbe0fb..4ce8c6d0 100644 --- a/compat.c +++ b/compat.c @@ -834,6 +834,8 @@ void output_daemon_greeting(int f_out, int am_client) char tmpbuf[MAX_NSTR_STRLEN]; int our_sub = get_subprotocol_version(); + init_checksum_choices(); + get_default_nno_list(_auth_checksums, tmpbuf, MAX_NSTR_STRLEN, '\0'); io_printf(f_out, "@RSYNCD: %d.%d %s\n", protocol_version, our_sub, tmpbuf); @@ -848,8 +850,6 @@ void negotiate_daemon_auth(int f_out, int am_client) int save_am_server = am_server; int md4_is_old = 0; - init_checksum_choices(); - if (!am_client) am_server = 1; -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via c07d2976 Init the checksum choices before the daemon auth. from 1b268880 Fix protocol <= 29 daemon auth if openssl is handling md4. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit c07d297640a2bb488b3480262ca8f1032b96258c Author: Wayne Davison Date: Tue Oct 25 08:55:07 2022 -0700 Init the checksum choices before the daemon auth. --- Summary of changes: compat.c | 2 ++ 1 file changed, 2 insertions(+) Changeset truncated at 500 lines: diff --git a/compat.c b/compat.c index 7acedf0e..25bbe0fb 100644 --- a/compat.c +++ b/compat.c @@ -848,6 +848,8 @@ void negotiate_daemon_auth(int f_out, int am_client) int save_am_server = am_server; int md4_is_old = 0; + init_checksum_choices(); + if (!am_client) am_server = 1; -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 1b268880 Fix protocol <= 29 daemon auth if openssl is handling md4. from 08ec80ac Cygwin needs stdout flushed. [buildall] https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 1b2688807d0e0b9486ad88470480c9f8641f9241 Author: Wayne Davison Date: Mon Oct 24 08:38:00 2022 -0700 Fix protocol <= 29 daemon auth if openssl is handling md4. --- Summary of changes: compat.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/compat.c b/compat.c index a8a6afe8..7acedf0e 100644 --- a/compat.c +++ b/compat.c @@ -873,8 +873,10 @@ void negotiate_daemon_auth(int f_out, int am_client) } } am_server = save_am_server; - if (md4_is_old && valid_auth_checksums.negotiated_nni->num == CSUM_MD4) + if (md4_is_old && valid_auth_checksums.negotiated_nni->num == CSUM_MD4) { valid_auth_checksums.negotiated_nni->num = CSUM_MD4_OLD; + valid_auth_checksums.negotiated_nni->flags = 0; + } } int get_subprotocol_version() -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 08ec80ac Cygwin needs stdout flushed. [buildall] from 6b5ae825 Preparing for release of 3.2.7 [buildall] https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 08ec80ac65205f29bdc128bd05ec4a40d2db8861 Author: Wayne Davison Date: Sat Oct 22 12:04:06 2022 -0700 Cygwin needs stdout flushed. [buildall] --- Summary of changes: usage.c | 1 + 1 file changed, 1 insertion(+) Changeset truncated at 500 lines: diff --git a/usage.c b/usage.c index a5b59ad8..f346385f 100644 --- a/usage.c +++ b/usage.c @@ -293,6 +293,7 @@ void print_rsync_version(enum logcode f) json_line("license", "GPLv3"); json_line("caveat", "rsync comes with ABSOLUTELY NO WARRANTY"); printf("\n}\n"); + fflush(stdout); return; } -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 6b5ae825 Preparing for release of 3.2.7 [buildall] from 3b719d1d Improve JSON output a bit more. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 6b5ae825db985e9d1c98576651b50c8e490ddb97 Author: Wayne Davison Date: Thu Oct 20 17:57:22 2022 -0700 Preparing for release of 3.2.7 [buildall] --- Summary of changes: NEWS.md | 4 ++-- packaging/lsb/rsync.spec | 10 +- version.h| 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index ad1aaee0..fb656288 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# NEWS for rsync 3.2.7 (UNRELEASED) +# NEWS for rsync 3.2.7 (20 Oct 2022) ## Changes in this version: @@ -4692,7 +4692,7 @@ | RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL| |--||--|-| -| ?? Dec 2022 | 3.2.7 | | 31 | +| 20 Oct 2022 | 3.2.7 | | 31 | | 09 Sep 2022 | 3.2.6 | | 31 | | 14 Aug 2022 | 3.2.5 | | 31 | | 15 Apr 2022 | 3.2.4 | | 31 | diff --git a/packaging/lsb/rsync.spec b/packaging/lsb/rsync.spec index f33c9f70..f2d7aa44 100644 --- a/packaging/lsb/rsync.spec +++ b/packaging/lsb/rsync.spec @@ -1,9 +1,9 @@ Summary: A fast, versatile, remote (and local) file-copying tool Name: rsync Version: 3.2.7 -%define fullversion %{version}pre1 -Release: 0.1.pre1 -%define srcdir src-previews +%define fullversion %{version} +Release: 1 +%define srcdir src Group: Applications/Internet License: GPL Source0: https://rsync.samba.org/ftp/rsync/%{srcdir}/rsync-%{fullversion}.tar.gz @@ -79,8 +79,8 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/rsync-ssl/certs %changelog -* Fri Sep 30 2022 Wayne Davison -Released 3.2.7pre1. +* Thu Oct 20 2022 Wayne Davison +Released 3.2.7. * Fri Mar 21 2008 Wayne Davison Added installation of /etc/xinetd.d/rsync file and some commented-out diff --git a/version.h b/version.h index 64ca62db..fdfce4c4 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.7pre1" +#define RSYNC_VERSION "3.2.7" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.7 created
The annotated tag, v3.2.7 has been created at b13e7a8ef4fa430223f66403506fb821caae5cfd (tag) tagging 6b5ae825db985e9d1c98576651b50c8e490ddb97 (commit) replaces v3.2.7pre1 tagged by Wayne Davison on Thu Oct 20 17:58:47 2022 -0700 - Log - Version 3.2.7. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCY1HuxxEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxXH7AJ9N4fGbNiltALeRDUw76nTdujQxCgCgqFK8 nkeO3pJk0+9Cy+KTgK/Ep9k= =mWq6 -END PGP SIGNATURE- Alexponomarev7 (1): Fix autoconf help strings (#389) Wayne Davison (21): Use newer protocol to avoid mtime corruption. Read a 4-byte mtime as unsigned (old-protocol). Complain if the destination arg is empty. Mention latest changes. Mention the `--list-only` output format. Mention smart-make in a comment. Fix validation of "preN" git tags for git-version.h. Change fgrep to grep. Tweak NEWS. Add info on single-file copying; tweak `--mkpath`. A few more manpage clarifications. Make the new manpage section better. Silence autoconf warnings. Fix version verification when "\|" doesn't work in sed. Yet another manpage tweak. Include "buildall" flag in the release commit. Improve `--mkpath` a bit more. Re-run the exclude test using lsh.sh pull. Make use of -VV when checking rsync capabilities. Improve JSON output a bit more. Preparing for release of 3.2.7 [buildall] --- -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
ite/xattrs.test index 455abef1..d94d5f95 100644 --- a/testsuite/xattrs.test +++ b/testsuite/xattrs.test @@ -8,7 +8,7 @@ . $suitedir/rsync.fns lnkdir="$tmpdir/lnk" -$RSYNC --version | grep "[, ] xattrs" >/dev/null || test_skipped "Rsync is configured without xattr support" +$RSYNC -VV | grep '"xattrs": true' >/dev/null || test_skipped "Rsync is configured without xattr support" case "$HOST_OS" in darwin*) diff --git a/usage.c b/usage.c index 2db64767..a5b59ad8 100644 --- a/usage.c +++ b/usage.c @@ -290,7 +290,7 @@ void print_rsync_version(enum logcode f) output_nno_list(f, "Daemon auth list", _auth_checksums); if (f == FNONE) { - json_line("license", "GPL3"); + json_line("license", "GPLv3"); json_line("caveat", "rsync comes with ABSOLUTELY NO WARRANTY"); printf("\n}\n"); return; -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
dir times. @@ -165,19 +180,19 @@ rm "$chkdir"/bar/down/to/bar/baz/*.deep cp_touch "$fromdir"/bar/down/to/foo/*.junk "$chkdir"/bar/down/to/foo cp_touch "$fromdir"/bar/down/to/foo/to "$chkdir"/bar/down/to/foo -$RSYNC -av --existing -f 'show .filt*' -f 'hide,! */' --del "$fromdir/" "$todir/" +$RSYNC -av --rsync-path="$RSYNC" --existing -f 'show .filt*' -f 'hide,! */' --del "$host$fromdir/" "$todir/" echo retained >"$todir"/bar/down/to/bar/baz/nodel.deep cp_touch "$todir"/bar/down/to/bar/baz/nodel.deep "$chkdir"/bar/down/to/bar/baz -$RSYNC -av --existing --filter='-! */' "$fromdir/" "$chkdir/" +$RSYNC -av --rsync-path="$RSYNC" --existing --filter='-! */' "$host$fromdir/" "$chkdir/" # Now, test if rsync excludes the same files, this time with a merge-exclude # file. checkit "sed '/!/d' '$excl' | -$RSYNC -avv -f dir-merge_.filt -f merge_- \ ---delete-during '$fromdir/' '$todir/'" "$chkdir" "$todir" +$RSYNC -avv$rpath -f dir-merge_.filt -f merge_- \ +--delete-during '$host$fromdir/' '$todir/'" "$chkdir" "$todir" # Remove the files that will be deleted. @@ -188,14 +203,14 @@ rm "$chkdir"/bar/down/to/foo/.filt2 rm "$chkdir"/bar/down/to/bar/.filt2 rm "$chkdir"/mid/.filt -$RSYNC -av --existing --include='*/' --exclude='*' "$fromdir/" "$chkdir/" +$RSYNC -av --rsync-path="$RSYNC" --existing --include='*/' --exclude='*' "$host$fromdir/" "$chkdir/" # Now, try the prior command with --delete-before and some side-specific # rules. checkit "sed '/!/d' '$excl' | -$RSYNC -avv -f :s_.filt -f .s_- -f P_nodel.deep \ ---delete-before '$fromdir/' '$todir/'" "$chkdir" "$todir" +$RSYNC -avv$rpath -f :s_.filt -f .s_- -f P_nodel.deep \ +--delete-before '$host$fromdir/' '$todir/'" "$chkdir" "$todir" # Next, we'll test some rule-restricted filter files. @@ -206,26 +221,26 @@ cat >"$fromdir/bar/down/to/foo/.excl" <f$all_plus extra-src -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated discards 9799c75b2463c725f1829b8e1b817f122af47835 (commit) via 42f83868 Improve `--mkpath` a bit more. from 9799c75b Improve `--mkpath` a bit more. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 42f8386823b6776ee9b63c3e005557e2f5af859a Author: Wayne Davison Date: Sun Oct 16 12:23:39 2022 -0700 Improve `--mkpath` a bit more. --- Summary of changes: rsync.1.md | 14 -- 1 file changed, 8 insertions(+), 6 deletions(-) Changeset truncated at 500 lines: diff --git a/rsync.1.md b/rsync.1.md index 6cd783eb..ee0a4f39 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -436,7 +436,7 @@ has its own detailed description later in this manpage. --append-verify --append w/old data in file checksum --dirs, -d transfer directories without recursing --old-dirs, --old-d works like --dirs when talking to old rsync ---mkpath create the destination's path component +--mkpath create destination's missing path components --links, -l copy symlinks as symlinks --copy-links, -L transform symlink into referent file/dir --copy-unsafe-links only "unsafe" symlinks are transformed @@ -1149,11 +1149,13 @@ expand it. 0. `--mkpath` -Create a missing path component of the destination path. By default, rsync -allows only the final component of the destination path to not exist, which -is an attempt to help you to validate your destination path. With this -option, rsync creates all the missing destination-path components, just as -if `mkdir -p $DEST_PATH` had been run on the receiving side. +Create all missing path components of the destination path. + +By default, rsync allows only the final component of the destination path +to not exist, which is an attempt to help you to validate your destination +path. With this option, rsync creates all the missing destination-path +components, just as if `mkdir -p $DEST_PATH` had been run on the receiving +side. When specifying a destination path, including a trailing slash ensures that the whole path is treated as directory names to be created, even when the -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 9799c75b Improve `--mkpath` a bit more. from ad6245f3 Include "buildall" flag in the release commit. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 9799c75b2463c725f1829b8e1b817f122af47835 Author: Wayne Davison Date: Sun Oct 16 12:23:39 2022 -0700 Improve `--mkpath` a bit more. --- Summary of changes: rsync.1.md | 18 +- 1 file changed, 9 insertions(+), 9 deletions(-) Changeset truncated at 500 lines: diff --git a/rsync.1.md b/rsync.1.md index 65cf8815..6cd783eb 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -1150,22 +1150,22 @@ expand it. 0. `--mkpath` Create a missing path component of the destination path. By default, rsync -allows only the final element of the destination path to not exist, which +allows only the final component of the destination path to not exist, which is an attempt to help you to validate your destination path. With this -option, rsync creates all the missing destination-path components just as -if `mkdir -p $DEST_PATH` had been run. +option, rsync creates all the missing destination-path components, just as +if `mkdir -p $DEST_PATH` had been run on the receiving side. When specifying a destination path, including a trailing slash ensures that -rsync always treats the whole path as the directory name to be created, -even if the source arg is a single filename. See the [COPYING TO A -DIFFERENT NAME](#) section for full details on how rsync decides if a final -destination path element is a directory element or not. +the whole path is treated as directory names to be created, even when the +file list has a single item. See the [COPYING TO A DIFFERENT NAME](#) +section for full details on how rsync decides if a final destination-path +component should be created as a directory or not. If you would like the newly-created destination dirs to match the dirs on the sending side, you should be using [`--relative`](#opt) (`-R`) instead of `--mkpath`. For instance, the following two commands result in the same -destination tree, but it is only the second command that ensures that the -"some/extra/path" elements match the dirs on the sending side: +destination tree, but only the second command ensures that the +"some/extra/path" components match the dirs on the sending side: > rsync -ai --mkpath host:some/extra/path/*.c some/extra/path/ > rsync -aiR host:some/extra/path/*.c ./ -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via ad6245f3 Include "buildall" flag in the release commit. via ca980b58 Yet another manpage tweak. via 677aa0dc Fix version verification when "\|" doesn't work in sed. from 02559675 Silence autoconf warnings. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit ad6245f3944c6f1fefab044fd4836c0a050b8871 Author: Wayne Davison Date: Sun Oct 16 12:14:37 2022 -0700 Include "buildall" flag in the release commit. commit ca980b5863a91678a0777999381f1c0cabdb115e Author: Wayne Davison Date: Sun Oct 16 12:04:22 2022 -0700 Yet another manpage tweak. commit 677aa0dc911a452399e35e2c2b5bd18b25f5b55a Author: Wayne Davison Date: Sun Oct 16 11:14:15 2022 -0700 Fix version verification when "\|" doesn't work in sed. --- Summary of changes: mkgitver| 6 -- packaging/release-rsync | 2 +- rsync.1.md | 23 +++ 3 files changed, 16 insertions(+), 15 deletions(-) Changeset truncated at 500 lines: diff --git a/mkgitver b/mkgitver index 75c9fe1e..0102b089 100755 --- a/mkgitver +++ b/mkgitver @@ -7,8 +7,10 @@ if [ ! -f git-version.h ]; then fi if test -d "$srcdir/.git" || test -f "$srcdir/.git"; then -gitver=`git describe --abbrev=8 2>/dev/null | sed -n '/^v3\.[0-9][0-9]*\.[0-9][0-9]*\(pre[0-9]*\)*\(-\|$\)/p'` -if [ -n "$gitver" ]; then +gitver=`git describe --abbrev=8 2>/dev/null` +# NOTE: I'm avoiding "|" in sed since I'm not sure if sed -r is portable and "\|" fails on some OSes. +verchk=`echo "$gitver-" | sed -n '/^v3\.[0-9][0-9]*\.[0-9][0-9]*\(pre[0-9]*\)*-/p'` +if [ -n "$verchk" ]; then echo "#define RSYNC_GITVER \"$gitver\"" >git-version.h.new if ! diff git-version.h.new git-version.h >/dev/null; then echo "Updating git-version.h" diff --git a/packaging/release-rsync b/packaging/release-rsync index 9603fd10..511e90f1 100755 --- a/packaging/release-rsync +++ b/packaging/release-rsync @@ -256,7 +256,7 @@ About to: """) ans = input(" ") -s = cmd_run(['git', 'commit', '-a', '-m', f'Preparing for release of {version}']) +s = cmd_run(['git', 'commit', '-a', '-m', f'Preparing for release of {version} [buildall]']) if s.returncode: die('Aborting') diff --git a/rsync.1.md b/rsync.1.md index 21d2e2ff..65cf8815 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -173,23 +173,22 @@ item to the last element of the destination path. Keep in mind that it is best to only use this idiom when copying a file and use the above trailing-slash idiom when copying a directory. -The following example copies file foo.c file as bar.c in the "dest" dir -(assuming that bar.c isn't a directory): +The following example copies the `foo.c` file as `bar.c` in the `save` dir +(assuming that `bar.c` isn't a directory): -> rsync -ai src/foo.c dest/bar.c +> rsync -ai src/foo.c save/bar.c -The single-item rename rule might accidentally bite you if you unknowingly copy -a single item and specify a destination dir that doesn't exist (without using a -trailing slash). For example, if `src/*.c` matches just one file and -`dest/dir` doesn't exist yet, this will confuse you by renaming the file to the -destination path: +The single-item copy rule might accidentally bite you if you unknowingly copy a +single item and specify a destination dir that doesn't exist (without using a +trailing slash). For example, if `src/*.c` matches one file and `save/dir` +doesn't exist, this will confuse you by naming the destination file `save/dir`: -> rsync -ai src/*.c dest/dir +> rsync -ai src/*.c save/dir -To prevent accidental renaming, either make sure the destination dir already -exists or specify a destination path with a trailing slash: +To prevent such an accident, either make sure the destination dir exists or +specify the destination path with a trailing slash: -> rsync -ai src/*.c dest/dir/ +> rsync -ai src/*.c save/dir/ ## SORTED TRANSFER ORDER -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
single .c file to the name "dir" in "dest". To prevent this, it is -safest to specify a destination path with a trailing slash when you want it to -be treated as a directory: +To prevent accidental renaming, either make sure the destination dir already +exists or specify a destination path with a trailing slash: > rsync -ai src/*.c dest/dir/ -If you want to copy a **non-empty** directory to a different name, specify the -source path with a trailing slash: - -> rsync -ai foo/ bar - ## SORTED TRANSFER ORDER Rsync always sorts the specified filenames into its internal transfer list. @@ -1155,9 +1158,9 @@ expand it. When specifying a destination path, including a trailing slash ensures that rsync always treats the whole path as the directory name to be created, -even if the source arg is a single filename. See the [COPYING A SINGLE -FILE](#) section for full details on how rsync decides if a final -destination path element is a directory or not. +even if the source arg is a single filename. See the [COPYING TO A +DIFFERENT NAME](#) section for full details on how rsync decides if a final +destination path element is a directory element or not. If you would like the newly-created destination dirs to match the dirs on the sending side, you should be using [`--relative`](#opt) (`-R`) instead diff --git a/rsync.h b/rsync.h index 2c5e5376..d3709fe0 100644 --- a/rsync.h +++ b/rsync.h @@ -366,16 +366,10 @@ enum delret { #include #endif -#ifdef TIME_WITH_SYS_TIME -#include -#include -#else #ifdef HAVE_SYS_TIME_H #include -#else -#include -#endif #endif +#include #ifdef HAVE_FCNTL_H #include -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
then rsync +copies the single .c file to the name "dir" in "dest". To prevent this, it is +safest to specify a destination path with a trailing slash when you want it to +be treated as a directory: + +> rsync -ai src/*.c dest/dir/ + +If you want to copy a **non-empty** directory to a different name, specify the +source path with a trailing slash: + +> rsync -ai foo/ bar ## SORTED TRANSFER ORDER @@ -1113,23 +1147,26 @@ expand it. 0. `--mkpath` -Create a missing path component of the destination arg. This allows rsync -to create multiple levels of missing destination dirs and to create a path -in which to put a single renamed file. Keep in mind that you'll need to -supply a trailing slash if you want the entire destination path to be -treated as a directory when copying a single arg (making rsync behave the -same way that it would if the path component of the destination had already -existed). - -For example, the following creates a copy of file foo as bar in the sub/dir -directory, creating dirs "sub" and "sub/dir" if either do not yet exist: - -> rsync -ai --mkpath foo sub/dir/bar - -If you instead ran the following, it would have created file foo in the -sub/dir/bar directory: - -> rsync -ai --mkpath foo sub/dir/bar/ +Create a missing path component of the destination path. By default, rsync +allows only the final element of the destination path to not exist, which +is an attempt to help you to validate your destination path. With this +option, rsync creates all the missing destination-path components just as +if `mkdir -p $DEST_PATH` had been run. + +When specifying a destination path, including a trailing slash ensures that +rsync always treats the whole path as the directory name to be created, +even if the source arg is a single filename. See the [COPYING A SINGLE +FILE](#) section for full details on how rsync decides if a final +destination path element is a directory or not. + +If you would like the newly-created destination dirs to match the dirs on +the sending side, you should be using [`--relative`](#opt) (`-R`) instead +of `--mkpath`. For instance, the following two commands result in the same +destination tree, but it is only the second command that ensures that the +"some/extra/path" elements match the dirs on the sending side: + +> rsync -ai --mkpath host:some/extra/path/*.c some/extra/path/ +> rsync -aiR host:some/extra/path/*.c ./ 0. `--links`, `-l` -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 32963514 Fix validation of "preN" git tags for git-version.h. from 0088a85a Mention smart-make in a comment. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 329635144238974129454de51161c1c0ba27a60a Author: Wayne Davison Date: Sun Oct 2 11:43:46 2022 -0700 Fix validation of "preN" git tags for git-version.h. --- Summary of changes: mkgitver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/mkgitver b/mkgitver index 50380c87..75c9fe1e 100755 --- a/mkgitver +++ b/mkgitver @@ -7,7 +7,7 @@ if [ ! -f git-version.h ]; then fi if test -d "$srcdir/.git" || test -f "$srcdir/.git"; then -gitver=`git describe --abbrev=8 2>/dev/null | sed -n '/^v3\.[0-9][0-9]*\.[0-9][0-9]*\(-\|$\)/p'` +gitver=`git describe --abbrev=8 2>/dev/null | sed -n '/^v3\.[0-9][0-9]*\.[0-9][0-9]*\(pre[0-9]*\)*\(-\|$\)/p'` if [ -n "$gitver" ]; then echo "#define RSYNC_GITVER \"$gitver\"" >git-version.h.new if ! diff git-version.h.new git-version.h >/dev/null; then -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 0088a85a Mention smart-make in a comment. via 4923c4dc Mention the `--list-only` output format. from 76c4fa8b Mention latest changes. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 0088a85aebfe30769814f71319c06986e5b59ea8 Author: Wayne Davison Date: Sun Oct 2 11:05:01 2022 -0700 Mention smart-make in a comment. commit 4923c4dc0cca396b2b54256ad2986dc2017f48b0 Author: Wayne Davison Date: Sun Oct 2 10:33:55 2022 -0700 Mention the `--list-only` output format. --- Summary of changes: Makefile.in | 2 ++ rsync.1.md | 18 +++--- 2 files changed, 13 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/Makefile.in b/Makefile.in index 3cde9557..a1253e5d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -70,6 +70,8 @@ CHECK_OBJS=tls.o testrun.o getgroups.o getfsdev.o t_stub.o t_unsafe.o trimslash. $(CC) -I. -I$(srcdir) $(CFLAGS) $(CPPFLAGS) -c $< @CC_SHOBJ_FLAG@ @OBJ_RESTORE@ +# NOTE: consider running "packaging/smart-make" instead of "make" to auto-handle +# any changes to configure.sh and the main Makefile prior to a "make all". all: Makefile rsync$(EXEEXT) stunnel-rsyncd.conf @MAKE_RRSYNC@ @MAKE_MAN@ .PHONY: all diff --git a/rsync.1.md b/rsync.1.md index 7d96eca6..b647f63f 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -3539,13 +3539,17 @@ expand it. > rsync -av --list-only foo* dest/ -Starting with rsync 3.1.0, the sizes output by `--list-only` are affected -by the [`--human-readable`](#opt) option. By default they will contain -digit separators, but higher levels of readability will output the sizes -with unit suffixes. Note also that the column width for the size output -has increased from 11 to 14 characters for all human-readable levels. Use -`--no-h` if you want just digits in the sizes, and the old column width of -11 characters. +This option always uses an output format that looks similar to this: + +> drwxrwxr-x 4,096 2022/09/30 12:53:11 support +> -rw-rw-r-- 80 2005/01/11 10:37:37 support/Makefile + +The only option that affects this output style is (as of 3.1.0) the +[`--human-readable`](#opt) (`-h`) option. The default is to output sizes +as byte counts with digit separators (in a 14-character-width column). +Specifying at least one `-h` option makes the sizes output with unit +suffixes. If you want old-style bytecount sizes without digit separators +(and an 11-character-width column) use `--no-h`. Compatibility note: when requesting a remote listing of files from an rsync that is version 2.6.3 or older, you may encounter an error if you ask for a -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated discards 77dd3047666fa68ce2acb88f4be0e5ebca83fb50 (commit) via 76c4fa8b Mention latest changes. from 77dd3047 Mention latest changes. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 76c4fa8b54d44c9a799b976495c8238937a4146f Author: Wayne Davison Date: Sun Oct 2 09:42:55 2022 -0700 Mention latest changes. --- Summary of changes: NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index a27d8081..05476bee 100644 --- a/NEWS.md +++ b/NEWS.md @@ -56,7 +56,7 @@ now interprets this value as an unsigned integer so that a current year past 2038 can continue to be represented. This does mean that years prior to 1970 cannot be represented in an older protocol, but this trade-off seems like the - rigth choice given that (1) 2038 is very rapidly approaching, and (2) newer + right choice given that (1) 2038 is very rapidly approaching, and (2) newer protocols support a much wider range of old and new dates. - The rsync client now treats an empty destination arg as an error, just like -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
.c index 82d686a6..65b459b1 100644 --- a/flist.c +++ b/flist.c @@ -836,7 +836,7 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x } #endif } else - modtime = read_int(f); + modtime = read_uint(f); } if (xflags & XMIT_MOD_NSEC) #ifndef CAN_SET_NSEC diff --git a/io.c b/io.c index f3d802ec..a99ac0ec 100644 --- a/io.c +++ b/io.c @@ -1784,6 +1784,13 @@ int32 read_int(int f) return num; } +uint32 read_uint(int f) +{ + char b[4]; + read_buf(f, b, 4); + return IVAL(b, 0); +} + int32 read_varint(int f) { union { diff --git a/main.c b/main.c index 02b70079..d2a7b9b5 100644 --- a/main.c +++ b/main.c @@ -660,6 +660,16 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in return pid; } +/* Older versions turn an empty string as a reference to the current directory. + * We now treat this as an error unless --old-args was used. */ +static char *dot_dir_or_error() +{ + if (old_style_args || am_server) + return "."; + rprintf(FERROR, "Empty destination arg specified (use \".\" or see --old-args).\n"); + exit_cleanup(RERR_SYNTAX); +} + /* The receiving side operates in one of two modes: * * 1. it receives any number of files into a destination directory, @@ -687,9 +697,8 @@ static char *get_local_name(struct file_list *flist, char *dest_path) if (!dest_path || list_only) return NULL; - /* Treat an empty string as a copy into the current directory. */ if (!*dest_path) - dest_path = "."; + dest_path = dot_dir_or_error(); if (daemon_filter_list.head) { char *slash = strrchr(dest_path, '/'); @@ -1432,6 +1441,8 @@ static int start_client(int argc, char *argv[]) if (argc > 1) { p = argv[--argc]; + if (!*p) + p = dot_dir_or_error(); remote_argv = argv + argc; } else { static char *dotarg[1] = { "." }; diff --git a/rsync.1.md b/rsync.1.md index 029e4d82..7d96eca6 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -859,7 +859,7 @@ expand it. that until a bunch of recursive copying has finished). However, these early directories don't yet have their completed mode, mtime, or ownership set -- they have more restrictive rights until the subdirectory's copying -actually begins. This early-creation idiom can be avoiding by using the +actually begins. This early-creation idiom can be avoided by using the [`--omit-dir-times`](#opt) option. Incremental recursion can be disabled using the @@ -1560,6 +1560,15 @@ expand it. will make the update fairly efficient if the files haven't actually changed, you're much better off using `-t`). +A modern rsync that is using transfer protocol 30 or 31 conveys a modify +time using up to 8-bytes. If rsync is forced to speak an older protocol +(perhaps due to the remote rsync being older than 3.0.0) a modify time is +conveyed using 4-bytes. Prior to 3.2.7, these shorter values could convey +a date range of 13-Dec-1901 to 19-Jan-2038. Beginning with 3.2.7, these +4-byte values now convey a date range of 1-Jan-1970 to 7-Feb-2106. If you +have files dated older than 1970, make sure your rsync executables are +upgraded so that the full range of dates can be conveyed. + 0. `--atimes`, `-U` This tells rsync to set the access (use) times of the destination files to @@ -2388,6 +2397,8 @@ expand it. This option tells rsync to stop trying to protect the arg values on the remote side from unintended word-splitting or other misinterpretation. +It also allows the client to treat an empty arg as a "." instead of +generating an error. The default in a modern rsync is for "shell-active" characters (including spaces) to be backslash-escaped in the args that are sent to the remote diff --git a/testsuite/exclude.test b/testsuite/exclude.test index 4b1a1a05..9b487b60 100644 --- a/testsuite/exclude.test +++ b/testsuite/exclude.test @@ -188,7 +188,7 @@ rm "$chkdir"/bar/down/to/foo/.filt2 rm "$chkdir"/bar/down/to/bar/.filt2 rm "$chkdir"/mid/.filt -$RSYNC -av --protocol=28 --existing --include='*/' --exclude='*' "$fromdir/" "$chkdir/" +$RSYNC -av --existing --include='*/' --exclude='*' "$fromdir/" "$chkdir/" # Now, try the prior command with --delete-before and some side-specific # rules. -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.7pre1 created
The annotated tag, v3.2.7pre1 has been created at ed955366474452b95b1e088581bb91efb0b29541 (tag) tagging ed4b3448be243b1bdb30a5da811f1e217f5a0601 (commit) replaces v3.2.6 tagged by Wayne Davison on Fri Sep 30 12:52:54 2022 -0700 - Log - Version 3.2.7pre1. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYzdJFhEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxb1wAKDeJg2bldIdyhdDGToafc4xtnqIhACdGKNl 24p4broaRh7fgvfF26Ciwhc= =fOCi -END PGP SIGNATURE- Kenneth Finnegan (1): Use string length diff heuristic to skip Levenshtein Algo (#369) Wayne Davison (37): Start 3.2.7dev going. When deleting a tag, del in the patches dir too. Try freebsd-13-1 to fix weird wget issue. Improve various things in the checksum code Add support for various SHA checksum digests Use JSON output if --version (-V) is repeated (client side only). Use dict for capabilities & optimizations in json output. Unify older protect-args capability to secluded-args name. A few more tweaks. Also change dashes in the dict var names to make jq use easier. Improve output of "N-bit" items in json data. Talk about the new daemon greeting line. Require a newer protocol to specify the digest list. Mention the filename when unpack_smb_acl() returns an error. Fix bug with validing remote filter rules. Update NEWS. NEWS tweak. Improve var ref. Fix really silly bug with --relative rules. Add hashlittle2() and ensure the hash is never 0 Use hashlittle2() for xattr hashing Use UNSUPPORTED instead of PROTOCOL for various validation checks. Tweak a define. Fix exclusion of /. with --relative. More NEWS updates. Make the implied-arg adding for --relative more efficient. We always add a slash now that path is cleaned. Pre-compute FILE_SUM_EXTRA_CNT. Stop importing "re". Some "use chroot" improvements. Fix a link. Avoid test -e. Fix compile w/o openssl; disable sha256 & sha512 for --checksum. More NEWS updates. Explicitly ignore snprintf() return value. A few more doc tweaks & comment tweaks. Preparing for release of 3.2.7pre1 --- -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
oot`](#) parameter, which causes +rsync to chroot into its own chroot area before doing any path-related +chrooting. If the daemon is serving the "/" dir (either directly or due to being -chrooted to the module's path), rsync does not do any extra path sanitizing -or (default) munging. When it has to limit access to a particular subdir -(either due to chroot being disabled or having an inside-chroot path set), -rsync will munge symlinks (by default) and sanitize paths. Those that -dislike munged symlinks (and really, really trust their users to not break -out of the subdir) can disable the symlink munging via the "[munge -symlinks](#)" parameter. Sanitizing paths trims ".." path elements from -args that rsync believes would escape the module hierarchy, and also -substitutes leading slashes in absolute paths with the module's path (so -that options such as `--backup-dir` & `--compare-dest` interpret an -absolute path as rooted in the module's "[path](#)" dir). +chrooted to the module's path), rsync does not do any path sanitizing or +(default) munging. + +When it has to limit access to a particular subdir (either due to chroot +being disabled or having an inside-chroot path set), rsync will munge +symlinks (by default) and sanitize paths. Those that dislike munged +symlinks (and really, really trust their users to not break out of the +subdir) can disable the symlink munging via the "[munge symlinks](#)" +parameter. + +When rsync is sanitizing paths, it trims ".." path elements from args that +it believes would escape the module hierarchy. It also substitutes leading +slashes in absolute paths with the module's path (so that options such as +`--backup-dir` & `--compare-dest` interpret an absolute path as rooted in +the module's "[path](#)" dir). When a chroot is in effect *and* the "[name converter](#)" parameter is *not* set, the "[numeric ids](#)" parameter will default to being enabled diff --git a/usage.c b/usage.c index 7f215a02..2db64767 100644 --- a/usage.c +++ b/usage.c @@ -265,7 +265,7 @@ void print_rsync_version(enum logcode f) char verbuf[32]; json_line("program", RSYNC_NAME); json_line("version", rsync_version()); - snprintf(verbuf, sizeof verbuf, "%d.%d", PROTOCOL_VERSION, SUBPROTOCOL_VERSION); + (void)snprintf(verbuf, sizeof verbuf, "%d.%d", PROTOCOL_VERSION, SUBPROTOCOL_VERSION); json_line("protocol", verbuf); json_line("copyright", copyright); json_line("url", url); diff --git a/version.h b/version.h index c0388268..64ca62db 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.7dev" +#define RSYNC_VERSION "3.2.7pre1" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
ame(const char *name, int len) return nni; } +#ifdef USE_OPENSSL static const EVP_MD *csum_evp_md(struct name_num_item *nni) { -#ifdef USE_OPENSSL const EVP_MD *emd; if (!(nni->flags & NNI_EVP)) return NULL; @@ -173,10 +168,8 @@ static const EVP_MD *csum_evp_md(struct name_num_item *nni) if (!emd) nni->flags &= ~NNI_EVP; return emd; -#else - return NULL; -#endif } +#endif void parse_checksum_choice(int final_call) { @@ -194,8 +187,10 @@ void parse_checksum_choice(int final_call) } xfer_sum_len = csum_len_for_type(xfer_sum_nni->num, 0); file_sum_len = csum_len_for_type(file_sum_nni->num, 0); +#ifdef USE_OPENSSL xfer_sum_evp_md = csum_evp_md(xfer_sum_nni); file_sum_evp_md = csum_evp_md(file_sum_nni); +#endif file_sum_extra_cnt = (file_sum_len + EXTRA_LEN - 1) / EXTRA_LEN; @@ -551,9 +546,12 @@ static XXH64_state_t* xxh64_state; static XXH3_state_t* xxh3_state; #endif static struct name_num_item *cur_sum_nni; -static const EVP_MD *cur_sum_evp_md; int cur_sum_len; +#ifdef USE_OPENSSL +static const EVP_MD *cur_sum_evp_md; +#endif + int sum_init(struct name_num_item *nni, int seed) { char s[4]; @@ -562,7 +560,9 @@ int sum_init(struct name_num_item *nni, int seed) nni = parse_csum_name(NULL, 0); cur_sum_nni = nni; cur_sum_len = csum_len_for_type(nni->num, 0); +#ifdef USE_OPENSSL cur_sum_evp_md = csum_evp_md(nni); +#endif #ifdef USE_OPENSSL if (cur_sum_evp_md) { @@ -784,7 +784,9 @@ static void verify_digest(struct name_num_item *nni, BOOL check_auth_list) void init_checksum_choices() { +#if defined SUPPORT_XXH3 || defined USE_OPENSSL struct name_num_item *nni; +#endif if (initialized_choices) return; diff --git a/mkgitver b/mkgitver index fe8a3d15..50380c87 100755 --- a/mkgitver +++ b/mkgitver @@ -6,7 +6,7 @@ if [ ! -f git-version.h ]; then touch git-version.h fi -if [ -e "$srcdir/.git" ]; then +if test -d "$srcdir/.git" || test -f "$srcdir/.git"; then gitver=`git describe --abbrev=8 2>/dev/null | sed -n '/^v3\.[0-9][0-9]*\.[0-9][0-9]*\(-\|$\)/p'` if [ -n "$gitver" ]; then echo "#define RSYNC_GITVER \"$gitver\"" >git-version.h.new -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
omitted the dot-dir, the -chroot would have used the whole path, and the inside-chroot path would -have been "/". - -When both "use chroot" and "[daemon chroot](#)" are false, OR the inside-chroot -path of "use chroot" is not "/", 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 `--backup-dir`, -`--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 module hierarchy. The default for "use chroot" is -true, and is the safer choice (especially if the module is not read-only). - -When this parameter is enabled *and* the "[name converter](#)" parameter is +If `use chroot` is not set, it defaults to trying to enable a chroot but +allows the daemon to continue (after logging a warning) if it fails. The +one exception to this is when a module's [`path`](#) has a "/./" chroot +divider in it -- this causes an unset value to be treated as true for that +module. + +Prior to rsync 3.2.7, the default value was "true". The new default makes +it easier to setup an rsync daemon as a non-root user or to run a daemon on +a system where chroot fails. Explicitly setting the value to true in the +rsyncd.conf file will always require the chroot to succeed. + +It is also possible to specify a dot-dir in the module's "[path](#)" to +indicate that you want to chdir to the earlier part of the path and then +serve files from inside the latter part of the path (with default +sanitizing and symlink munging). This can be useful if you need some +library dirs inside the chroot (typically for uid & gid lookups) but don't +want to put the lib dir into the top of the served path (even though they +can be hidden with an [`exclude`](#) directive). However, a better choice +for a modern rsync setup is to use a [`name converter`](#)" and try to +avoid inner lib dirs altogether. See also the [`daemon chroot`](#) +parameter, which causes rsync to chroot into its own chroot area before +doing any path-related chrooting. + +If the daemon is serving the "/" dir (either directly or due to being +chrooted to the module's path), rsync does not do any extra path sanitizing +or (default) munging. When it has to limit access to a particular subdir +(either due to chroot being disabled or having an inside-chroot path set), +rsync will munge symlinks (by default) and sanitize paths. Those that +dislike munged symlinks (and really, really trust their users to not break +out of the subdir) can disable the symlink munging via the "[munge +symlinks](#)" parameter. Sanitizing paths trims ".." path elements from +args that rsync believes would escape the module hierarchy, and also +substitutes leading slashes in absolute paths with the module's path (so +that options such as `--backup-dir` & `--compare-dest` interpret an +absolute path as rooted in the module's "[path](#)" dir). + +When a chroot is in effect *and* the "[name converter](#)" parameter is *not* set, the "[numeric ids](#)" parameter will default to being enabled (disabling name lookups). This means that if you manually setup name-lookup libraries in your chroot (instead of using a name converter) diff --git a/support/json-rsync-version b/support/json-rsync-version index a51c3a88..bf5684b7 100755 --- a/support/json-rsync-version +++ b/support/json-rsync-version @@ -1,6 +1,6 @@ #!/usr/bin/python3 -import sys, re, argparse, subprocess, json +import sys, argparse, subprocess, json def main(): if not args.rsync or args.rsync == '-': -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
a_cnt; #ifdef USE_FLEXIBLE_ARRAY #define FILE_STRUCT_LEN (sizeof (struct file_struct)) @@ -837,7 +837,7 @@ extern int file_sum_len; #define DEV_EXTRA_CNT 2 #define DIRNODE_EXTRA_CNT 3 #define EXTRA64_CNT ((sizeof (union file_extras64) + EXTRA_LEN - 1) / EXTRA_LEN) -#define SUM_EXTRA_CNT ((file_sum_len + EXTRA_LEN - 1) / EXTRA_LEN) +#define SUM_EXTRA_CNT file_sum_extra_cnt #define REQ_EXTRA(f,ndx) ((union file_extras*)(f) - (ndx)) #define OPT_EXTRA(f,bump) ((union file_extras*)(f) - file_extra_cnt - 1 - (bump)) diff --git a/util1.c b/util1.c index 671f3c75..da50ff1e 100644 --- a/util1.c +++ b/util1.c @@ -1487,12 +1487,19 @@ const char *find_filename_suffix(const char *fn, int fn_len, int *len_ptr) #define UNIT (1 << 16) -uint32 fuzzy_distance(const char *s1, unsigned len1, const char *s2, unsigned len2) +uint32 fuzzy_distance(const char *s1, unsigned len1, const char *s2, unsigned len2, uint32 upperlimit) { uint32 a[MAXPATHLEN], diag, above, left, diag_inc, above_inc, left_inc; int32 cost; unsigned i1, i2; + /* Check to see if the Levenshtein distance must be greater than the +* upper limit defined by the previously found lowest distance using +* the heuristic that the Levenshtein distance is greater than the +* difference in length of the two strings */ + if ((len1 > len2 ? len1 - len2 : len2 - len1) * UNIT > upperlimit) + return 0xU * UNIT + 1; + if (!len1 || !len2) { if (!len1) { s1 = s2; -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
= new0(filter_rule); - R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY; - /* Check if our sub-path has wildcards or escaped backslashes */ - if (saw_wild && strpbrk(new_pat, "*[?\\")) - R_rule->rflags |= FILTRULE_WILD; - R_rule->pattern = strdup(new_pat); - R_rule->u.slash_cnt = slash_cnt; - R_rule->next = implied_filter_list.head; - implied_filter_list.head = R_rule; - if (DEBUG_GTE(FILTER, 3)) { - rprintf(FINFO, "[%s] add_implied_include(%s/)\n", - who_am_i(), R_rule->pattern); - } - if (saw_live_open_brkt) - maybe_add_literal_brackets_rule(R_rule, -1); + if (found) { + *p = '/'; + break; /* We added all parent dirs already */ + } + R_rule = new0(filter_rule); + R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY; + /* Check if our sub-path has wildcards or escaped backslashes */ + if (saw_wild && strpbrk(new_pat, "*[?\\")) + R_rule->rflags |= FILTRULE_WILD; + R_rule->pattern = strdup(new_pat); + R_rule->u.slash_cnt = --sub_slash_cnt; + R_rule->next = implied_filter_list.head; + implied_filter_list.head = R_rule; + if (DEBUG_GTE(FILTER, 3)) { + rprintf(FINFO, "[%s] add_implied_include(%s/)\n", + who_am_i(), R_rule->pattern); } + if (saw_live_open_brkt) + maybe_add_literal_brackets_rule(R_rule, -1); + } + for (p = new_pat; sub_slash_cnt < slash_cnt; sub_slash_cnt++) { + p += strlen(p); *p = '/'; - slash_cnt++; } } } -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
const rsync_xa *rxas = xalp->items; size_t i; - int64 key = hashlittle(>count, sizeof xalp->count); + int64 key = hashlittle2(>count, sizeof xalp->count); for (i = 0; i < xalp->count; i++) { - key += hashlittle(rxas[i].name, rxas[i].name_len); + key += hashlittle2(rxas[i].name, rxas[i].name_len); if (rxas[i].datum_len > MAX_FULL_DATUM) - key += hashlittle(rxas[i].datum, xattr_sum_len); + key += hashlittle2(rxas[i].datum, xattr_sum_len); else - key += hashlittle(rxas[i].datum, rxas[i].datum_len); - } - - if (key == 0) { - /* This is very unlikely, but we should never -* return 0 as hashtable_find() doesn't like it. */ - return 1; + key += hashlittle2(rxas[i].datum, rxas[i].datum_len); } return key; @@ -475,8 +469,6 @@ static int rsync_xal_store(item_list *xalp) if (rsync_xal_h == NULL) rsync_xal_h = hashtable_create(512, HT_KEY64); - if (rsync_xal_h == NULL) - out_of_memory("rsync_xal_h hashtable_create()"); new_ref = new0(rsync_xa_list_ref); new_ref->ndx = ndx; -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
); int is_no = space && strncmp(str, "no ", 3) == 0; - char *quot = space && !is_no ? "\"" : ""; + int is_bits = space && isDigit(str); + char *quot = space && !is_no && !is_bits ? "\"" : ""; char *item = space ? space + 1 : str; char *val = !space ? "true" : is_no ? "false" : str; int val_len = !space ? 4 : is_no ? 5 : space - str; + if (is_bits && (space = strchr(val, '-')) != NULL) + val_len = space - str; item_len = snprintf(item_buf, sizeof item_buf, - " \"%s\": %s%.*s%s%s", item, quot, val_len, val, quot, - need_comma ? "," : ""); + " \"%s%s\": %s%.*s%s%s", item, is_bits ? "bits" : "", + quot, val_len, val, quot, need_comma ? "," : ""); + if (is_bits) + item_buf[strlen(item)+2-1] = '_'; /* Turn the 's' into a '_' */ for (space = item; (space = strpbrk(space, " -")) != NULL; space++) item_buf[space - item + 2] = '_'; } else -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
gs[] = { @@ -165,9 +165,25 @@ static void print_info_flags(enum logcode f) for (line_len = 0, j = 0; ; j++) { char *str = info_flags[j], *next_nfo = str ? info_flags[j+1] : NULL; - int str_len = str && *str != '*' ? strlen(str) + (as_json ? 2 : 0) : 1000; int need_comma = next_nfo && *next_nfo != '*' ? 1 : 0; - if (line_len && line_len + 1 + str_len + need_comma >= (int)sizeof line_buf) { + int item_len; + if (!str || *str == '*') + item_len = 1000; + else if (as_json) { + char *space = strchr(str, ' '); + int is_no = space && strncmp(str, "no ", 3) == 0; + char *quot = space && !is_no ? "\"" : ""; + char *item = space ? space + 1 : str; + char *val = !space ? "true" : is_no ? "false" : str; + int val_len = !space ? 4 : is_no ? 5 : space - str; + item_len = snprintf(item_buf, sizeof item_buf, + " \"%s\": %s%.*s%s%s", item, quot, val_len, val, quot, + need_comma ? "," : ""); + for (space = item; (space = strpbrk(space, " -")) != NULL; space++) + item_buf[space - item + 2] = '_'; + } else + item_len = snprintf(item_buf, sizeof item_buf, " %s%s", str, need_comma ? "," : ""); + if (line_len && line_len + item_len >= (int)sizeof line_buf) { if (as_json) printf(" %s\n", line_buf); else @@ -179,19 +195,19 @@ static void print_info_flags(enum logcode f) if (*str == '*') { if (as_json) { if (as_json == 2) - printf(" ]"); + printf(" }"); else as_json = 2; - printf(",\n \"%c%s\": [\n", toLower(str+1), str+2); + printf(",\n \"%c%s\": {\n", toLower(str+1), str+2); } else rprintf(f, "%s:\n", str+1); - continue; + } else { + strlcpy(line_buf + line_len, item_buf, sizeof line_buf - line_len); + line_len += item_len; } - line_len += snprintf(line_buf+line_len, sizeof line_buf - line_len, -" %s%s%s%s", quot, str, quot, need_comma ? "," : ""); } if (as_json == 2) - printf(" ]"); + printf(" }"); } static void output_nno_list(enum logcode f, const char *name, struct name_num_obj *nno) -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
SIVALu(seedbuf, 0, checksum_seed); - MD4_Update(, seedbuf, 4); - } - MD4_Final((uchar *)sum, ); - break; - } -#endif case CSUM_MD4_OLD: case CSUM_MD4_BUSTED: case CSUM_MD4_ARCHAIC: { @@ -295,7 +390,7 @@ void get_checksum2(char *buf, int32 len, char *sum) * are multiples of 64. This is fixed by calling mdfour_update() * even when there are no more bytes. */ - if (len - i > 0 || xfersum_type > CSUM_MD4_BUSTED) + if (len - i > 0 || xfer_sum_nni->num > CSUM_MD4_BUSTED) mdfour_update(, (uchar *)(buf1+i), len-i); mdfour_result(, (uchar *)sum); @@ -313,15 +408,33 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum) int32 remainder; int fd; - memset(sum, 0, MAX_DIGEST_LEN); - fd = do_open(fname, O_RDONLY, 0); - if (fd == -1) + if (fd == -1) { + memset(sum, 0, file_sum_len); return; + } buf = map_file(fd, len, MAX_MAP_SIZE, CHUNK_SIZE); - switch (checksum_type) { +#ifdef USE_OPENSSL + if (file_sum_evp_md) { + static EVP_MD_CTX *evp = NULL; + if (!evp && !(evp = EVP_MD_CTX_create())) + out_of_memory("file_checksum"); + + EVP_DigestInit_ex(evp, file_sum_evp_md, NULL); + + for (i = 0; i + CHUNK_SIZE <= len; i += CHUNK_SIZE) + EVP_DigestUpdate(evp, (uchar *)map_ptr(buf, i, CHUNK_SIZE), CHUNK_SIZE); + + remainder = (int32)(len - i); + if (remainder > 0) + EVP_DigestUpdate(evp, (uchar *)map_ptr(buf, i, remainder), remainder); + + EVP_DigestFinal_ex(evp, (uchar *)sum, NULL); + } else +#endif + switch (file_sum_nni->num) { #ifdef SUPPORT_XXHASH case CSUM_XXH64: { static XXH64_state_t* state = NULL; @@ -381,7 +494,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum) } #endif case CSUM_MD5: { - md5_context m5; + md_context m5; md5_begin(); @@ -396,23 +509,6 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum) break; } case CSUM_MD4: -#ifdef USE_OPENSSL - { - MD4_CTX m4; - - MD4_Init(); - - for (i = 0; i + CHUNK_SIZE <= len; i += CHUNK_SIZE) - MD4_Update(, (uchar *)map_ptr(buf, i, CHUNK_SIZE), CHUNK_SIZE); - - remainder = (int32)(len - i); - if (remainder > 0) - MD4_Update(, (uchar *)map_ptr(buf, i, remainder), remainder); -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.6 created
The annotated tag, v3.2.6 has been created at 40695f1e31d29e5d715d986a53cdad1fe0ce0210 (tag) tagging db5bfe67a5d022f9ad25340db6bc2cca2cbbdb65 (commit) replaces v3.2.5 tagged by Wayne Davison on Fri Sep 9 12:23:44 2022 -0700 - Log - Version 3.2.6. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYxuSwBEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxXmBAKDSjMLErDVmmtQ0AfAkfSp8DiffGwCgzZan 4jwZD0b4TDe0hyba/X9OW4A= =7G// -END PGP SIGNATURE- Samuel Henrique (1): Fix typos on manpage (#358) Wayne Davison (27): We must use the CSUM_CHUNK size in the non-openssl MD4 code. Allow ~/remote/./path with -R if the path has /./ in it. Do more path cleaning in add_implied_include(); make u.slash_cnt more accurate. Start 3.2.6dev going. Only run git describe if .git exists in the $srcdir. Remove useless comment. Another mkgitver tweak & mention it in NEWS. Fix issue when the files-from list isn't nl terminated. Change name_num_obj struct to use a name_num_item pointer. Stop enabling -pedantic-errors. Remove unneeded var. Mention `copy-devices`. Make sure that the configure.sh script is up-to-date in a release. Mention the latest changes. Add safety check for local --remove-source-files. More NEWS tweaks. Rename `--protect-args` to `--secluded-args`. Fix split limits. Fix a link. Another spelling fix. Fix an unreleased bug handling a leading dot. Mention that copying to a case-ignoring filesystem can be problematical. Tweak a couple links. Improve the daemon info a bit. A few more minor tweaks. Mention a potential bash security issue with openssh forced commands. Preparing for release of 3.2.6 --- -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via db5bfe67 Preparing for release of 3.2.6 from 5447d038 Mention a potential bash security issue with openssh forced commands. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit db5bfe67a5d022f9ad25340db6bc2cca2cbbdb65 Author: Wayne Davison Date: Fri Sep 9 12:23:37 2022 -0700 Preparing for release of 3.2.6 --- Summary of changes: NEWS.md | 4 ++-- hlink.c | 2 +- packaging/lsb/rsync.spec | 6 +++--- version.h| 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index b9346ec1..02cc2fc7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# NEWS for rsync 3.2.6 (UNRELEASED) +# NEWS for rsync 3.2.6 (9 Sep 2022) ## Changes in this version: @@ -4592,7 +4592,7 @@ | RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL| |--||--|-| -| ?? Dec 2022 | 3.2.6 | | 31 | +| 09 Sep 2022 | 3.2.6 | | 31 | | 14 Aug 2022 | 3.2.5 | | 31 | | 15 Apr 2022 | 3.2.4 | | 31 | | 06 Aug 2020 | 3.2.3 | | 31 | diff --git a/hlink.c b/hlink.c index 7602ec38..20291f26 100644 --- a/hlink.c +++ b/hlink.c @@ -4,7 +4,7 @@ * Copyright (C) 1996 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras * Copyright (C) 2002 Martin Pool - * Copyright (C) 2004-2020 Wayne Davison + * Copyright (C) 2004-2022 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/packaging/lsb/rsync.spec b/packaging/lsb/rsync.spec index 0959c744..8221547f 100644 --- a/packaging/lsb/rsync.spec +++ b/packaging/lsb/rsync.spec @@ -1,6 +1,6 @@ Summary: A fast, versatile, remote (and local) file-copying tool Name: rsync -Version: 3.2.5 +Version: 3.2.6 %define fullversion %{version} Release: 1 %define srcdir src @@ -79,8 +79,8 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/rsync-ssl/certs %changelog -* Sun Aug 14 2022 Wayne Davison -Released 3.2.5. +* Fri Sep 09 2022 Wayne Davison +Released 3.2.6. * Fri Mar 21 2008 Wayne Davison Added installation of /etc/xinetd.d/rsync file and some commented-out diff --git a/version.h b/version.h index fac4fa4b..04e2db7a 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.6dev" +#define RSYNC_VERSION "3.2.6" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 5447d038 Mention a potential bash security issue with openssh forced commands. from 71177363 A few more minor tweaks. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 5447d038c66dbe8de0cd5db1bc1e60d111bc9880 Author: Wayne Davison Date: Fri Sep 9 10:47:09 2022 -0700 Mention a potential bash security issue with openssh forced commands. --- Summary of changes: support/rrsync.1.md | 24 1 file changed, 24 insertions(+) Changeset truncated at 500 lines: diff --git a/support/rrsync.1.md b/support/rrsync.1.md index a7365323..98f2cab0 100644 --- a/support/rrsync.1.md +++ b/support/rrsync.1.md @@ -22,6 +22,10 @@ transfer in one of two easy ways: * forcing the running of the rrsync script * forcing the running of an rsync daemon-over-ssh command. +Both of these setups use a feature of ssh that allows a command to be forced to +run instead of an interactive shell. However, if the user's home shell is bash, +please see [BASH SECURITY ISSUE](#) for a potential issue. + To use the rrsync script, edit the user's `~/.ssh/authorized_keys` file and add a prefix like one of the following (followed by a space) in front of each ssh-key line that should be restricted: @@ -107,6 +111,26 @@ overrides. The script (or a copy of it) can be manually edited if you want it to customize the option handling. +## BASH SECURITY ISSUE + +If your users have bash set as their home shell, bash may try to be overly +helpful and ensure that the user's login bashrc files are run prior to +executing the forced command. This can be a problem if the user can somehow +update their home bashrc files, perhaps via the restricted copy, a shared home +directory, or something similar. + +One simple way to avoid the issue is to switch the user to a simpler shell, +such as dash. When choosing the new home shell, make sure that you're not +choosing bash in disguise, as it is unclear if it avoids the security issue. + +Another potential fix is to ensure that the user's home directory is not a +shared mount and that they have no means of copying files outside of their +restricted directories. This may require you to force the enabling of symlink +munging on the server side. + +A future version of openssh may have a change to the handling of forced +commands that allows it to avoid using the user's home shell. + ## EXAMPLES The `~/.ssh/authorized_keys` file might have lines in it like this: -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 71177363 A few more minor tweaks. from bf3e49b4 Improve the daemon info a bit. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 711773631b406f0285859713ac2b33a6729909a3 Author: Wayne Davison Date: Thu Sep 1 22:07:54 2022 -0700 A few more minor tweaks. --- Summary of changes: rsync.1.md | 8 1 file changed, 4 insertions(+), 4 deletions(-) Changeset truncated at 500 lines: diff --git a/rsync.1.md b/rsync.1.md index 4f235f5b..c62e82ea 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -224,7 +224,7 @@ the hostname omitted. For instance, all these work: > rsync -aiv host::modname/first ::extra-file{1,2} /dest/ Note that a daemon connection only supports accessing one module per copy -command, so if the first argument in a follow-up path doesn't begin with the +command, so if the start of a follow-up path doesn't begin with the modname of the first path, it is assumed to be a path in the module (such as the extra-file1 & extra-file2 that are grabbed above). @@ -260,9 +260,9 @@ that: - Use either double-colon syntax or rsync:// URL syntax instead of the single-colon (remote shell) syntax. -- The first word of (at least) the first "path" is actually a module name. -- Additional remote source args use an abbreviated syntax as discussed in - [ADVANCED USAGE](#). +- The first element of the "path" is actually a module name. +- Additional remote source args can use an abbreviated syntax that omits the + hostname and/or the module name, as discussed in [ADVANCED USAGE](#). - The remote daemon may print a "message of the day" when you connect. - If you specify only the host (with no module or path) then a list of accessible modules on the daemon is output. -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via bf3e49b4 Improve the daemon info a bit. from 034d5e87 Tweak a couple links. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit bf3e49b4530c7a57f16bcf9a57cb41cc35f49852 Author: Wayne Davison Date: Thu Sep 1 21:56:00 2022 -0700 Improve the daemon info a bit. --- Summary of changes: rsync.1.md | 31 +++ 1 file changed, 19 insertions(+), 12 deletions(-) Changeset truncated at 500 lines: diff --git a/rsync.1.md b/rsync.1.md index 4d0b8eca..4f235f5b 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -221,7 +221,12 @@ the hostname omitted. For instance, all these work: > rsync -aiv host:file1 :file2 host:file{3,4} /dest/ > rsync -aiv host::modname/file{1,2} host::modname/extra /dest/ -> rsync -aiv host::modname/first ::modname/extra{1,2} /dest/ +> rsync -aiv host::modname/first ::extra-file{1,2} /dest/ + +Note that a daemon connection only supports accessing one module per copy +command, so if the first argument in a follow-up path doesn't begin with the +modname of the first path, it is assumed to be a path in the module (such as +the extra-file1 & extra-file2 that are grabbed above). Really old versions of rsync (2.6.9 and before) only allowed specifying one remote-source arg, so some people have instead relied on the remote-shell @@ -253,17 +258,19 @@ section below for information on that.) Using rsync in this way is the same as using it with a remote shell except that: -- you either use a double colon :: instead of a single colon to separate the - hostname from the path, or you use an rsync:// URL. -- the first word of the "path" is actually a module name. -- the remote daemon may print a message of the day when you connect. -- if you specify no path name on the remote daemon then the list of accessible - paths on the daemon will be shown. -- if you specify no local destination then a listing of the specified files on - the remote daemon is provided. -- you must not specify the [`--rsh`](#opt) (`-e`) option (since that overrides - the daemon connection to use ssh -- see [USING RSYNC-DAEMON FEATURES VIA A - REMOTE-SHELL CONNECTION](#) below). +- Use either double-colon syntax or rsync:// URL syntax instead of the + single-colon (remote shell) syntax. +- The first word of (at least) the first "path" is actually a module name. +- Additional remote source args use an abbreviated syntax as discussed in + [ADVANCED USAGE](#). +- The remote daemon may print a "message of the day" when you connect. +- If you specify only the host (with no module or path) then a list of + accessible modules on the daemon is output. +- If you specify a remote source path but no destination, a listing of the + matching files on the remote daemon is output. +- The [`--rsh`](#opt) (`-e`) option must be omitted to avoid changing the + connection style from using a socket connection to [USING RSYNC-DAEMON + FEATURES VIA A REMOTE-SHELL CONNECTION](#). An example that copies all the files in a remote module named "src": -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 034d5e87 Tweak a couple links. from ad891743 Mention that copying to a case-ignoring filesystem can be problematical. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 034d5e877040358f5d341771a6cca5f5dc086300 Author: Wayne Davison Date: Tue Aug 23 21:05:54 2022 -0700 Tweak a couple links. --- Summary of changes: rsync.1.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/rsync.1.md b/rsync.1.md index dfdd7df3..4d0b8eca 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -198,13 +198,13 @@ See the [`--trust-sender`](#opt) option for additional details. CAUTION: it is not particularly safe to use rsync to copy files from a case-preserving filesystem to a case-ignoring filesystem. If you must perform such a copy, you should either disable symlinks via `--no-links` or enable the -munging of symlinks via [`--munge-links`](#opt)) (and make sure you use the +munging of symlinks via [`--munge-links`](#opt) (and make sure you use the right local or remote option). This will prevent rsync from doing potentially dangerous things if a symlink name overlaps with a file or directory. It does not, however, ensure that you get a full copy of all the files (since that may not be possible when the names overlap). A potentially better solution is to list all the source files and create a safe list of filenames that you pass to -the [`--files-from`)(#opt) option. Any files that conflict in name would need +the [`--files-from`](#opt) option. Any files that conflict in name would need to be copied to different destination directories using more than one copy. While a copy of a case-ignoring filesystem to a case-ignoring filesystem can -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via ad891743 Mention that copying to a case-ignoring filesystem can be problematical. from 1b664d30 Fix an unreleased bug handling a leading dot. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit ad8917437ac443a3f2e35294594a8b417618d4ca Author: Wayne Davison Date: Tue Aug 23 20:59:13 2022 -0700 Mention that copying to a case-ignoring filesystem can be problematical. --- Summary of changes: rsync.1.md | 18 ++ 1 file changed, 18 insertions(+) Changeset truncated at 500 lines: diff --git a/rsync.1.md b/rsync.1.md index 2fbc6e11..dfdd7df3 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -195,6 +195,24 @@ Dedicate a "host1-files" dir to the remote content: See the [`--trust-sender`](#opt) option for additional details. +CAUTION: it is not particularly safe to use rsync to copy files from a +case-preserving filesystem to a case-ignoring filesystem. If you must perform +such a copy, you should either disable symlinks via `--no-links` or enable the +munging of symlinks via [`--munge-links`](#opt)) (and make sure you use the +right local or remote option). This will prevent rsync from doing potentially +dangerous things if a symlink name overlaps with a file or directory. It does +not, however, ensure that you get a full copy of all the files (since that may +not be possible when the names overlap). A potentially better solution is to +list all the source files and create a safe list of filenames that you pass to +the [`--files-from`)(#opt) option. Any files that conflict in name would need +to be copied to different destination directories using more than one copy. + +While a copy of a case-ignoring filesystem to a case-ignoring filesystem can +work out fairly well, if no `--delete-during` or `--delete-before` option is +active, rsync can potentially update an existing file on the receiveing side +without noticing that the upper-/lower-case of the filename should be changed +to match the sender. + ## ADVANCED USAGE The syntax for requesting multiple files from a remote host is done by -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 1b664d30 Fix an unreleased bug handling a leading dot. from ea38f34d Another spelling fix. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 1b664d30e4966a1be4a19fd816847dc664ef3436 Author: Wayne Davison Date: Tue Aug 23 19:38:41 2022 -0700 Fix an unreleased bug handling a leading dot. --- Summary of changes: exclude.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/exclude.c b/exclude.c index 777874aa..5458455b 100644 --- a/exclude.c +++ b/exclude.c @@ -454,8 +454,8 @@ void add_implied_include(const char *arg, int skip_daemon_module) cp++; slash_cnt--; p--; - break; - } + } else + *p++ = *cp++; } else *p++ = *cp++; break; @@ -484,7 +484,7 @@ void add_implied_include(const char *arg, int skip_daemon_module) implied_filter_list.head = rule; } if (DEBUG_GTE(FILTER, 3)) - rprintf(FINFO, "[%s] add_IMPlied_include(%s)\n", who_am_i(), arg); + rprintf(FINFO, "[%s] add_implied_include(%s)\n", who_am_i(), arg); if (saw_live_open_brkt) maybe_add_literal_brackets_rule(rule, arg_len); if (relative_paths && slash_cnt) { -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
needs to have those options enabled for the mapping options to work). -An older rsync client may need to use [`--protect-args`](#opt) (`-s`) to -avoid a complaint about wildcard characters, but a modern rsync handles -this automatically. +An older rsync client may need to use [`-s`](#opt) to avoid a complaint +about wildcard characters, but a modern rsync handles this automatically. 0. `--chown=USER:GROUP` @@ -2939,9 +2946,8 @@ expand it. "`--usermap=*:foo --groupmap=*:bar`", only easier (and with the same implied [`--owner`](#opt) and/or [`--group`](#opt) options). -An older rsync client may need to use [`--protect-args`](#opt) (`-s`) to -avoid a complaint about wildcard characters, but a modern rsync handles -this automatically. +An older rsync client may need to use [`-s`](#opt) to avoid a complaint +about wildcard characters, but a modern rsync handles this automatically. 0. `--timeout=SECONDS` @@ -3645,7 +3651,7 @@ expand it. For a list of what charset names your local iconv library supports, you can run "`iconv --list`". -If you specify the [`--protect-args`](#opt) (`-s`) option, rsync will +If you specify the [`--secluded-args`](#opt) (`-s`) option, rsync will translate the filenames you specify on the command-line that are being sent to the remote host. See also the [`--files-from`](#opt) option. @@ -4593,17 +4599,17 @@ file is included or excluded. supersedes the [`RSYNC_PROTECT_ARGS`](#) variable. This variable is ignored if [`--old-args`](#opt), `--no-old-args`, or -[`--protect-args`](#opt) is specified on the command line. +[`--secluded-args`](#opt) is specified on the command line. First supported in 3.2.4. 0. `RSYNC_PROTECT_ARGS` -Specify a non-zero numeric value if you want the [`--protect-args`](#opt) +Specify a non-zero numeric value if you want the [`--secluded-args`](#opt) option to be enabled by default, or a zero value to make sure that it is disabled by default. -This variable is ignored if [`--protect-args`](#opt), `--no-protect-args`, +This variable is ignored if [`--secluded-args`](#opt), `--no-secluded-args`, or [`--old-args`](#opt) is specified on the command line. First supported in 3.1.0. Starting in 3.2.4, this variable is ignored if diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md index 8bcbec0a..400ad107 100644 --- a/rsyncd.conf.5.md +++ b/rsyncd.conf.5.md @@ -894,7 +894,7 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details. > refuse options = * !a !v !compress* Don't worry that the "`*`" will refuse certain vital options such as -`--dry-run`, `--server`, `--no-iconv`, `--protect-args`, etc. These +`--dry-run`, `--server`, `--no-iconv`, `--seclude-args`, etc. These important options are not matched by wild-card, so they must be overridden by their exact name. For instance, if you're forcing iconv transfers you could use something like this: @@ -948,7 +948,7 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details. `--log-file-format`. - `--sender`: Use "[write only](#)" parameter instead of refusing this. - `--dry-run`, `-n`: Who would want to disable this? -- `--protect-args`, `-s`: This actually makes transfers safer. +- `--seclude-args`, `-s`: Is the oldest arg-protection method. - `--from0`, `-0`: Makes it easier to accept/refuse `--files-from` without affecting this helpful modifier. - `--iconv`: This is auto-disabled based on "[charset](#)" parameter. diff --git a/usage.c b/usage.c index df033c92..048fd4cb 100644 --- a/usage.c +++ b/usage.c @@ -110,12 +110,12 @@ static void print_info_flags(enum logcode f) #endif "xattrs", -#ifdef RSYNC_USE_PROTECTED_ARGS +#ifdef RSYNC_USE_SECLUDED_ARGS "default " #else "optional " #endif - "protect-args", + "secluded-args", #ifndef ICONV_OPTION "no " -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
+ } /* FALL THROUGH */ case FES_NO_SEND: #ifdef SUPPORT_HARD_LINKS @@ -1574,14 +1599,15 @@ static void read_a_msg(void) } break; case MSG_SUCCESS: - if (msg_bytes != 4) { + if (msg_bytes != (local_server ? 4+8+8 : 4)) { invalid_msg: rprintf(FERROR, "invalid multi-message %d:%lu [%s%s]\n", tag, (unsigned long)msg_bytes, who_am_i(), inc_recurse ? "/inc" : ""); exit_cleanup(RERR_STREAMIO); } - val = raw_read_int(); + raw_read_buf(num_dev_ino_buf, msg_bytes); + val = IVAL(num_dev_ino_buf, 0); iobuf.in_multiplexed = 1; if (am_generator) got_flist_entry_status(FES_SUCCESS, val); diff --git a/receiver.c b/receiver.c index 93cf8efd..0f5d92d2 100644 --- a/receiver.c +++ b/receiver.c @@ -439,9 +439,8 @@ static void handle_delayed_updates(char *local_name) "rename failed for %s (from %s)", full_fname(fname), partialptr); } else { - if (remove_source_files -|| (preserve_hard_links && F_IS_HLINKED(file))) - send_msg_int(MSG_SUCCESS, ndx); + if (remove_source_files || (preserve_hard_links && F_IS_HLINKED(file))) + send_msg_success(fname, ndx); handle_partial_dir(partialptr, PDIR_DELETE); } } @@ -698,7 +697,7 @@ int recv_files(int f_in, int f_out, char *local_name) if (!am_server) discard_receive_data(f_in, file); if (inc_recurse) - send_msg_int(MSG_SUCCESS, ndx); + send_msg_success(fname, ndx); continue; } @@ -926,9 +925,8 @@ int recv_files(int f_in, int f_out, char *local_name) case 2: break; case 1: - if (remove_source_files || inc_recurse -|| (preserve_hard_links && F_IS_HLINKED(file))) - send_msg_int(MSG_SUCCESS, ndx); + if (remove_source_files || inc_recurse || (preserve_hard_links && F_IS_HLINKED(file))) + send_msg_success(fname, ndx); break; case 0: { enum logcode msgtype = redoing ? FERROR_XFER : FWARNING; diff --git a/rsync.1.md b/rsync.1.md index 1a3e8607..866a9e4f 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -1808,6 +1808,10 @@ expand it. Starting with 3.1.0, rsync will skip the sender-side removal (and output an error) if the file's size or modify time has not stayed unchanged. +Starting with 3.2.6, a local rsync copy will ensure that the sender does +not remove a file the receiver just verified, such as when the user +accidentally makes the source and destination directory the same path. + 0. `--delete` This tells rsync to delete extraneous files from the receiving side (ones diff --git a/sender.c b/sender.c index 9159da4d..3d4f052e 100644 --- a/sender.c +++ b/sender.c @@ -25,6 +25,7 @@ extern int do_xfers; extern int am_server; extern int am_daemon; +extern int local_server; extern int inc_recurse; extern int log_before_transfer; extern int stdout_format_has_i; @@ -51,6 +52,7 @@ extern int file_old_total; extern BOOL want_progress_now; extern struct stats stats; extern struct file_list *cur_flist, *first_flist, *dir_flist; +extern char num_dev_ino_buf[4 + 8 + 8]; BOOL extra_flist_sending_enabled; @@ -144,6 +146,13 @@ void successful_send(int ndx) goto failed; } + if (local_server +&& (int64)st.st_dev == IVAL64(num_dev_ino_buf, 4) +&& (int64)st.st_ino == IVAL64(num_dev_ino_buf, 4 + 8)) { + rprintf(FERROR_XFER, "ERROR: Skipping sender remove of destination file: %s\n", fname); + return; + } + if (st.st_size != F_LENGTH(file) || st.st_mtime != file->modtime #ifdef ST_MTIME_NSEC || (NSEC_BUMP(file) && (uint32)st.ST_MTIME_NSEC != F_MOD_NSEC(file)) -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 706bff91 Mention the latest changes. from 2c120403 Make sure that the configure.sh script is up-to-date in a release. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 706bff9176ccf6976e27040eb5729ce34c0058eb Author: Wayne Davison Date: Sat Aug 20 08:28:48 2022 -0700 Mention the latest changes. --- Summary of changes: NEWS.md| 14 ++ packaging/cull-options | 1 + 2 files changed, 15 insertions(+) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 2196c33c..b5883ecf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,9 @@ - More path-cleaning in the file-list verification code to handle some rejected args. +- Fixed a bug with the new file-list validation code when the last line of the + [`--files-from`](rsync.1#opt) list is not terminated by a newline. + - Fixed a bug in the internal MD4 checksum code that could cause the digest to be sporadically incorrect (the openssl version was/is fine). @@ -17,6 +20,17 @@ version value. This should avoid using an unrelated git description for rsync's version. +### DEVELOPER RELATED: + +- The configure script no longer sets the -pedantic-errors CFLAG (which it + used to try to do only for gcc). + +- A minor tweak to rrsync added "copy-devices" to the list of known args, but + left it disabled by default. + +- The name_num_obj struct was modified to allow its dynamic name_num_item list + to be initialized in a better way. + -- # NEWS for rsync 3.2.5 (14 Aug 2022) diff --git a/packaging/cull-options b/packaging/cull-options index 955c21f1..e71818cd 100755 --- a/packaging/cull-options +++ b/packaging/cull-options @@ -27,6 +27,7 @@ long_opts = { # These include some extra long-args that BackupPC uses: 'recursive': 0, 'stderr': 1, 'times': 0, +'copy-devices': -1, 'write-devices': -1, } -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 2c120403 Make sure that the configure.sh script is up-to-date in a release. via 8adc2240 Mention `copy-devices`. via 84ad8352 Remove unneeded var. from 9a3449a3 Stop enabling -pedantic-errors. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 2c1204032b15bd0c4c7ce54b65090867492557e2 Author: Wayne Davison Date: Fri Aug 19 08:57:47 2022 -0700 Make sure that the configure.sh script is up-to-date in a release. commit 8adc2240e0badaf8b66ea1d77314fe1bf162209a Author: Wayne Davison Date: Fri Aug 19 08:56:42 2022 -0700 Mention `copy-devices`. commit 84ad83525b3336eeca76c34f078869e17feddabd Author: Wayne Davison Date: Fri Aug 19 08:55:51 2022 -0700 Remove unneeded var. --- Summary of changes: packaging/pkglib.py | 2 +- packaging/release-rsync | 8 support/rrsync | 1 + t_stub.c| 1 - util1.c | 1 - 5 files changed, 6 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/packaging/pkglib.py b/packaging/pkglib.py index 52f3d892..6f5557aa 100644 --- a/packaging/pkglib.py +++ b/packaging/pkglib.py @@ -32,7 +32,7 @@ def _tweak_opts(cmd, opts, **maybe_set_args): opts = opts.copy() _maybe_set(opts, **maybe_set_args) -if type(cmd) == str: +if isinstance(cmd, str): _maybe_set(opts, shell=True) want_raw = opts.pop('raw', False) diff --git a/packaging/release-rsync b/packaging/release-rsync index 5e54d06e..f37bd184 100755 --- a/packaging/release-rsync +++ b/packaging/release-rsync @@ -232,7 +232,7 @@ About to: cmd_chk(['packaging/year-tweak']) print(dash_line) -cmd_run("git diff") +cmd_run("git diff".split()) srctar_name = f"{rsync_ver}.tar.gz" pattar_name = f"rsync-patches-{version}.tar.gz" @@ -247,7 +247,7 @@ About to: About to: - git commit all changes -- generate the manpages +- run a full build, ensuring that the manpages & configure.sh are up-to-date - merge the {args.master_branch} branch into the patch/{args.master_branch}/* branches - update the files in the "patches" dir and OPTIONALLY (if you type 'y') to run patch-update with the --make option (which opens a shell on error) @@ -258,9 +258,9 @@ About to: if s.returncode: die('Aborting') -cmd_chk('make gen') +cmd_chk('touch configure.ac && packaging/smart-make && make gen') -print(f'Creating any missing patch branches.') +print('Creating any missing patch branches.') s = cmd_run(f'packaging/branch-from-patch --branch={args.master_branch} --add-missing') if s.returncode: die('Aborting') diff --git a/support/rrsync b/support/rrsync index 629aa182..94c85f59 100755 --- a/support/rrsync +++ b/support/rrsync @@ -47,6 +47,7 @@ long_opts = { 'compress-choice': 1, 'compress-level': 1, 'copy-dest': 2, + 'copy-devices': -1, 'copy-unsafe-links': 0, 'daemon': -1, 'debug': 1, diff --git a/t_stub.c b/t_stub.c index a9ce5848..085378a8 100644 --- a/t_stub.c +++ b/t_stub.c @@ -29,7 +29,6 @@ int protect_args = 0; int module_id = -1; int relative_paths = 0; int module_dirlen = 0; -int preserve_mtimes = 0; int preserve_xattrs = 0; int preserve_perms = 0; int preserve_executability = 0; diff --git a/util1.c b/util1.c index 5f14723e..671f3c75 100644 --- a/util1.c +++ b/util1.c @@ -31,7 +31,6 @@ extern int do_fsync; extern int protect_args; extern int modify_window; extern int relative_paths; -extern int preserve_mtimes; extern int preserve_xattrs; extern int omit_link_times; extern int preallocate_files; -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
ne CF_INC_RECURSE (1<<0) diff --git a/configure.ac b/configure.ac index d185b2d3..cfc0117f 100644 --- a/configure.ac +++ b/configure.ac @@ -1071,21 +1071,6 @@ elif test x"$ac_cv_header_popt_h" != x"yes"; then with_included_popt=yes fi -if test x"$GCC" = x"yes"; then -if test x"$with_included_popt" != x"yes"; then - # Turn pedantic warnings into errors to ensure an array-init overflow is an error. - CFLAGS="$CFLAGS -pedantic-errors" -else - # Our internal popt code cannot be compiled with pedantic warnings as errors, so try to - # turn off pedantic warnings (which will not lose the error for array-init overflow). - # Older gcc versions don't understand -Wno-pedantic, so check if --help=warnings lists - # -Wpedantic and use that as a flag. - case `$CC --help=warnings 2>/dev/null | grep Wpedantic` in - *-Wpedantic*) CFLAGS="$CFLAGS -pedantic-errors -Wno-pedantic" ;; - esac -fi -fi - AC_MSG_CHECKING([whether to use included libpopt]) if test x"$with_included_popt" = x"yes"; then AC_MSG_RESULT($srcdir/popt) diff --git a/exclude.c b/exclude.c index 730d04ef..777874aa 100644 --- a/exclude.c +++ b/exclude.c @@ -361,6 +361,8 @@ void implied_include_partial_string(const char *s_start, const char *s_end) void free_implied_include_partial_string() { if (partial_string_buf) { + if (partial_string_len) + add_implied_include("", 0); free(partial_string_buf); partial_string_buf = NULL; } diff --git a/mkgitver b/mkgitver index 43156c65..fe8a3d15 100755 --- a/mkgitver +++ b/mkgitver @@ -2,16 +2,13 @@ srcdir=`dirname $0` -if [ -e "$srcdir/.git" ]; then -gitver=`git describe --abbrev=8 2>/dev/null` -fi - if [ ! -f git-version.h ]; then touch git-version.h fi -case "$gitver" in -*.*) +if [ -e "$srcdir/.git" ]; then +gitver=`git describe --abbrev=8 2>/dev/null | sed -n '/^v3\.[0-9][0-9]*\.[0-9][0-9]*\(-\|$\)/p'` +if [ -n "$gitver" ]; then echo "#define RSYNC_GITVER \"$gitver\"" >git-version.h.new if ! diff git-version.h.new git-version.h >/dev/null; then echo "Updating git-version.h" @@ -19,5 +16,5 @@ case "$gitver" in else rm git-version.h.new fi - ;; -esac +fi +fi diff --git a/rsync.1.md b/rsync.1.md index f29495f2..1a3e8607 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -1904,13 +1904,13 @@ expand it. By default, an exclude or include has both a server-side effect (to "hide" and "show" files when building the server's file list) and a receiver-side -effect (to "protect" and "risk" files when deletions are occuring). Any +effect (to "protect" and "risk" files when deletions are occurring). Any rule that has no modifier to specify what sides it is executed on will be instead treated as if it were a server-side rule only, avoiding any "protect" effects of the rules. A rule can still apply to both sides even with this option specified if the -rule is given both the sender & receiver modifer letters (e.g., `-f'-sr +rule is given both the sender & receiver modifier letters (e.g., `-f'-sr foo'`). Receiver-side protect/risk rules can also be explicitly specified to limit the deletions. This saves you from having to edit a bunch of `-f'- foo'` rules into `-f'-s foo'` (aka `-f'H foo'`) rules (not to mention diff --git a/rsync.h b/rsync.h index 1cc037c5..e29c37c3 100644 --- a/rsync.h +++ b/rsync.h @@ -1172,7 +1172,7 @@ struct name_num_obj { uchar *saw; int saw_len; int negotiated_num; - struct name_num_item list[10]; /* we'll get a compile error/warning if this is ever too small */ + struct name_num_item *list; }; #ifdef EXTERNAL_ZLIB -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via def595c5 Remove useless comment. via 68b1ce1d Only run git describe if .git exists in the $srcdir. via 5a4116e5 Start 3.2.6dev going. from 024bf1d8 Do more path cleaning in add_implied_include(); make u.slash_cnt more accurate. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit def595c55960504328b5bfa45c08c42a90382076 Author: Wayne Davison Date: Mon Aug 15 21:56:37 2022 -0700 Remove useless comment. commit 68b1ce1dc3605a8b79594ba5e8e29577ea6dc42c Author: Wayne Davison Date: Mon Aug 15 21:52:13 2022 -0700 Only run git describe if .git exists in the $srcdir. commit 5a4116e553551ed314eea4bc85db8f54fd5fd03b Author: Wayne Davison Date: Mon Aug 15 19:01:56 2022 -0700 Start 3.2.6dev going. --- Summary of changes: NEWS.md | 15 +++ exclude.c | 2 +- mkgitver | 5 - version.h | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index e32600c5..8b9624a2 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,17 @@ +# NEWS for rsync 3.2.6 (UNRELEASED) + +## Changes in this version: + +### BUG FIXES: + +- More path-cleaning in the file-list verification code to handle some rejected + args. + +- Fixed a bug in the internal MD4 checksum code that could cause the digest + to be incorrect part of the time (the openssl version was/is fine). + +-- + # NEWS for rsync 3.2.5 (14 Aug 2022) ## Changes in this version: @@ -4541,6 +4555,7 @@ | RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL| |--||--|-| +| ?? Dec 2022 | 3.2.6 | | 31 | | 14 Aug 2022 | 3.2.5 | | 31 | | 15 Apr 2022 | 3.2.4 | | 31 | | 06 Aug 2020 | 3.2.3 | | 31 | diff --git a/exclude.c b/exclude.c index 296d69df..730d04ef 100644 --- a/exclude.c +++ b/exclude.c @@ -372,7 +372,7 @@ void free_implied_include_partial_string() void add_implied_include(const char *arg, int skip_daemon_module) { int arg_len, saw_wild = 0, saw_live_open_brkt = 0, backslash_cnt = 0; - int slash_cnt = 0; /* We know we're adding a leading slash. */ + int slash_cnt = 0; const char *cp; char *p; if (trust_sender_args) diff --git a/mkgitver b/mkgitver index 49aa150b..43156c65 100755 --- a/mkgitver +++ b/mkgitver @@ -1,7 +1,10 @@ #!/bin/sh srcdir=`dirname $0` -gitver=`git describe --abbrev=8 2>/dev/null` + +if [ -e "$srcdir/.git" ]; then +gitver=`git describe --abbrev=8 2>/dev/null` +fi if [ ! -f git-version.h ]; then touch git-version.h diff --git a/version.h b/version.h index 82aa78f2..fac4fa4b 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.5" +#define RSYNC_VERSION "3.2.6dev" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
*p = '/'; + slash_cnt++; } - slash_cnt++; - *p++ = *cp++; - break; - case '[': - saw_live_open_brkt = 1; - *p++ = *cp++; - break; - default: - *p++ = *cp++; - break; } } - *p = '\0'; - rule->u.slash_cnt = slash_cnt; - arg = rule->pattern; - arg_len = p - arg; /* We recompute it due to backslash weirdness. */ - if (DEBUG_GTE(FILTER, 3)) - rprintf(FINFO, "[%s] add_implied_include(%s)\n", who_am_i(), rule->pattern); - if (saw_live_open_brkt) - maybe_add_literal_brackets_rule(rule, arg_len); } if (recurse || xfer_dirs) { /* Now create a rule with an added "/" & "**" or "*" at the end */ - rule = new0(filter_rule); + filter_rule *rule = new0(filter_rule); rule->rflags = FILTRULE_INCLUDE | FILTRULE_WILD; if (recurse) rule->rflags |= FILTRULE_WILD2; @@ -499,7 +531,7 @@ void add_implied_include(const char *arg, int skip_daemon_module) if (!saw_wild && backslash_cnt) { /* We are appending a wildcard, so now the backslashes need to be escaped. */ p = rule->pattern = new_array(char, arg_len + backslash_cnt + 3 + 1); - for (cp = arg; *cp; ) { + for (cp = arg; *cp; ) { /* Note that arg_len != 0 because backslash_cnt > 0 */ if (*cp == '\\') *p++ = '\\'; *p++ = *cp++; @@ -511,13 +543,15 @@ void add_implied_include(const char *arg, int skip_daemon_module) p += arg_len; } } - if (p[-1] != '/') + if (p[-1] != '/') { *p++ = '/'; + slash_cnt++; + } *p++ = '*'; if (recurse) *p++ = '*'; *p = '\0'; - rule->u.slash_cnt = slash_cnt + 1; + rule->u.slash_cnt = slash_cnt; rule->next = implied_filter_list.head; implied_filter_list.head = rule; if (DEBUG_GTE(FILTER, 3)) diff --git a/options.c b/options.c index 4feeb7e0..5b3d6dea 100644 --- a/options.c +++ b/options.c @@ -2508,7 +2508,9 @@ char *safe_arg(const char *opt, const char *arg) char *ret; if (!protect_args && old_style_args < 2 && (!old_style_args || (!is_filename_arg && opt != SPLIT_ARG_WHEN_OLD))) { const char *f; - if (!trust_sender_args && *arg == '~' && (relative_paths || !strchr(arg, '/'))) { + if (!trust_sender_args && *arg == '~' + && ((relative_paths && !strstr(arg, "/./")) + || !strchr(arg, '/'))) { extras++; escape_leading_tilde = 1; } -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.5 created
The annotated tag, v3.2.5 has been created at 001cc050f46d05cb0487359ed5101018da14a5a3 (tag) tagging 0e10163a9d984a8858f7d83b5c7b46889536aa96 (commit) replaces v3.2.5pre2 tagged by Wayne Davison on Sun Aug 14 12:39:48 2022 -0700 - Log - Version v3.2.5. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYvlPhBEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxSEgAJ4pWFtRwHxvdtR3dBZARKE110+3dgCguzzt JaSOIDtQuy3a8YeWhJfWOpM= =HZtD -END PGP SIGNATURE- Wayne Davison (14): Fix handling of daemon module names in file-list verification; convert some while loops to for loops. Escape leading tilde char when "~" or with -R. Add `--trust-sender` option. A couple manpage tweaks. Be a little paranoid. Fix handling of a character class with an escaped closing bracket. Add packaging note. One more doc tweak. Make a `--trust-sender` a bit clearer. Remove some trailing whitespace. Ensure a dynamically linked xxhash lib is >= 0.8 for XX3. Update the NEWS. Preparing for release of 3.2.5 Fix another dot-dir implied arg issue. --- -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.5 deleted
The annotated tag, v3.2.5 has been deleted was 72c414a5558485b3619f7690ca85dd86a5605185 --- tag v3.2.5 Version 3.2.5. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYvkwSBEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxfmCAJ9eGXfo7julAh5QrtcXn/VRJd1EqwCfQRmD kRkY3fbznveEjFEi8hAwxRw= =WtoK -END PGP SIGNATURE- 5fcf20ee9d8abf7aae8578354f82c6f500822e06 Preparing for release of 3.2.5 --- -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.5 created
The annotated tag, v3.2.5 has been created at 72c414a5558485b3619f7690ca85dd86a5605185 (tag) tagging 5fcf20ee9d8abf7aae8578354f82c6f500822e06 (commit) replaces v3.2.5pre2 tagged by Wayne Davison on Sun Aug 14 10:26:32 2022 -0700 - Log - Version 3.2.5. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYvkwSBEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxfmCAJ9eGXfo7julAh5QrtcXn/VRJd1EqwCfQRmD kRkY3fbznveEjFEi8hAwxRw= =WtoK -END PGP SIGNATURE- Wayne Davison (13): Fix handling of daemon module names in file-list verification; convert some while loops to for loops. Escape leading tilde char when "~" or with -R. Add `--trust-sender` option. A couple manpage tweaks. Be a little paranoid. Fix handling of a character class with an escaped closing bracket. Add packaging note. One more doc tweak. Make a `--trust-sender` a bit clearer. Remove some trailing whitespace. Ensure a dynamically linked xxhash lib is >= 0.8 for XX3. Update the NEWS. Preparing for release of 3.2.5 --- -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
] = nni[f]; + } + nni[t].name = NULL; + } +#endif + initialized_choices = 1; +} diff --git a/compat.c b/compat.c index dec363a6..b46eb199 100644 --- a/compat.c +++ b/compat.c @@ -523,6 +523,8 @@ static void negotiate_the_strings(int f_in, int f_out) { /* We send all the negotiation strings before we start to read them to help avoid a slow startup. */ + init_checksum_choices(); + if (!checksum_choice) send_negotiate_str(f_out, _checksums, NSTR_CHECKSUM); diff --git a/lib/sysacls.c b/lib/sysacls.c index 74a99478..a5abe408 100644 --- a/lib/sysacls.c +++ b/lib/sysacls.c @@ -2,7 +2,7 @@ * Unix SMB/CIFS implementation. * Based on the Samba ACL support code. * Copyright (C) Jeremy Allison 2000. - * Copyright (C) 2007-2020 Wayne Davison + * Copyright (C) 2007-2022 Wayne Davison * * The permission functions have been changed to get/set all bits via * one call. Some functions that rsync doesn't need were also removed. diff --git a/lib/sysacls.h b/lib/sysacls.h index cf1368ea..c0695974 100644 --- a/lib/sysacls.h +++ b/lib/sysacls.h @@ -3,7 +3,7 @@ * Version 2.2.x * Portable SMB ACL interface * Copyright (C) Jeremy Allison 2000 - * Copyright (C) 2007-2020 Wayne Davison + * Copyright (C) 2007-2022 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/packaging/lsb/rsync.spec b/packaging/lsb/rsync.spec index 31225a5c..0959c744 100644 --- a/packaging/lsb/rsync.spec +++ b/packaging/lsb/rsync.spec @@ -1,9 +1,9 @@ Summary: A fast, versatile, remote (and local) file-copying tool Name: rsync Version: 3.2.5 -%define fullversion %{version}pre2 -Release: 0.1.pre2 -%define srcdir src-previews +%define fullversion %{version} +Release: 1 +%define srcdir src Group: Applications/Internet License: GPL Source0: https://rsync.samba.org/ftp/rsync/%{srcdir}/rsync-%{fullversion}.tar.gz @@ -79,8 +79,8 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/rsync-ssl/certs %changelog -* Mon Aug 08 2022 Wayne Davison -Released 3.2.5pre2. +* Sun Aug 14 2022 Wayne Davison +Released 3.2.5. * Fri Mar 21 2008 Wayne Davison Added installation of /etc/xinetd.d/rsync file and some commented-out diff --git a/usage.c b/usage.c index cbca83e3..df033c92 100644 --- a/usage.c +++ b/usage.c @@ -195,6 +195,8 @@ void print_rsync_version(enum logcode f) print_info_flags(f); + init_checksum_choices(); + rprintf(f, "Checksum list:\n"); get_default_nno_list(_checksums, tmpbuf, sizeof tmpbuf, '('); rprintf(f, "%s\n", tmpbuf); diff --git a/version.h b/version.h index d793678d..82aa78f2 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.5pre2" +#define RSYNC_VERSION "3.2.5" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
try = %d\n", acl_entry)); DEBUG(10, ("The ace_type is %d\n", acl_entry->ace_type)); - + acl_entry = acl_nxt(acl_entry); } } /* end of if enabled */ @@ -2014,12 +2014,12 @@ SMB_ACL_T sys_acl_get_file(const char *path_p, SMB_ACL_TYPE_T type) new_acl_entry->ace_access = file_acl->o_access << 6; idp->id_type = SMB_ACL_OTHER; break; - + case 1: new_acl_entry->ace_access = file_acl->u_access << 6; idp->id_type = SMB_ACL_USER_OBJ; break; - + default: return NULL; @@ -2048,7 +2048,7 @@ SMB_ACL_T sys_acl_get_fd(int fd) int rc = 0; /* Get the acl using fstatacl */ - + DEBUG(10, ("Entering sys_acl_get_fd\n")); DEBUG(10, ("fd is %d\n", fd)); file_acl = (struct acl *)SMB_MALLOC(BUFSIZ); @@ -2095,12 +2095,12 @@ SMB_ACL_T sys_acl_get_fd(int fd) DEBUG(10, ("acl_entry is %d\n", acl_entry)); DEBUG(10, ("acl_last(file_acl) id %d\n", acl_last(file_acl))); - + /* Check if the extended acl bit is on. * * If it isn't, do not show the * * contents of the acl since AIX intends * * the extended info to remain unused */ - + if (file_acl->acl_mode & S_IXACL){ /* while we are not pointing to the very end */ while (acl_entry < acl_last(file_acl)) { @@ -2115,7 +2115,7 @@ SMB_ACL_T sys_acl_get_fd(int fd) } idp = acl_entry->ace_id; - + /* Check if this is the first entry in the linked list. * * The first entry needs to keep prevp pointing to NULL * * and already has entryp allocated. */ @@ -2177,7 +2177,7 @@ SMB_ACL_T sys_acl_get_fd(int fd) DEBUG(10, ("acl_entry = %d\n", acl_entry)); DEBUG(10, ("The ace_type is %d\n", acl_entry->ace_type)); - + acl_entry = acl_nxt(acl_entry); } } /* end of if enabled */ @@ -2210,43 +2210,43 @@ SMB_ACL_T sys_acl_get_fd(int fd) } acl_entry_link->nextp = NULL; - + new_acl_entry = acl_entry_link->entryp; idp = new_acl_entry->ace_id; - + new_acl_entry->ace_len = sizeof (struct acl_entry); new_acl_entry->ace_type = ACC_PERMIT; idp->id_len = sizeof (struct ace_id); DEBUG(10, ("idp->id_len = %d\n", idp->id_len)); memset(idp->id_data, 0, sizeof (uid_t)); - + switch (i) { case 2: new_acl_entry->ace_access = file_acl->g_access << 6; idp->id_type = SMB_ACL_GROUP_OBJ; break; - + case 3: new_acl_entry->ace_access = file_acl->o_access << 6; idp->id_type = SMB_ACL_OTHER; break; - + case 1: new_acl_entry->ace_access = file_acl->u_access << 6; idp->id_type = SMB_ACL_USER_OBJ; -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 55ad8757 Make a `--trust-sender` a bit clearer. via 3e4b0117 One more doc tweak. from 2f1d1d5c Add packaging note. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 55ad8757ec32f9aa202305ea6e0d72bd55d66efd Author: Wayne Davison Date: Wed Aug 10 16:25:37 2022 -0700 Make a `--trust-sender` a bit clearer. commit 3e4b01173ab2c6f8014a027bd69f1443b20b3a68 Author: Wayne Davison Date: Wed Aug 10 08:47:11 2022 -0700 One more doc tweak. --- Summary of changes: rsync.1.md | 25 +++-- 1 file changed, 15 insertions(+), 10 deletions(-) Changeset truncated at 500 lines: diff --git a/rsync.1.md b/rsync.1.md index 627c4290..f29495f2 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -2414,17 +2414,19 @@ expand it. 0. `--trust-sender` -Disable the extra validation of the file list from a remote sender (this -safety feature was added in 3.2.5). This should only be done if you trust -the sender to not try to do something malicious, which should be the case -if they're running a stock rsync. +This option disables two extra validation checks that a local client +performs on the file list generated by a remote sender. This option should +only be used if you trust the sender to not put something malicious in the +file list (something that could possibly be done via a modified rsync, a +modified shell, or some other similar manipulation). -Normally when pulling files from a remote rsync, the client runs 2 extra -validation checks: +Normally, the rsync client (as of version 3.2.5) runs two extra validation +checks when pulling files from a remote rsync: -- Verify that additional arg items didn't get added at the top of the +- It verifies that additional arg items didn't get added at the top of the transfer. -- Verify that none of the items in the file list should have been excluded. +- It verifies that none of the items in the file list are names that should + have been excluded (if filter rules were specified). Note that various options can turn off one or both of these checks if the option interferes with the validation. For instance: @@ -2440,8 +2442,11 @@ expand it. This option may help an under-powered client server if the extra pattern matching is slowing things down on a huge transfer. It can also be used to -work around a currently-unknown bug in the verification logic, possibly -after using the [`--list-only`](#opt) option to approve the file list. +work around a currently-unknown bug in the verification logic for a transfer +from a trusted sender. + +When using this option it is a good idea to specify a dedicated destination +directory, as discussed in the [MULTI-HOST SECURITY](#) section. 0. `--copy-as=USER[:GROUP]` -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 2f1d1d5c Add packaging note. from 4c0a4067 Fix handling of a character class with an escaped closing bracket. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 2f1d1d5cac1d8225c855fb38bce7da7aa4652f3b Author: Wayne Davison Date: Wed Aug 10 08:42:22 2022 -0700 Add packaging note. --- Summary of changes: NEWS.md | 4 1 file changed, 4 insertions(+) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 5394b1a9..0610dfba 100644 --- a/NEWS.md +++ b/NEWS.md @@ -36,6 +36,10 @@ ### PACKAGING RELATED: +- A note to those wanting to patch older rsync versions: the changes in this + release requires the quoted argument change from 3.2.4. Then, you'll want + every single code change from 3.2.5 since there is no fluff in this release. + - The build date that goes into the manpages is now based on the developer's release date, not on the build's local-timezone interpretation of the date. -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 4c0a4067 Fix handling of a character class with an escaped closing bracket. via 85501428 Be a little paranoid. via 97f40754 A couple manpage tweaks. from cff8f044 Add `--trust-sender` option. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 4c0a4067df2516ce50e12a7d3ae572275fa9fc0b Author: Wayne Davison Date: Tue Aug 9 17:51:00 2022 -0700 Fix handling of a character class with an escaped closing bracket. commit 8550142804430afcf46f84fcd0c6dfe0a9db1d76 Author: Wayne Davison Date: Tue Aug 9 17:33:45 2022 -0700 Be a little paranoid. commit 97f40754babb503140e1516b759c501ea8fb22b4 Author: Wayne Davison Date: Tue Aug 9 17:26:23 2022 -0700 A couple manpage tweaks. --- Summary of changes: exclude.c | 12 rsync.1.md | 11 +-- 2 files changed, 13 insertions(+), 10 deletions(-) Changeset truncated at 500 lines: diff --git a/exclude.c b/exclude.c index da25661b..e5774420 100644 --- a/exclude.c +++ b/exclude.c @@ -364,6 +364,7 @@ void free_implied_include_partial_string() free(partial_string_buf); partial_string_buf = NULL; } + partial_string_len = 0; /* paranoia */ } /* Each arg the client sends to the remote sender turns into an implied include @@ -379,8 +380,10 @@ void add_implied_include(const char *arg, int skip_daemon_module) return; if (partial_string_len) { arg_len = strlen(arg); - if (partial_string_len + arg_len >= MAXPATHLEN) + if (partial_string_len + arg_len >= MAXPATHLEN) { + partial_string_len = 0; return; /* Should be impossible... */ + } memcpy(partial_string_buf + partial_string_len, arg, arg_len + 1); partial_string_len = 0; arg = partial_string_buf; @@ -421,9 +424,10 @@ void add_implied_include(const char *arg, int skip_daemon_module) for (cp = arg; *cp; ) { switch (*cp) { case '\\': - if (cp[1] == ']') - cp++; /* A \] in a filter might cause a problem w/o wildcards. */ - else if (!strchr("*[?", cp[1])) { + if (cp[1] == ']') { + if (!saw_wild) + cp++; /* A \] in a non-wild filter causes a problem, so drop the \ . */ + } else if (!strchr("*[?", cp[1])) { backslash_cnt++; if (saw_wild) *p++ = '\\'; diff --git a/rsync.1.md b/rsync.1.md index 72675594..627c4290 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -2439,10 +2439,9 @@ expand it. contents will have been verified when it was created. This option may help an under-powered client server if the extra pattern -matching is slowing things down on a huge transfer. It can also be used -to work around a bug in the verification logic, possibly after using the -[`--list-only`](#opt) option combined with [`--trust-sender`](#opt) to look -over the full file list. +matching is slowing things down on a huge transfer. It can also be used to +work around a currently-unknown bug in the verification logic, possibly +after using the [`--list-only`](#opt) option to approve the file list. 0. `--copy-as=USER[:GROUP]` @@ -4047,8 +4046,8 @@ Here are some examples of exclude/include matching: - Option `-f'- foo/*/bar'` would exclude any file/dir named bar which is at two levels below a directory named foo (if foo is in the transfer) - Option `-f'- /foo/**/bar'` would exclude any file/dir named bar that was two - or more levels below the top-level directory named foo (exclude /foo/bar in a - separate rule, if desired) + or more levels below a top-level directory named foo (note that /foo/bar is + **not** excluded by this) - Options `-f'+ */' -f'+ *.c' -f'- *'` would include all directories and .c source files but nothing else - Options `-f'+ foo/' -f'+ foo/bar.c' -f'- *'` would include only the foo -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
attern contains a `/` (not counting a trailing slash) or a "`**`" (which can match a slash), then the pattern is matched against the full pathname, including any leading directories within the transfer. If the - pattern doesn't contain a `/` or a "`**`", then it is matched only against - the final component of the filename or pathname. For example, `foo` means - that the final path component must be "foo" while `foo/bar` would match the - last 2 elements of the path (as long as both elements are within the - transfer). + pattern doesn't contain a (non-trailing) `/` or a "`**`", then it is matched + only against the final component of the filename or pathname. For example, + `foo` means that the final path component must be "foo" while `foo/bar` would + match the last 2 elements of the path (as long as both elements are within + the transfer). - A pattern that ends with a `/` only matches a directory, not a regular file, symlink, or device. - A pattern that starts with a `/` is anchored to the start of the transfer - path instead of the end. For example, `/foo` or `/foo/bar` match only + path instead of the end. For example, `/foo/**` or `/foo/bar/**` match only leading elements in the path. If the rule is read from a per-directory filter file, the transfer path being matched will begin at the level of the filter file instead of the top of the transfer. See the section on @@ -4010,11 +4044,11 @@ Here are some examples of exclude/include matching: - Option `-f'- /foo'` would exclude a file (or directory) named foo in the transfer-root directory - Option `-f'- foo/'` would exclude any directory named foo -- Option `-f'- /foo/*/bar'` would exclude any file/dir named bar which is at - two levels below a directory named foo, which must be at the root of the - transfer -- Option `-f'- /foo/**/bar'` would exclude any file/dir named bar two or more - levels below a directory named foo, which must be at the root of the transfer +- Option `-f'- foo/*/bar'` would exclude any file/dir named bar which is at two + levels below a directory named foo (if foo is in the transfer) +- Option `-f'- /foo/**/bar'` would exclude any file/dir named bar that was two + or more levels below the top-level directory named foo (exclude /foo/bar in a + separate rule, if desired) - Options `-f'+ */' -f'+ *.c' -f'- *'` would include all directories and .c source files but nothing else - Options `-f'+ foo/' -f'+ foo/bar.c' -f'- *'` would include only the foo -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 5ce575b1 Preparing for release of 3.2.5pre2 from fabef23b Fix --relative when copying an absolute path. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 5ce575b15726c653312b473bd770c3e7d74d3449 Author: Wayne Davison Date: Mon Aug 8 22:50:31 2022 -0700 Preparing for release of 3.2.5pre2 --- Summary of changes: packaging/lsb/rsync.spec | 8 version.h| 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/packaging/lsb/rsync.spec b/packaging/lsb/rsync.spec index 95adb8f0..31225a5c 100644 --- a/packaging/lsb/rsync.spec +++ b/packaging/lsb/rsync.spec @@ -1,8 +1,8 @@ Summary: A fast, versatile, remote (and local) file-copying tool Name: rsync Version: 3.2.5 -%define fullversion %{version}pre1 -Release: 0.1.pre1 +%define fullversion %{version}pre2 +Release: 0.1.pre2 %define srcdir src-previews Group: Applications/Internet License: GPL @@ -79,8 +79,8 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/rsync-ssl/certs %changelog -* Mon Aug 01 2022 Wayne Davison -Released 3.2.5pre1. +* Mon Aug 08 2022 Wayne Davison +Released 3.2.5pre2. * Fri Mar 21 2008 Wayne Davison Added installation of /etc/xinetd.d/rsync file and some commented-out diff --git a/version.h b/version.h index 61820bba..d793678d 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.5pre1" +#define RSYNC_VERSION "3.2.5pre2" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.5pre2 created
The annotated tag, v3.2.5pre2 has been created at 1bb1c21c8ffce4ea922972ce4060eb72c6a4481b (tag) tagging 5ce575b15726c653312b473bd770c3e7d74d3449 (commit) replaces v3.2.5pre1 tagged by Wayne Davison on Mon Aug 8 22:50:51 2022 -0700 - Log - Version 3.2.5pre2. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYvH1uxEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxRyHAKDtC5j+9Qj2r/GnsRvVxn4STvB1PACgnYK0 M6VOw75VVEJUc2WJqF6lwtU= =tGYc -END PGP SIGNATURE- Jakub Wilk (1): Fix typos in NEWS (#339) Wayne Davison (11): Some md-convert doc tweaks. Make sure that --read-batch doesn't try to check args. Fix zlib bug with a large gzip header extra field Update the NEWS. Handle a trailing "/." at the end of a source arg. Fix some issues with backslashed wildcards in args. Handle a "[foo]" arg matching the literal wildcards. A fix for the zlib fix. Handle files-from args that span 2 buffers. Fix --relative when copying an absolute path. Preparing for release of 3.2.5pre2 --- -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via fabef23b Fix --relative when copying an absolute path. via 685bf580 Handle files-from args that span 2 buffers. from 9e2921fc A fix for the zlib fix. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit fabef23bea6e9963c06e218586fda1a823e3c6bf Author: Wayne Davison Date: Mon Aug 8 21:30:21 2022 -0700 Fix --relative when copying an absolute path. commit 685bf5804691d4af779a4deac28c7fbcf52b5009 Author: Wayne Davison Date: Mon Aug 8 21:18:10 2022 -0700 Handle files-from args that span 2 buffers. --- Summary of changes: exclude.c | 34 +- io.c | 3 +++ 2 files changed, 36 insertions(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/exclude.c b/exclude.c index d811dd1f..ba5ca5a3 100644 --- a/exclude.c +++ b/exclude.c @@ -349,6 +349,28 @@ static void maybe_add_literal_brackets_rule(filter_rule const *based_on, int arg } } +static char *partial_string_buf = NULL; +static int partial_string_len = 0; +void implied_include_partial_string(const char *s_start, const char *s_end) +{ + partial_string_len = s_end - s_start; + if (partial_string_len <= 0 || partial_string_len >= MAXPATHLEN) { /* too-large should be impossible... */ + partial_string_len = 0; + return; + } + if (!partial_string_buf) + partial_string_buf = new_array(char, MAXPATHLEN); + memcpy(partial_string_buf, s_start, partial_string_len); +} + +void free_implied_include_partial_string() +{ + if (partial_string_buf) { + free(partial_string_buf); + partial_string_buf = NULL; + } +} + /* Each arg the client sends to the remote sender turns into an implied include * that the receiver uses to validate the file list from the sender. */ void add_implied_include(const char *arg) @@ -360,6 +382,14 @@ void add_implied_include(const char *arg) char *p; if (am_server || old_style_args || list_only || read_batch || filesfrom_host != NULL) return; + if (partial_string_len) { + arg_len = strlen(arg); + if (partial_string_len + arg_len >= MAXPATHLEN) + return; /* Should be impossible... */ + memcpy(partial_string_buf + partial_string_len, arg, arg_len + 1); + partial_string_len = 0; + arg = partial_string_buf; + } if (relative_paths) { if ((cp = strstr(arg, "/./")) != NULL) arg = cp + 3; @@ -404,8 +434,10 @@ void add_implied_include(const char *arg) *p++ = *cp++; break; case '/': - if (p[-1] == '/') /* This is safe because of the initial slash. */ + if (p[-1] == '/') { /* This is safe because of the initial slash. */ + cp++; break; + } if (relative_paths) { filter_rule const *ent; int found = 0; diff --git a/io.c b/io.c index a6e3ed30..7111878a 100644 --- a/io.c +++ b/io.c @@ -376,6 +376,7 @@ static void forward_filesfrom_data(void) free_xbuf(_xb); if (ff_reenable_multiplex >= 0) io_start_multiplex_out(ff_reenable_multiplex); + free_implied_include_partial_string(); } return; } @@ -435,6 +436,7 @@ static void forward_filesfrom_data(void) ff_lastchar = '\0'; else { /* Handle a partial string specially, saving any incomplete chars. */ + implied_include_partial_string(sob, s); flags &= ~ICB_INCLUDE_INCOMPLETE; if (iconvbufs(ic_send, _xb, , flags) < 0) { if (errno == E2BIG) @@ -461,6 +463,7 @@ static void forward_filesfrom_data(void) f++; } } + implied_include_partial_string(cur, t); ff_lastchar = f[-1]; if ((len = t - ff_xb.buf) != 0) { /* This will not circle back to perform_io() because we only get -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
rprintf(FINFO, "[%s] add_implied_include(%s/)\n", - who_am_i(), rule->pattern); + who_am_i(), R_rule->pattern); } + if (saw_live_open_brkt) + maybe_add_literal_brackets_rule(R_rule, -1); } } slash_cnt++; *p++ = *cp++; break; + case '[': + saw_live_open_brkt = 1; + *p++ = *cp++; + break; default: *p++ = *cp++; break; @@ -391,9 +448,12 @@ void add_implied_include(const char *arg) } *p = '\0'; rule->u.slash_cnt = slash_cnt; - arg = (const char *)rule->pattern; + arg = rule->pattern; + arg_len = p - arg; /* We recompute it due to backslash weirdness. */ if (DEBUG_GTE(FILTER, 3)) rprintf(FINFO, "[%s] add_implied_include(%s)\n", who_am_i(), rule->pattern); + if (saw_live_open_brkt) + maybe_add_literal_brackets_rule(rule, arg_len); } if (recurse || xfer_dirs) { @@ -430,6 +490,8 @@ void add_implied_include(const char *arg) implied_filter_list.head = rule; if (DEBUG_GTE(FILTER, 3)) rprintf(FINFO, "[%s] add_implied_include(%s)\n", who_am_i(), rule->pattern); + if (saw_live_open_brkt) + maybe_add_literal_brackets_rule(rule, p - rule->pattern); } } diff --git a/options.c b/options.c index 9731a144..a60ff515 100644 --- a/options.c +++ b/options.c @@ -2521,7 +2521,10 @@ char *safe_arg(const char *opt, const char *arg) const char *f = arg; char *t = ret + len1; while (*f) { - if (strchr(escapes, *f)) +if (*f == '\\') { + if (!is_filename_arg || !strchr(WILD_CHARS, f[1])) + *t++ = '\\'; + } else if (strchr(escapes, *f)) *t++ = '\\'; *t++ = *f++; } diff --git a/zlib/inflate.c b/zlib/inflate.c index d15132ea..e9840b67 100644 --- a/zlib/inflate.c +++ b/zlib/inflate.c @@ -739,10 +739,10 @@ int flush; copy = state->length; if (copy > have) copy = have; if (copy) { -len = state->head->extra_len - state->length; if (state->head != Z_NULL && state->head->extra != Z_NULL && -len < state->head->extra_max) { +(len = state->head->extra_len - state->length) < +state->head->extra_max) { zmemcpy(state->head->extra + len, next, len + copy > state->head->extra_max ? state->head->extra_max - len : copy); -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via d659610a Handle a trailing "/." at the end of a source arg. via 6cafc1f8 Update the NEWS. from 788f11ea Fix zlib bug with a large gzip header extra field https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit d659610afc8a3ee53fe68a8a4bbd7fc768fcd6e9 Author: Wayne Davison Date: Mon Aug 8 17:36:36 2022 -0700 Handle a trailing "/." at the end of a source arg. commit 6cafc1f8bf879e3274c106decfdccbd5b5f39470 Author: Wayne Davison Date: Sun Aug 7 09:59:43 2022 -0700 Update the NEWS. --- Summary of changes: NEWS.md | 5 - exclude.c | 5 - 2 files changed, 8 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 70c0b00f..0c212da9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -13,12 +13,15 @@ directory that contains files that aren't from the remote host unless you trust the remote host). Fixes CVE-2022-29154. + - A fix for CVE-2022-37434 in the bundled zlib (buffer overflow issue). + ### BUG FIXES: - Fixed the configure check for signed char that was causing a host that defaults to unsigned characters to generate bogus rolling checksums. This made rsync send mostly literal data for a copy instead of finding matching - data in the receiver's basis file. + data in the receiver's basis file (for a file that contains high-bit + characters). - Lots of manpage improvements, including an attempt to better describe how include/exclude filters work. diff --git a/exclude.c b/exclude.c index e5991009..ca10b094 100644 --- a/exclude.c +++ b/exclude.c @@ -316,8 +316,11 @@ void add_implied_include(const char *arg) if (relative_paths) { if ((cp = strstr(arg, "/./")) != NULL) arg = cp + 3; - } else if ((cp = strrchr(arg, '/')) != NULL) + } else if ((cp = strrchr(arg, '/')) != NULL) { arg = cp + 1; + if (*arg == '.' && arg[1] == '\0') + arg++; + } arg_len = strlen(arg); if (arg_len) { if (strpbrk(arg, "*[?")) { -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 788f11ea Fix zlib bug with a large gzip header extra field from b7fdc9ef Make sure that --read-batch doesn't try to check args. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 788f11ea6afeb96f0d84f140192165a1ca12ade4 Author: Wayne Davison Date: Sun Aug 7 09:27:57 2022 -0700 Fix zlib bug with a large gzip header extra field From zlib commit eff308af425b67093bab25f80f1ae950166bece1. Fixes CVE-2022-37434. --- Summary of changes: zlib/inflate.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/zlib/inflate.c b/zlib/inflate.c index e43abd9e..d15132ea 100644 --- a/zlib/inflate.c +++ b/zlib/inflate.c @@ -739,9 +739,10 @@ int flush; copy = state->length; if (copy > have) copy = have; if (copy) { +len = state->head->extra_len - state->length; if (state->head != Z_NULL && -state->head->extra != Z_NULL) { -len = state->head->extra_len - state->length; +state->head->extra != Z_NULL && +len < state->head->extra_max) { zmemcpy(state->head->extra + len, next, len + copy > state->head->extra_max ? state->head->extra_max - len : copy); -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via b7fdc9ef Make sure that --read-batch doesn't try to check args. via 0d8cc260 Some md-convert doc tweaks. from 29558884 Fix typos in NEWS (#339) https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit b7fdc9ef0e5fe2d179058c0ce326c9075f64443c Author: Wayne Davison Date: Sun Aug 7 08:56:39 2022 -0700 Make sure that --read-batch doesn't try to check args. commit 0d8cc26044fe5c543f69206642666bfa7ee053f7 Author: Wayne Davison Date: Wed Aug 3 08:55:26 2022 -0700 Some md-convert doc tweaks. --- Summary of changes: INSTALL.md | 2 +- exclude.c | 3 ++- md-convert | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/INSTALL.md b/INSTALL.md index 5b23ed0e..1605ab43 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -26,7 +26,7 @@ build user (after installing python3's pip package): You can test if you've got it fixed by running (from the rsync checkout): -> ./md2man --test rsync-ssl.1.md +> ./md-convert --test rsync-ssl.1.md Alternately, you can avoid generating the manpages by fetching the very latest versions (that match the latest git source) from the [generated-files][6] dir. diff --git a/exclude.c b/exclude.c index cd77c543..e5991009 100644 --- a/exclude.c +++ b/exclude.c @@ -40,6 +40,7 @@ extern int delete_excluded; extern int cvs_exclude; extern int sanitize_paths; extern int protocol_version; +extern int read_batch; extern int list_only; extern int module_id; @@ -310,7 +311,7 @@ void add_implied_include(const char *arg) int slash_cnt = 1; /* We know we're adding a leading slash. */ const char *cp; char *p; - if (am_server || old_style_args || list_only || filesfrom_host != NULL) + if (am_server || old_style_args || list_only || read_batch || filesfrom_host != NULL) return; if (relative_paths) { if ((cp = strstr(arg, "/./")) != NULL) diff --git a/md-convert b/md-convert index fb60b093..19709c8d 100755 --- a/md-convert +++ b/md-convert @@ -609,12 +609,12 @@ def die(*msg): if __name__ == '__main__': -parser = argparse.ArgumentParser(description="Output html and (optionally) nroff for markdown pages.", add_help=False) +parser = argparse.ArgumentParser(description="Convert markdown into html and (optionally) nroff. Each input filename must have a .md suffix, which is changed to .html for the output filename. If the input filename ends with .num.md (e.g. foo.1.md) then a nroff file is also output with the input filename's .md suffix removed (e.g. foo.1).", add_help=False) parser.add_argument('--test', action='store_true', help="Just test the parsing without outputting any files.") -parser.add_argument('--dest', metavar='DIR', help="Put files into DIR instead of the current directory.") +parser.add_argument('--dest', metavar='DIR', help="Create files in DIR instead of the current directory.") parser.add_argument('--debug', '-D', action='count', default=0, help='Output copious info on the html parsing. Repeat for even more.') parser.add_argument("--help", "-h", action="help", help="Output this help message and exit.") -parser.add_argument("mdfiles", nargs='+', help="The source .md files to convert.") +parser.add_argument("mdfiles", metavar='FILE.md', nargs='+', help="One or more .md files to convert.") args = parser.parse_args() try: -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 29558884 Fix typos in NEWS (#339) from 0773cecc Preparing for release of 3.2.5pre1 https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 29558884687279ecdeda1b1b398e8ec6aa784b73 Author: Jakub Wilk Date: Tue Aug 2 20:31:04 2022 +0200 Fix typos in NEWS (#339) --- Summary of changes: NEWS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index bf7d400a..70c0b00f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,7 +7,7 @@ - Added some file-list safety checking that helps to ensure that a rogue sending rsync can't add unrequested top-level names and/or include recursive names that should have been excluded by the sender. These extra safety - checks only require the receiver rsync to be udateed. When dealing with an + checks only require the receiver rsync to be updated. When dealing with an untrusted sending host, it is safest to copy into a dedicated destination directory for the remote content (i.e. don't copy into a destination directory that contains files that aren't from the remote host unless you @@ -20,7 +20,7 @@ made rsync send mostly literal data for a copy instead of finding matching data in the receiver's basis file. -- Lots of manpage improvements, including an attempt to better desdribe how +- Lots of manpage improvements, including an attempt to better describe how include/exclude filters work. ### PACKAGING RELATED: -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.5pre1 created
The annotated tag, v3.2.5pre1 has been created at 1e76ea5ff30dfb1611215260a23694ec4dbd65c2 (tag) tagging 0773cecc1fc6462b321f96dc8cae6e11983c357d (commit) replaces v3.2.4 tagged by Wayne Davison on Mon Aug 1 19:00:36 2022 -0700 - Log - Version 3.2.5pre1. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYuiFRBEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxf2QAJ4gfPvjhGguiw8/GEveghItK0jgsQCfRETN 6j7frxpAjYOv6y+s3Ntb00Q= =tFmW -END PGP SIGNATURE- Wayne Davison (26): Setup for 3.2.5dev. Use the maintainer's timezone for translating the manpage date. Manpage improvements. Make md-convert --test work again. Improve discussion of old-args in advanced usage. Fix grabbing version value in configure. Avoid -pedantic-errors on non-x86 for the moment. Fix configure's "signed char" check Include bsd/strings.h if it exists Some clarifications about transfer rules. Some proxy improvements (mainly). Improve filter discussion. Improve the filter intro. Link to rsyncd.conf page server-setup details. A few minor fixes. A few more minor doc tweaks. Some extra file-list safety checks. The latest NEWS. More improvements to file-list checking A few more minor changes. Make sure sign is consistend in 2 gid comparisons. Avoid the getgroups program when cross-compiliing. A few more minor tweaks. More NEWS. Tweaks to allow for a release. Preparing for release of 3.2.5pre1 Yuri Chornoivan (1): Fix minor typos (#327) --- -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
mmary: A fast, versatile, remote (and local) file-copying tool Name: rsync -Version: 3.2.4 -%define fullversion %{version} -Release: 1 -%define srcdir src +Version: 3.2.5 +%define fullversion %{version}pre1 +Release: 0.1.pre1 +%define srcdir src-previews Group: Applications/Internet License: GPL Source0: https://rsync.samba.org/ftp/rsync/%{srcdir}/rsync-%{fullversion}.tar.gz @@ -79,8 +79,8 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/rsync-ssl/certs %changelog -* Fri Apr 15 2022 Wayne Davison -Released 3.2.4. +* Mon Aug 01 2022 Wayne Davison +Released 3.2.5pre1. * Fri Mar 21 2008 Wayne Davison Added installation of /etc/xinetd.d/rsync file and some commented-out diff --git a/packaging/release-rsync b/packaging/release-rsync index d484628c..5e54d06e 100755 --- a/packaging/release-rsync +++ b/packaging/release-rsync @@ -193,7 +193,9 @@ About to: with open(fn, 'r', encoding='utf-8') as fh: old_txt = txt = fh.read() if fn == 'version.h': -txt = f'#define RSYNC_VERSION "{version}"\n' +x_re = re.compile(r'^(#define RSYNC_VERSION).*', re.M) +msg = f"Unable to update RSYNC_VERSION in {fn}" +txt = replace_or_die(x_re, r'\1 "%s"' % version, txt, msg) elif '.spec' in fn: for var, val in specvars.items(): x_re = re.compile(r'^%s .*' % re.escape(var), re.M) diff --git a/rsync.1.md b/rsync.1.md index 576dd90b..0c27df4c 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -180,17 +180,16 @@ an absolute or relative path that tries to escape out of the top of the transfer. Also, beginning with version 3.2.5, rsync does two more safety checks of the file list to (1) ensure that no extra source arguments were added into the transfer other than those that the client requested and (2) ensure -that the file list obeys the exclude rules that we sent to the sender. +that the file list obeys the exclude rules that were sent to the sender. -For those that don't yet have a 3.2.5 client rsync, it is safest to do a copy -into a dedicated destination directory for the remote files rather than -requesting the remote content get mixed in with other local content. For -example, doing an rsync copy into your home directory is potentially unsafe on -an older rsync if the remote rsync is being controlled by a bad actor: +For those that don't yet have a 3.2.5 client rsync (or those that want to be +extra careful), it is safest to do a copy into a dedicated destination +directory for the remote files when you don't trust the remote host. For +example, instead of doing an rsync copy into your home directory: > rsync -aiv host1:dir1 ~ -A safer command would be: +Dedicate a "host1-files" dir to the remote content: > rsync -aiv host1:dir1 ~/host1-files diff --git a/uidlist.c b/uidlist.c index 2b81ae87..99a34679 100644 --- a/uidlist.c +++ b/uidlist.c @@ -3,7 +3,7 @@ * * Copyright (C) 1996 Andrew Tridgell * Copyright (C) 1996 Paul Mackerras - * Copyright (C) 2004-2020 Wayne Davison + * Copyright (C) 2004-2022 Wayne Davison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/version.h b/version.h index 7bb1a5c9..61820bba 100644 --- a/version.h +++ b/version.h @@ -1,2 +1,2 @@ -#define RSYNC_VERSION "3.2.5dev" +#define RSYNC_VERSION "3.2.5pre1" #define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 51fd4993 Avoid the getgroups program when cross-compiliing. via e37bfdb4 Make sure sign is consistend in 2 gid comparisons. from 3d7015af A few more minor changes. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 51fd4993baa21f4df4b3b188899bd71fc062a5a7 Author: Wayne Davison Date: Mon Aug 1 09:00:34 2022 -0700 Avoid the getgroups program when cross-compiliing. commit e37bfdb445fc3ec500699fcee7c4ef8608938171 Author: Wayne Davison Date: Mon Aug 1 08:29:15 2022 -0700 Make sure sign is consistend in 2 gid comparisons. --- Summary of changes: configure.ac | 6 +- uidlist.c| 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/configure.ac b/configure.ac index 37241637..d185b2d3 100644 --- a/configure.ac +++ b/configure.ac @@ -625,7 +625,11 @@ fi AC_TYPE_UID_T AC_CHECK_TYPES([mode_t,off_t,size_t,pid_t,id_t]) -AC_TYPE_GETGROUPS +if test "$cross_compiling" = no; then +AC_TYPE_GETGROUPS +else +AC_DEFINE([GETGROUPS_T],[gid_t],[Define to the type of elements in the array set by `getgroups'. Usually this is either `int' or `gid_t'.]) +fi AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_mtimensec, struct stat.st_mtimespec.tv_nsec, diff --git a/uidlist.c b/uidlist.c index 6100b503..2b81ae87 100644 --- a/uidlist.c +++ b/uidlist.c @@ -210,7 +210,7 @@ static int is_in_group(gid_t gid) ngroups = getgroups(ngroups, gidset); /* The default gid might not be in the list on some systems. */ for (n = 0; n < ngroups; n++) { - if (gidset[n] == our_gid) + if ((gid_t)gidset[n] == our_gid) break; } if (n == ngroups) @@ -229,7 +229,7 @@ static int is_in_group(gid_t gid) last_in = gid; for (n = 0; n < ngroups; n++) { - if (gidset[n] == gid) + if ((gid_t)gidset[n] == gid) return last_out = 1; } return last_out = 0; -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 3d7015af A few more minor changes. from 7e5424b8 More improvements to file-list checking https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 3d7015afa223494e3318495c2f5de9cb49229da9 Author: Wayne Davison Date: Mon Aug 1 07:29:44 2022 -0700 A few more minor changes. --- Summary of changes: exclude.c | 21 +++-- 1 file changed, 11 insertions(+), 10 deletions(-) Changeset truncated at 500 lines: diff --git a/exclude.c b/exclude.c index 2d740a83..0100efc7 100644 --- a/exclude.c +++ b/exclude.c @@ -313,13 +313,10 @@ void add_implied_include(const char *arg) if (am_server || old_style_args || list_only || filesfrom_host != NULL) return; if (relative_paths) { - cp = strstr(arg, "/./"); - if (cp) - arg = cp+3; - } else { - if ((cp = strrchr(arg, '/')) != NULL) - arg = cp + 1; - } + if ((cp = strstr(arg, "/./")) != NULL) + arg = cp + 3; + } else if ((cp = strrchr(arg, '/')) != NULL) + arg = cp + 1; arg_len = strlen(arg); if (arg_len) { if (strpbrk(arg, "*[?")) { @@ -359,13 +356,17 @@ void add_implied_include(const char *arg) int found = 0; *p = '\0'; for (ent = implied_filter_list.head; ent; ent = ent->next) { - if (ent != rule && strcmp(ent->pattern, rule->pattern) == 0) + if (ent != rule && strcmp(ent->pattern, rule->pattern) == 0) { found = 1; + break; + } } if (!found) { filter_rule *R_rule = new0(filter_rule); - R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY - | (saw_wild ? FILTRULE_WILD : 0); + R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY; + /* Check if our sub-path has wildcards or escaped backslashes */ + if (saw_wild && strpbrk(rule->pattern, "*[?\\")) + R_rule->rflags |= FILTRULE_WILD; R_rule->pattern = strdup(rule->pattern); R_rule->u.slash_cnt = slash_cnt; R_rule->next = implied_filter_list.head; -- The rsync repository. ___________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
ons.c +++ b/options.c @@ -293,7 +293,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = { DEBUG_WORD(DELTASUM, W_SND|W_REC, "Debug delta-transfer checksumming (levels 1-4)"), DEBUG_WORD(DUP, W_REC, "Debug weeding of duplicate names"), DEBUG_WORD(EXIT, W_CLI|W_SRV, "Debug exit events (levels 1-3)"), - DEBUG_WORD(FILTER, W_SND|W_REC, "Debug filter actions (levels 1-2)"), + DEBUG_WORD(FILTER, W_SND|W_REC, "Debug filter actions (levels 1-3)"), DEBUG_WORD(FLIST, W_SND|W_REC, "Debug file-list operations (levels 1-4)"), DEBUG_WORD(FUZZY, W_REC, "Debug fuzzy scoring (levels 1-2)"), DEBUG_WORD(GENR, W_REC, "Debug generator functions"), -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
This option conflicts with the [`--protect-args`](#opt) option. 0. `--protect-args`, `-s` @@ -3795,7 +3828,7 @@ also warn if a filter rule has trailing whitespace, since an exclude of "foo " (with a trailing space) will not exclude a file named "foo". Exclude and include rules can specify wildcard [PATTERN MATCHING RULES](#) -(similar to shell wilcards) that allow you to match things like a file suffix +(similar to shell wildcards) that allow you to match things like a file suffix or a portion of a filename. A rule can be limited to only affecting a directory by putting a trailing slash @@ -3837,7 +3870,8 @@ it contains: ### FILTER RULES WHEN DELETING -By default a filter rule affects both the sender (as it creates its file list) +By default the include & exclude filter rules affect both the sender +(as it creates its file list) and the receiver (as it creates its file lists for calculating deletions). If no delete option is in effect, the receiver skips creating the delete-related file lists. This two-sided default can be manually overridden so that you are @@ -3846,8 +3880,8 @@ RULES IN DEPTH](#) section. When deleting, an exclude protects a file from being removed on the receiving side while an include overrides that protection (putting the file at risk of -deletion). The default is for a file to be at risk (its safety depends on it -matching a corresponding file from the sender). +deletion). The default is for a file to be at risk -- its safety depends on it +matching a corresponding file from the sender. An example of the two-sided exclude effect can be illustrated by the copying of a C development directory between 2 systems. When doing a touch-up copy, you @@ -3893,8 +3927,13 @@ Here are the available rule prefixes: `hide` and a `protect`. 0. `include, '+'` specifies an include pattern that (by default) is both a `show` and a `risk`. -0. `merge, '.'` specifies a merge-file to read for more rules. -0. `dir-merge, ':'` specifies a per-directory merge-file. +0. `merge, '.'` specifies a merge-file on the client side to read for more +rules. +0. `dir-merge, ':'` specifies a per-directory merge-file. Using this kind of +filter rule requires that you trust the sending side's filter checking, and +thus it disables the receiver's verification of the file-list names against +the filter rules (since only the sender can know for sure if it obeyed all +the filter rules when some are per-dir merged from the sender's files). 0. `hide, 'H'` specifies a pattern for hiding files from the transfer. Equivalent to a sender-only exclude, so `-f'H foo'` could also be specified as `-f'-s foo'`. @@ -3957,7 +3996,7 @@ checking if the pattern contains one of these three wildcard characters: '`*`', must match one character. - a trailing `***` in the pattern is a shorthand that allows you to match a directory and all its contents using a single rule. For example, specifying - "`dir_name/***`" will match both the "dir_name" directory (as if "dir_name/" + "`dir_name/***`" will match both the "dir_name" directory (as if "`dir_name/`" had been specified) and everything in the directory (as if "`dir_name/**`" had been specified). - a backslash can be used to escape a wildcard character, but it is only @@ -4284,7 +4323,7 @@ Given that the files are still in the sender's file list, the [`--prune-empty-dirs`](#opt) option will not judge a directory as being empty even if it contains only files that the transfer rules omitted. -Similarly, a transfer rule does not have any extra affect on which files are +Similarly, a transfer rule does not have any extra effect on which files are deleted on the receiving side, so setting a maximum file size for the transfer does not prevent big files from being deleted. -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via d1e42ffa A few minor fixes. via 36f489c2 Link to rsyncd.conf page server-setup details. from defe2287 Improve the filter intro. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit d1e42ffa1680b65bc878ab5a6cbfd12bf6345b9b Author: Wayne Davison Date: Sun Jun 19 17:21:03 2022 -0700 A few minor fixes. commit 36f489c2117217a277e3307565699289929b9121 Author: Wayne Davison Date: Sun Jun 19 16:55:18 2022 -0700 Link to rsyncd.conf page server-setup details. --- Summary of changes: rsync-ssl.1.md | 5 + rsync.1.md | 10 +- 2 files changed, 10 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/rsync-ssl.1.md b/rsync-ssl.1.md index f3f93718..a6f1e3d3 100644 --- a/rsync-ssl.1.md +++ b/rsync-ssl.1.md @@ -94,6 +94,11 @@ The ssl helper scripts are affected by the following environment variables: > rsync-ssl -aiv rsync://example.com:9874/mod/ dest +## THE SERVER SIDE + +For help setting up an SSL/TLS supporting rsync, see the [instructions in +rsyncd.conf](rsyncd.conf.5#SSL_TLS_Daemon_Setup). + ## SEE ALSO [**rsync**(1)](rsync.1), [**rsyncd.conf**(5)](rsyncd.conf.5) diff --git a/rsync.1.md b/rsync.1.md index 9c149b31..1ab014f1 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -3822,7 +3822,7 @@ existing on the remote host: Aside: this copy could also have been accomplished using the [`-R`](#opt) option (though the 2 commands behave differently if deletions are enabled): -> rsync -aR x/y/file.txt host:/tmp/ +> rsync -aiR x/y/file.txt host:/tmp/ The following command does not need an include of the "x" directory because it is not a part of the transfer (note the traililng slash). Running this command @@ -3833,7 +3833,7 @@ would copy just "`/tmp/x/file.txt`" because the "y" and "z" dirs get excluded: This command would omit the zzz.txt file while copying "x" and everything else it contains: -> rsync -aiv -f'- zzz.txt' x host:/tmp/ +> rsync -ai -f'- zzz.txt' x host:/tmp/ ### FILTER RULES WHEN DELETING @@ -3872,8 +3872,8 @@ Rsync supports old-style include/exclude rules and new-style filter rules. The older rules are specified using [`--include`](#opt) and [`--exclude`](#opt) as well as the [`--include-from`](#opt) and [`--exclude-from`](#opt). These are limited in behavior but they don't require a "-" or "+" prefix. An old-style -exclude rule is turned into a `+ name` filter rule (with no modifiers) and an -old-style include rule is turned into a `- name` filter rule (with no +exclude rule is turned into a "`- name`" filter rule (with no modifiers) and an +old-style include rule is turned into a "`+ name`" filter rule (with no modifiers). Rsync builds an ordered list of filter rules as specified on the command-line @@ -3905,7 +3905,7 @@ Here are the available rule prefixes: Equivalent to a receiver-only exclude, so `-f'P foo'` could also be specified as `-f'-r foo'`. 0. `risk, 'R'` files that match the pattern are not protected. Equivalent to a -receiver-only include, so `-f'P foo'` could also be specified as `-f'+r +receiver-only include, so `-f'R foo'` could also be specified as `-f'+r foo'`. 0. `clear, '!'` clears the current include/exclude list (takes no arg) -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
s are being read from a file (using merge or dir-merge), empty lines +are ignored, as are whole-line comments that start with a '`#`' (filename rules +that contain a hash character are unaffected). Note also that the [`--filter`](#opt), [`--include`](#opt), and [`--exclude`](#opt) options take one rule/pattern each. To add multiple ones, @@ -3780,121 +3919,90 @@ you can repeat the options on the command-line, use the merge-file syntax of the [`--filter`](#opt) option, or the [`--include-from`](#opt) / [`--exclude-from`](#opt) options. -## INCLUDE/EXCLUDE PATTERN RULES - -You can include and exclude files by specifying patterns using the "+", "-", -etc. filter rules (as introduced in the [FILTER RULES](#) section above). The -include/exclude rules each specify a pattern that is matched against the names -of the files that are going to be transferred. These patterns can take several -forms: - -- if the pattern starts with a `/` then it is anchored to a particular spot in - the hierarchy of files, otherwise it is matched against the end of the - pathname. This is similar to a leading `^` in regular expressions. Thus - `/foo` would match a name of "foo" at either the "root of the transfer" (for - a global rule) or in the merge-file's directory (for a per-directory rule). - An unqualified `foo` would match a name of "foo" anywhere in the tree because - the algorithm is applied recursively from the top down; it behaves as if each - path component gets a turn at being the end of the filename. Even the - unanchored "sub/foo" would match at any point in the hierarchy where a "foo" - was found within a directory named "sub". See the section on ANCHORING - INCLUDE/EXCLUDE PATTERNS for a full discussion of how to specify a pattern - that matches at the root of the transfer. -- if the pattern ends with a `/` then it will only match a directory, not a - regular file, symlink, or device. -- rsync chooses between doing a simple string match and wildcard matching by - checking if the pattern contains one of these three wildcard characters: - '`*`', '`?`', and '`[`' . -- a '`*`' matches any path component, but it stops at slashes. -- use '`**`' to match anything, including slashes. -- a '`?`' matches any character except a slash (`/`). -- a '`[`' introduces a character class, such as `[a-z]` or `[[:alpha:]]`. -- in a wildcard pattern, a backslash can be used to escape a wildcard - character, but it is matched literally when no wildcards are present. This - means that there is an extra level of backslash removal when a pattern - contains wildcard characters compared to a pattern that has none. e.g. if - you add a wildcard to "`foo\bar`" (which matches the backslash) you would - need to use "`foo\\bar*`" to avoid the "`\b`" becoming just "b". -- if the pattern contains a `/` (not counting a trailing /) or a "`**`", then it - is matched against the full pathname, including any leading directories. If - the pattern doesn't contain a `/` or a "`**`", then it is matched only against - the final component of the filename. (Remember that the algorithm is applied - recursively so "full filename" can actually be any portion of a path from the - starting directory on down.) -- a trailing "`dir_name/***`" will match both the directory (as if "dir_name/" +### PATTERN MATCHING RULES + +Most of the rules mentioned above take an argument that specifies what the rule +should match. If rsync is recursing through a directory hierarchy, keep in +mind that each pattern is matched against the name of every directory in the +descent path as rsync finds the filenames to send. + +The matching rules for the pattern argument take several forms: + +- If a pattern contains a `/` (not counting a trailing slash) or a "`**`" + (which can match a slash), then the pattern is matched against the full + pathname, including any leading directories within the transfer. If the + pattern doesn't contain a `/` or a "`**`", then it is matched only against + the final component of the filename or pathname. For example, `foo` means + that the final path component must be "foo" while `foo/bar` would match the + last 2 elements of the path (as long as both elements are within the + transfer). +- A pattern that ends with a `/` only matches a directory, not a regular file, + symlink, or device. +- A pattern that starts with a `/` is anchored to the start of the transfer + path instead of the end. For example, `/foo` or `/foo/bar` match only -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 4f741add Fix configure's "signed char" check via 355b81d8 Avoid -pedantic-errors on non-x86 for the moment. from 6f355533 Fix grabbing version value in configure. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 4f741addbd5fd59de2c2655e5a044d6c2fe44aa5 Author: Wayne Davison Date: Sat Jun 18 10:19:57 2022 -0700 Fix configure's "signed char" check When pedantic errors are enabled, SIGNED_CHAR_OK was no longer being set correctly. This would cause the checksum code to use "char" instead of "signed char", and if the default for a "char" was unsigned, the checksum code would fail to compute the right hash values. Fixes bug #317. commit 355b81d8bce3d91c4bc5e86e67d3fdb225eef99e Author: Wayne Davison Date: Sat Jun 18 09:42:16 2022 -0700 Avoid -pedantic-errors on non-x86 for the moment. --- Summary of changes: configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/configure.ac b/configure.ac index 29698bc0..37dbb18a 100644 --- a/configure.ac +++ b/configure.ac @@ -1117,7 +1117,7 @@ else fi AC_CACHE_CHECK([for unsigned char],rsync_cv_SIGNED_CHAR_OK,[ -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char *s = ""]])],[rsync_cv_SIGNED_CHAR_OK=yes],[rsync_cv_SIGNED_CHAR_OK=no])]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char *s = (signed char *)""]])],[rsync_cv_SIGNED_CHAR_OK=yes],[rsync_cv_SIGNED_CHAR_OK=no])]) if test x"$rsync_cv_SIGNED_CHAR_OK" = x"yes"; then AC_DEFINE(SIGNED_CHAR_OK, 1, [Define to 1 if "signed char" is a valid type]) fi -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 6f355533 Fix grabbing version value in configure. via 71090b7e Improve discussion of old-args in advanced usage. from 2ab2ee16 Make md-convert --test work again. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 6f35553372f262b8024918677645cafd649162e0 Author: Wayne Davison Date: Wed Jun 1 17:41:28 2022 -0700 Fix grabbing version value in configure. commit 71090b7e2caefb5894c10b02d34e2c57e4de848b Author: Wayne Davison Date: Sat May 14 16:31:50 2022 -0700 Improve discussion of old-args in advanced usage. --- Summary of changes: configure.ac | 2 +- rsync.1.md | 32 ++-- 2 files changed, 19 insertions(+), 15 deletions(-) Changeset truncated at 500 lines: diff --git a/configure.ac b/configure.ac index 24e383a9..29698bc0 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_CONFIG_SRCDIR([byteorder.h]) AC_CONFIG_HEADER(config.h) AC_PREREQ([2.69]) -PACKAGE_VERSION=`sed 's/.*"\(.*\)".*/\1/' <$srcdir/version.h` +PACKAGE_VERSION=`sed -n 's/.*RSYNC_VERSION.*"\(.*\)".*/\1/p' <$srcdir/version.h` AC_MSG_NOTICE([Configuring rsync $PACKAGE_VERSION]) diff --git a/rsync.1.md b/rsync.1.md index 92030b3b..1e665982 100644 --- a/rsync.1.md +++ b/rsync.1.md @@ -177,20 +177,24 @@ the hostname omitted. For instance, all these work: > rsync -aiv host::modname/file{1,2} host::modname/extra /dest/ > rsync -aiv host::modname/first ::modname/extra{1,2} /dest/ -In a modern rsync, you only need to quote or backslash-escape things like -spaces from the local shell but not also from the remote shell: - -> rsync -aiv host:'a simple file.pdf' /dest/ - -Really old versions of rsync only allowed specifying one remote-source arg, so -it required the remote side to split the args at a space. You can still get -this old-style arg splitting by using the [`--old-args`](#opt) option: - -> rsync -ai --old-args host:'dir1/file1 dir2/file2' /dest -> rsync -ai --old-args host::'modname/dir1/file1 modname/dir2/file2' /dest - -See that option's section for an [environment variable](#RSYNC_OLD_ARGS) that -can be exported to help old scripts. +Really old versions of rsync (2.6.9 and before) only allowed specifying one +remote-source arg, so some people have instead relied on the remote-shell +performing space splitting to break up an arg into multiple paths. Such +unintuitive behavior is no longer supported by default (though you can request +it, as described below). + +Starting in 3.2.4, filenames are passed to a remote shell in such a way as to +preserve the characters you give it. Thus, if you ask for a file with spaces +in the name, that's what the remote rsync looks for: + +> rsync -aiv host:'a simple file.pdf' /dest/ + +If you use scripts that have been written to manually apply extra quoting to +the remote rsync args (or to require remote arg splitting), you can ask rsync +to let your script handle the extra escaping. This is done by either adding +the [`--old-args`](#opt) option to the rsync runs in the script (which requires +a new rsync) or exporting [RSYNC_OLD_ARGS](#)=1 and [RSYNC_PROTECT_ARGS](#)=0 +(which works with old or new rsync versions). ## CONNECTING TO AN RSYNC DAEMON -- The rsync repository. _______________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 2ab2ee16 Make md-convert --test work again. from 1e858e39 Manpage improvements. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 2ab2ee166e673ca815e51d3058e66f4e8c26cc16 Author: Wayne Davison Date: Fri May 6 19:37:40 2022 -0700 Make md-convert --test work again. --- Summary of changes: md-convert | 1 + 1 file changed, 1 insertion(+) Changeset truncated at 500 lines: diff --git a/md-convert b/md-convert index ac3e658d..fb60b093 100755 --- a/md-convert +++ b/md-convert @@ -214,6 +214,7 @@ def find_man_substitutions(): env_subs['VERSION'] = '1.0.0' env_subs['bindir'] = '/usr/bin' env_subs['libdir'] = '/usr/lib/rsync' +tz_offset = 0 else: for fn in (srcdir + 'version.h', 'Makefile'): try: -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
solute path. -The online version of this man page (that includes cross-linking of topics) +The online version of this manpage (that includes cross-linking of topics) is available at <https://download.samba.org/pub/rsync/rrsync.1>. ## DESCRIPTION A user's ssh login can be restricted to only allow the running of an rsync -transfer in one of two easy ways: forcing the running of the rrsync script -or forcing the running of an rsync daemon-over-ssh command. +transfer in one of two easy ways: + +* forcing the running of the rrsync script +* forcing the running of an rsync daemon-over-ssh command. To use the rrsync script, edit the user's `~/.ssh/authorized_keys` file and add a prefix like one of the following (followed by a space) in front of each @@ -47,13 +49,14 @@ ssh-key line that should be restricted: Then, ensure that the rsyncd.conf file is created with one or more module names with the appropriate path and option restrictions. If rsync's [`--config`](rsync.1#dopt) option is omitted, it defaults to `~/rsyncd.conf`. -See the `rsyncd.conf` man page for details of how to configure an rsync daemon. +See the [**rsyncd.conf**(5)](rsyncd.conf.5) manpage for details of how to +configure an rsync daemon. When using rrsync, there can be just one restricted dir per authorized key. A daemon setup, on the other hand, allows multiple module names inside the config file, each one with its own path setting. -The remainder of this man page is dedicated to using the rrsync script. +The remainder of this manpage is dedicated to using the rrsync script. ## OPTIONS @@ -119,11 +122,11 @@ The `~/.ssh/authorized_keys` file might have lines in it like this: ## SEE ALSO -[**rsync**(1)](rsync.1) +[**rsync**(1)](rsync.1), [**rsyncd.conf**(5)](rsyncd.conf.5) ## VERSION -This man page is current for version @VERSION@ of rsync. +This manpage is current for version @VERSION@ of rsync. ## CREDITS diff --git a/version.h b/version.h index f97bb16d..7bb1a5c9 100644 --- a/version.h +++ b/version.h @@ -1 +1,2 @@ -#define RSYNC_VERSION "3.2.4" +#define RSYNC_VERSION "3.2.5dev" +#define MAINTAINER_TZ_OFFSET -7.0 -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.4 created
The annotated tag, v3.2.4 has been created at db2a0aed76cfedeb87179017167c29cc2ab7a1e8 (tag) tagging 0ac7ebceef70417355f25daf9e2fd94e84c49749 (commit) replaces v3.2.4pre4 tagged by Wayne Davison on Fri Apr 15 13:35:46 2022 -0700 - Log - Version 3.2.4. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYlnXIhEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxVUjAKCYbWD6vCGTTr2gfD7jT+vi2/w4JACfbSzT v37HrgyP134caQ7DbRNGFuw= =EeWQ -END PGP SIGNATURE- Michal Ruprich (1): Fix for CVE-2018-25032 in zlib (#306) Simon Deziel (1): systemd: restart daemon on-failure (#302) Wayne Davison (4): Handle linking with a zlib with external read_buf. Add debugging comment about read_buf_(). The latest news. Preparing for release of 3.2.4 Yoichi NAKAYAMA (1): Specify log format to avoid malfunctions and unexpected errors. (#305) --- -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 0ac7ebce Preparing for release of 3.2.4 from 85c56b26 The latest news. https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 0ac7ebceef70417355f25daf9e2fd94e84c49749 Author: Wayne Davison Date: Fri Apr 15 13:31:16 2022 -0700 Preparing for release of 3.2.4 --- Summary of changes: NEWS.md | 4 ++-- packaging/lsb/rsync.spec | 10 +- version.h| 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 72a62780..187f2fdb 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# NEWS for rsync 3.2.4 (UNRELEASED) +# NEWS for rsync 3.2.4 (15 Apr 2022) ## Changes in this version: @@ -4482,7 +4482,7 @@ | RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL| |--||--|-| -| ?? Apr 2022 | 3.2.4 | | 31 | +| 15 Apr 2022 | 3.2.4 | | 31 | | 06 Aug 2020 | 3.2.3 | | 31 | | 04 Jul 2020 | 3.2.2 | | 31 | | 22 Jun 2020 | 3.2.1 | | 31 | diff --git a/packaging/lsb/rsync.spec b/packaging/lsb/rsync.spec index 6c8f3f5c..0bdcd833 100644 --- a/packaging/lsb/rsync.spec +++ b/packaging/lsb/rsync.spec @@ -1,9 +1,9 @@ Summary: A fast, versatile, remote (and local) file-copying tool Name: rsync Version: 3.2.4 -%define fullversion %{version}pre4 -Release: 0.1.pre4 -%define srcdir src-previews +%define fullversion %{version} +Release: 1 +%define srcdir src Group: Applications/Internet License: GPL Source0: https://rsync.samba.org/ftp/rsync/%{srcdir}/rsync-%{fullversion}.tar.gz @@ -79,8 +79,8 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/rsync-ssl/certs %changelog -* Sun Mar 27 2022 Wayne Davison -Released 3.2.4pre4. +* Fri Apr 15 2022 Wayne Davison +Released 3.2.4. * Fri Mar 21 2008 Wayne Davison Added installation of /etc/xinetd.d/rsync file and some commented-out diff --git a/version.h b/version.h index 4ce61d8f..f97bb16d 100644 --- a/version.h +++ b/version.h @@ -1 +1 @@ -#define RSYNC_VERSION "3.2.4pre4" +#define RSYNC_VERSION "3.2.4" -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - annotated tag v3.2.4pre4 created
The annotated tag, v3.2.4pre4 has been created at 5f6f11d2bb4da2ea787d9a428613e01b04bb6033 (tag) tagging d821e4cbfbc66848cdf91a336af26fdb89dd9a8f (commit) replaces v3.2.4pre3 tagged by Wayne Davison on Sun Mar 27 15:00:06 2022 -0700 - Log - Version 3.2.4pre4. -BEGIN PGP SIGNATURE- iG8EABECAC8WIQQASMiwJtTJbw5YnC9shZ+xS5aoxQUCYkDeZhEcd2F5bmVkQHNh bWJhLm9yZwAKCRBshZ+xS5aoxdb7AKC9YoSYJ8WwR4Fg8b+FRWNkR/qQJACfZq5d TuX3Em5/vgelM9LsLmliKp4= =/RuP -END PGP SIGNATURE- Sam Mikes (2): Fix wording in RSYNC_PORT section (#293) Extract unlink_and_reopen from copy_file (#294) Wayne Davison (16): Specify the rsync that lsh.sh should run. [buildall] Add a couple more `--rsync-path` opts to the test. [buildall] Add a CAUTION message to --debug=FILTER for trailing whitespace. Build Cygwin on windows-2022 with newer python. [buildall] Change usage (--version) output to note when ASM isn't really being used. Make asm use more selectable Test newer FreeBSD. Use ac_includes_default in largefile support test. Add FALLTHROUGH comment. Also ignore a root-level rrsync file. Some word fixes. Rename compare-dest test. Combine some alt-dest tests. Some `--write-device` fixes. Add new & improved `--copy-devices` option. Preparing for release of 3.2.4pre4 --- -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
e) { unsigned dist; /* distance of matched string */ int lc; /* match length or unmatched char (if dist == 0) */ -unsigned lx = 0;/* running index in l_buf */ +unsigned sx = 0;/* running index in sym_buf */ unsigned code; /* the code to send */ int extra; /* number of extra bits to send */ -if (s->last_lit != 0) do { -dist = s->d_buf[lx]; -lc = s->l_buf[lx++]; +if (s->sym_next != 0) do { +dist = s->sym_buf[sx++] & 0xff; +dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; +lc = s->sym_buf[sx++]; if (dist == 0) { send_code(s, lc, ltree); /* send a literal byte */ Tracecv(isgraph(lc), (stderr," '%c' ", lc)); @@ -1095,11 +1074,10 @@ local void compress_block(s, ltree, dtree) } } /* literal or match pair ? */ -/* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ -Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, - "pendingBuf overflow"); +/* Check that the overlay between pending_buf and sym_buf is ok: */ +Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); -} while (lx < s->last_lit); +} while (sx < s->sym_next); send_code(s, END_BLOCK, ltree); } -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
, 0600)) < 0) { rsyserr(FERROR_XFER, errno, "open %s", full_fname(backupptr)); unmake_file(back_file); back_file = NULL; - close(fd); goto cleanup; } fnamecmp_type = FNAMECMP_BACKUP; @@ -1945,7 +1947,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, write_sum_head(f_out, NULL); else if (sx.st.st_size <= 0) { write_sum_head(f_out, NULL); - close(fd); } else { if (generate_and_send_sums(fd, sx.st.st_size, f_out, f_copy) < 0) { rprintf(FWARNING, @@ -1953,10 +1954,11 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, fnamecmp); write_sum_head(f_out, NULL); } - close(fd); -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
nable_asm" != x"yes"; then - enable_asm=no +if test x"$enable_md5_asm" != x"yes"; then + enable_md5_asm=no fi else AC_MSG_RESULT(no) fi -ASM= +MD5_ASM= -AC_MSG_CHECKING([whether to enable ASM optimizations]) -AC_ARG_ENABLE(asm, -AS_HELP_STRING([--enable-asm],[enable/disable to control ASM optimizations])) +AC_MSG_CHECKING([whether to enable MD5 ASM optimizations]) +AC_ARG_ENABLE(md5-asm, +AS_HELP_STRING([--enable-md5-asm],[enable/disable to control MD5 ASM optimizations])) -if test x"$enable_asm" = x""; then +if test x"$enable_md5_asm" = x""; then case "$host_os" in *linux*) ;; - *) enable_asm=no ;; + *) enable_md5_asm=no ;; esac fi -if test x"$enable_asm" != x"no"; then +if test x"$enable_md5_asm" != x"no"; then if test x"$host_cpu" = x"x86_64" || test x"$host_cpu" = x"amd64"; then - ASM="$host_cpu" -elif test x"$enable_asm" = x"yes"; then + MD5_ASM="$host_cpu" +elif test x"$enable_md5_asm" = x"yes"; then AC_MSG_RESULT(unavailable) AC_MSG_ERROR(The ASM optimizations are currently x86_64|amd64 only. -Omit --enable-asm to continue without it.) +Omit --enable-md5-asm to continue without it.) fi fi -if test x"$ASM" != x""; then -AC_MSG_RESULT([yes ($ASM)]) -AC_DEFINE(HAVE_ASM, 1, [Define to 1 to enable ASM optimizations]) -ASM='$(ASM_'"$ASM)" +if test x"$MD5_ASM" != x""; then +AC_MSG_RESULT([yes ($MD5_ASM)]) +AC_DEFINE(USE_MD5_ASM, 1, [Define to 1 to enable MD5 ASM optimizations]) +MD5_ASM='$(MD5_ASM_'"$MD5_ASM)" +else +AC_MSG_RESULT(no) +fi + +AC_SUBST(MD5_ASM) + +ROLL_ASM= + +AC_MSG_CHECKING([whether to enable rolling-checksum ASM optimizations]) +AC_ARG_ENABLE(roll-asm, +AS_HELP_STRING([--enable-roll-asm],[enable/disable to control rolling-checksum ASM optimizations (requires --enable-roll-simd)])) + +if test x"$ROLL_SIMD" = x""; then +enable_roll_asm=no +fi + +if test x"$enable_roll_asm" = x"yes"; then +ROLL_ASM="$host_cpu" +AC_MSG_RESULT([yes ($ROLL_ASM)]) +AC_DEFINE(USE_ROLL_ASM, 1, [Define to 1 to enable rolling-checksum ASM optimizations (requires --enable-roll-simd)]) +ROLL_ASM='$(ROLL_ASM_'"$ROLL_ASM)" else AC_MSG_RESULT(no) fi -AC_SUBST(ASM) +AC_SUBST(ROLL_ASM) AC_MSG_CHECKING([whether to enable xxhash checksum support]) AC_ARG_ENABLE([xxhash], @@ -1421,10 +1442,6 @@ esac AC_CONFIG_FILES([Makefile lib/dummy zlib/dummy popt/dummy shconfig]) AC_OUTPUT -if test "$enable_openssl" = yes && test "$enable_asm" = yes; then -echo "*** Ignoring --enable-asm option -- using openssl for MD5 checksums ***" -fi - AC_MSG_RESULT() AC_MSG_RESULT([rsync $PACKAGE_VERSION configuration successful]) AC_MSG_RESULT() diff --git a/lib/md5-asm-x86_64.S b/lib/md5-asm-x86_64.S index 383f193a..3737058f 100644 --- a/lib/md5-asm-x86_64.S +++ b/lib/md5-asm-x86_64.S @@ -27,7 +27,7 @@ #include "config.h" #include "md-defines.h" -#if !defined USE_OPENSSL && CSUM_CHUNK == 64 +#ifdef USE_MD5_ASM /* { */ #ifdef __APPLE__ #define md5_process_asm _md5_process_asm @@ -698,4 +698,4 @@ md5_process_asm: pop %rbp ret -#endif /* !USE_OPENSSL ... */ +#endif /* } USE_MD5_ASM */ diff --git a/lib/md5.c b/lib/md5.c index 41f158b8..07fd6147 100644 --- a/lib/md5.c +++ b/lib/md5.c @@ -20,7 +20,7 @@ #include "rsync.h" -#ifndef USE_OPENSSL +#if !defined USE_OPENSSL || USE_MD5_ASM /* { */ void md5_begin(md_context *ctx) { ctx->A = 0x67452301; @@ -148,7 +148,10 @@ static void md5_process(md_context *ctx, const uchar data[CSUM_CHUNK]) ctx->D += D; } -#if defined HAVE_ASM && CSUM_CHUNK == 64 +#ifdef USE_MD5_ASM +#if CSUM_CHUNK != 64 +#error The MD5 ASM code does not support CSUM_CHUNK != 64 +#endif extern void md5_process_asm(md_context *ctx, const void *data, size_t num); #endif @@ -176,20 +179,20 @@ void md5_update(md_context *ctx, const uchar *input, uint32 length) left = 0; } -#if defined HAVE_ASM && CSUM_CHUNK == 64 +#ifdef USE_MD5_ASM /* { */ if (length >= CSUM_CHUNK) { uint32 chunks = length / CSUM_CHUNK; md5_process_asm(ctx, input, chunks); length -= chunks * CSUM_CHUNK; input += chunks * CSUM_CHUNK; } -#else +#else /* } { */ while (length >= CSUM_CHUNK) { md5_process(ctx, input); length -= CSUM_CHUNK; input += CSUM_CHUNK; } -#endif +#endif /* } */ if (length) memcpy(ctx->buffer + left, input, length); @@ -221,9 +224,9 @@ void md5_result(md_context *ctx, uchar digest[MD5_DIGEST_LEN]) SIVALu(digest, 8, ctx->C); SIVALu(digest, 12, ctx->D); } -#endif +#endif /* } */ -#ifdef TEST_MD5 +#ifdef TEST_MD5 /* { */ void get_md5(uchar *out, const uchar *input, int n) { @@ -317,4 +320,4 @@ int main(int argc, char *argv[]) return 0; } -#endif -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
ronment variable is not read by rsync, but is instead set in its sub-environment when rsync is running the remote shell in combination with a daemon connection. This allows a script such as [`rsync-ssl`](rsync-ssl.1) to be able to know the port number that the user diff --git a/usage.c b/usage.c index db13535f..c8c4f025 100644 --- a/usage.c +++ b/usage.c @@ -144,7 +144,7 @@ static void print_info_flags(enum logcode f) #endif "SIMD", -#ifndef HAVE_ASM +#if !defined HAVE_ASM || defined USE_OPENSSL "no " #endif "asm", -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 48e70055 Add a couple more `--rsync-path` opts to the test. [buildall] from 2b3e6881 Specify the rsync that lsh.sh should run. [buildall] https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 48e700555424d535da30f6118b3c753502f66a87 Author: Wayne Davison Date: Thu Jan 20 10:51:13 2022 -0800 Add a couple more `--rsync-path` opts to the test. [buildall] --- Summary of changes: testsuite/00-hello.test | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/testsuite/00-hello.test b/testsuite/00-hello.test index 97feca95..ebd06836 100644 --- a/testsuite/00-hello.test +++ b/testsuite/00-hello.test @@ -47,7 +47,7 @@ copy_weird '-ais' '' 'lh:' echo test6 touch "$fromdir/one" "$fromdir/two" -(cd "$fromdir" && $RSYNC -ai --old-args lh:'one two' "$todir/") +(cd "$fromdir" && $RSYNC -ai --old-args --rsync-path="$RSYNC" lh:'one two' "$todir/") if [ ! -f "$todir/one" ] || [ ! -f "$todir/two" ]; then test_fail "old-args copy of 'one two' failed" fi @@ -55,7 +55,7 @@ fi echo test7 rm "$todir/one" "$todir/two" -(cd "$fromdir" && RSYNC_OLD_ARGS=1 $RSYNC -ai lh:'one two' "$todir/") +(cd "$fromdir" && RSYNC_OLD_ARGS=1 $RSYNC -ai --rsync-path="$RSYNC" lh:'one two' "$todir/") # The script would have aborted on error, so getting here means we've won. exit 0 -- The rsync repository. ___ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs
[SCM] The rsync repository. - branch master updated
The branch, master has been updated via 2b3e6881 Specify the rsync that lsh.sh should run. [buildall] from cc832943 Preparing for release of 3.2.4pre3 https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log - commit 2b3e68814b5a8f650b4813057ed891c846134d0a Author: Wayne Davison Date: Thu Jan 20 09:00:01 2022 -0800 Specify the rsync that lsh.sh should run. [buildall] --- Summary of changes: testsuite/00-hello.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/testsuite/00-hello.test b/testsuite/00-hello.test index e9477182..97feca95 100644 --- a/testsuite/00-hello.test +++ b/testsuite/00-hello.test @@ -29,7 +29,7 @@ append_line test1 checkit "$RSYNC -ai '$fromdir/' '$todir/'" "$fromdir" "$todir" copy_weird() { -checkit "$RSYNC $1 \"$2$fromdir/$weird_name/\" \"$3$todir/$weird_name\"" "$fromdir" "$todir" +checkit "$RSYNC $1 --rsync-path='$RSYNC' '$2$fromdir/$weird_name/' '$3$todir/$weird_name'" "$fromdir" "$todir" } append_line test2 -- The rsync repository. _______ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs