Skip to content

Commit

Permalink
Merge branch 'WayneD:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
twojstaryzdomu authored Jan 11, 2022
2 parents aed6235 + 635d8c0 commit 17c7806
Show file tree
Hide file tree
Showing 45 changed files with 319 additions and 206 deletions.
132 changes: 83 additions & 49 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,23 @@

## Changes in this version:

### OUTPUT CHANGES:
### BEHAVIOR CHANGES:

- A new form of arg protection was added that works similarly to the older
`--protect-args` (`-s`) option but in a way that avoids breaking things like
rrsync (the restricted rsync script): rsync now uses backslash escaping for
sending "shell-active" characters to the remote shell. This includes spaces,
so fetching a remote file via a simple quoted filename value now works by
default without any extra quoting:

```shell
rsync -aiv host:'a simple file.pdf' .
```

Wildcards are not escaped in filename args, but they are escaped in options
like the `--suffix` and `--usermap` values. If your rsync script depends on
the old arg-splitting behavior, either run it with the `--old-args` option
or `export RSYNC_OLD_ARGS=1` in the script's environment.

- A long-standing bug was preventing rsync from figuring out the current
locale's decimal point character, which made rsync always output numbers
Expand All @@ -30,11 +46,14 @@

### BUG FIXES:

- Fixed a bug with `--inplace` + `--sparse` where the destination file could
get reconstructed with bogus data. This bug can be worked-around in older
rsync versions by also specifying `--no-W -M--no-W`. When running 3.2.4 or
newer for your copy, rsync now sends `--no-W` to the remote rsync in such a
scenario (just in case the remote rsync is a version with this bug).
- Fixed a bug with `--inplace` + `--sparse` (and a lack of `--whole-file`)
where the destination file could get reconstructed with bogus data. Since
the bug can also be avoided by using (the seemingly redundant) `--no-W` on
the receiving side, the latest rsync will now send `--no-W` to a remote
receiver when this option combination occurs. If your client rsync is not
new enough to do this for you (or if you're just paranoid), you can manually
specify `--no-W -M--no-W` (when not using `--whole-file`) to make sure the
bug is avoided.

- Fixed a bug with `--mkpath` if a single-file copy specifies an existing
destination dir with a non-existing destination filename.
Expand All @@ -47,9 +66,9 @@
or it is skipped. Fixes a crash that could occur when the size changes to 0
in the middle of the send negotiations.

- When dealing with a special file in an alt-dest hierarchy, rsync now checks
the non-permissions mode bits to ensure that the 2 special files are really
the same.
- When dealing with special files (see `--specials`) in an alt-dest hierarchy,
rsync now checks the non-permission mode bits to ensure that the 2 special
files are really the same before hard-linking them together.

- Fixed a bug where `--delay-updates` with stale partial data could cause a
file to fail to update.
Expand All @@ -58,12 +77,16 @@
should only have been output given `--verbose` or `--itemize-changes`.

- Avoid a weird failure if you run a local copy with a (useless) `--rsh`
option that contains a `V`.
option that contains a `V` in the command.

- Fixed a long-standing compression bug where the compression level of the
first file transferred affected the level for all future files. Also, the
per-file compression skipping has apparently not worked in a very long time
(I checked back to 2.6.4), so it is now documented as being ineffective.
per-file compression skipping has apparently never worked, so it is now
documented as being ineffective.

- Improved how the `--stop-at`, `--stop-after`, and `--time-limit` options
check to see if the allowed time is over, which should make rsync exit more
consistently.

### ENHANCEMENTS:

Expand All @@ -83,7 +106,8 @@
- The rsync daemon can now handle a client address with an implied "%scope"
suffix.

- Added support for `--atimes` on macOS and fixed using using it without `-t`.
- Added support for `--atimes` on macOS and fixed a bug where it wouldn't work
without `--times`.

- Rsync can now update the xattrs on a read-only file when your user can
temporarily add user-write permission to the file. (It always worked for a
Expand All @@ -92,8 +116,8 @@
- Rsync can now work around an `--inplace` update of a file that is being
refused due to the Linux fs.protected_regular sysctl setting.

- When `--chown`, `--usermap`, or `--groupmap` is used, rsync now implies
the appropriate `--owner` and/or `--group` option.
- When `--chown`, `--usermap`, or `--groupmap` is specified, rsync now makes
sure that the appropriate `--owner` and/or `--group` option is enabled.

- Added the `--info=NONREG` setting to control if rsync should warn about
non-regular files in the transfer. This is enabled by default (keeping the
Expand All @@ -102,7 +126,7 @@

- More ASM optimizations from Shark64.

- Transformed support/rrsync into a python script with improvements:
- Transformed rrsync into a python script with improvements:
- Security has been beefed up.
- The known rsync options were updated to include recent additions.
- Make rrsync reject `-L`, `-K`, & `-k` by default to make it harder to
Expand All @@ -115,33 +139,34 @@
options on the server side.
- The log format has been tweaked slightly to add seconds to the timestamp
and to output the command executed as a tuple (making the args clearer).
- An rrsync.1 manpage was added.
- An rrsync.1 man page was added (in the support dir with rrsync).

- Added options to support/lsh to allow the rrsync script to be easily tested.
- Added options to the lsh script to facilitate rrsync testing. (See the
support dir.)

- Transformed support/atomic-rsync into a python script and added the ability
to ignore one or more non-zero exit codes. By default, it now ignores code
24 (file vanished).
- Transformed the atomic-rsync script into a python script and added the
ability to ignore one or more non-zero exit codes. By default, it now
ignores code 24, the file-vanished exit code. (See the support dir.)

- Improved support/rsync-no-vanished wrapper script to not join stdout &
stderr together.
- Transformed the munge-symlinks script into python. (See the support dir.)

- Transformed support/munge-symlinks into a python script.
- Improved the rsync-no-vanished script to not join stdout & stderr together.
(See the support dir.)

- Work around a glibc bug where lchmod() breaks in a chroot w/o /proc mounted.

- Try to support a client that sent a remote rsync a wacko stderr file handle
(such as an older File::RsyncP perl library used by BackupPC).

- Some manpage improvements.
- Some man page improvements.

### PACKAGING RELATED:

- Give configure the `--with-rrsync` option if you want `make install` to
install the (now python3) rrsync script and its (new) man page.
install the (now python3) rrsync script and its new man page.

- If the rrsync script is installed, make its package depend on python3 and
(suggested but not required) the python3 braceexpand lib.
- If the rrsync script is installed, its package should be changed to depend
on python3 and the (suggested but not mandatory) python3 braceexpand lib.

- When creating a package from a non-release version (w/o a git checkout), the
packager can elect to create git-version.h and define RSYNC_GITVER to the
Expand All @@ -153,19 +178,21 @@

- Made SIMD & ASM configure default to "no" on non-Linux hosts due to various
reports of problems on NetBSD & macOS hosts. These tests were also tweaked
to support a host_cpu of amd64 in addition to x86_64.
to allow enabling the feature on a host_cpu of amd64 (was only x86_64).

- Fixed configure to not fail at the SIMD check when cross-compiling.

- Compile the C files with `-pedantic-errors` when possible so that we get
warned about an overflowed static initialization (among other things).
- Compile the C files with `-pedantic-errors` (when possible) so that we will
get warned if a static initialization overflows in the future (among other
things).

- Added a SECURITY.md file.

### DEVELOPER RELATED:

- Made it easier to write rsync tests that diff the output while also checking
the status code, and used the idiom to improve the existing tests.
the status code, and used the idiom to improve the existing tests. (See the
`checkdiff` and `checkdiff2` idioms in the `testsuite/*.test` files.

- The packaging scripts & related python lib got some minor enhancements.

Expand All @@ -176,7 +203,12 @@
- Improve the logic in compat.c so that we don't need to try to remember to
sprinkle `!local_server` exceptions throughout the protocol logic.

- One more C99 Flexible Array improvement (started in the last release).
- One more C99 Flexible Array improvement (started in the last release) and
make use of the C99 `%zd` format string when printing size_t values (when
possible).

- Use mallinfo2() instead of mallinfo(), when available.


------------------------------------------------------------------------------
<a name="3.2.3"></a>
Expand Down Expand Up @@ -649,7 +681,8 @@

- Don't output about a new backup dir without appropriate info verbosity.

- Fixed some issues with the sort functions in support/rsyncstats script.
- Fixed some issues with the sort functions in the rsyncstats script (in the
support dir).

- Added a way to specify daemon config lists (e.g. users, groups, etc) that
contain spaces (see `auth users` in the latest rsyncd.conf manpage).
Expand Down Expand Up @@ -860,7 +893,7 @@
non-bundled zlib. See the `--new-compress` and `--old-compress` options in
the manpage.

- Added the support/rsync-no-vanished wrapper script.
- Added the rsync-no-vanished shell script. (See the support dir.)

- Made configure more prominently mention when we failed to find yodl (in case
the user wants to be able to generate manpages from `*.yo` files).
Expand Down Expand Up @@ -1193,7 +1226,7 @@

- Fix some issues with the post-processing of the man pages.

- Fixed the user home-dir handling in the support/lsh script.
- Fixed the user home-dir handling in the lsh script. (See the support dir.)

- Some minor manpage improvements.

Expand Down Expand Up @@ -1311,10 +1344,10 @@
reject an attempt to supply one (can configure `--with-included-popt` if
your system's popt library doesn't yet have this fix).

- A couple minor option tweaks to the support/rrsync script, and also some
regex changes that make vim highlighting happier.
- A couple minor option tweaks to the rrsync script, and also some regex
changes that make vim highlighting happier. (See the support dir.)

- Fixed some issues in the support/mnt-excl script.
- Fixed some issues in the mnt-excl script. (See the support dir.)

- Various manpage improvements.

Expand Down Expand Up @@ -1524,9 +1557,9 @@

### ENHANCEMENTS:

- Made the support/atomic-rsync script able to perform a fully atomic update
of the copied hierarchy when the destination is setup using a particular
symlink idiom.
- Made the atomic-rsync script able to perform a fully atomic update of the
copied hierarchy when the destination is setup using a particular symlink
idiom. (See the support dir.)

------------------------------------------------------------------------------
<a name="3.0.4"></a>
Expand Down Expand Up @@ -1794,8 +1827,9 @@

- Fixed the inclusion of per-dir merge files from implied dirs.

- Fixed the support/rrsync script to work with the latest options that rsync
sends (including its flag-specifying use of `-e` to the server).
- Fixed the rrsync script to work with the latest options that rsync sends,
including its flag-specifying use of `-e` to the server. (See the support
dir.)

### ENHANCEMENTS:

Expand Down Expand Up @@ -2799,10 +2833,10 @@
- Made the `max verbosity` setting in the rsyncd.conf file settable on a
per-module basis (which now matches the documentation).

- The support/rrsync script has been upgraded to verify the args of options
that take args (instead of rejecting any such options). The script was also
changed to try to be more secure and to fix a problem in the parsing of a
pull operation that has multiple sources.
- The rrsync script has been upgraded to verify the args of options that take
args (instead of rejecting any such options). It was also changed to try to
be more secure and to fix a problem in the parsing of a pull operation that
has multiple source args. (See the support dir.)

- Improved the documentation that explains the difference between a normal
daemon transfer and a daemon-over remote-shell transfer.
Expand Down Expand Up @@ -4425,7 +4459,7 @@

| RELEASE DATE | VER. | DATE OF COMMIT\* | PROTOCOL |
|--------------|--------|------------------|-------------|
| ?? Sep 2020 | 3.2.4 | | 31 |
| ?? Jan 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 |
Expand Down
2 changes: 1 addition & 1 deletion access.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Routines to authenticate access to a daemon (hosts allow/deny).
*
* Copyright (C) 1998 Andrew Tridgell
* Copyright (C) 2004-2020 Wayne Davison
* Copyright (C) 2004-2021 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
Expand Down
2 changes: 1 addition & 1 deletion acls.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (C) 1996 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2006-2020 Wayne Davison
* Copyright (C) 2006-2021 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
Expand Down
2 changes: 1 addition & 1 deletion backup.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Backup handling code.
*
* Copyright (C) 1999 Andrew Tridgell
* Copyright (C) 2003-2020 Wayne Davison
* Copyright (C) 2003-2021 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
Expand Down
2 changes: 1 addition & 1 deletion clientname.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (C) 1992-2001 Andrew Tridgell <[email protected]>
* Copyright (C) 2001, 2002 Martin Pool <[email protected]>
* Copyright (C) 2002-2020 Wayne Davison
* Copyright (C) 2002-2021 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
Expand Down
2 changes: 1 addition & 1 deletion clientserver.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (C) 1998-2001 Andrew Tridgell <[email protected]>
* Copyright (C) 2001-2002 Martin Pool <[email protected]>
* Copyright (C) 2002-2020 Wayne Davison
* Copyright (C) 2002-2021 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
Expand Down
2 changes: 1 addition & 1 deletion compat.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*
* Copyright (C) Andrew Tridgell 1996
* Copyright (C) Paul Mackerras 1996
* 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
Expand Down
2 changes: 1 addition & 1 deletion flist.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Copyright (C) 1996 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <[email protected]>
* Copyright (C) 2002-2020 Wayne Davison
* Copyright (C) 2002-2021 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
Expand Down
2 changes: 1 addition & 1 deletion generator.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2002 Martin Pool <[email protected]>
* Copyright (C) 2003-2020 Wayne Davison
* Copyright (C) 2003-2021 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
Expand Down
2 changes: 1 addition & 1 deletion ifuncs.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* Inline functions for rsync.
*
* Copyright (C) 2007-2020 Wayne Davison
* Copyright (C) 2007-2021 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
Expand Down
2 changes: 1 addition & 1 deletion io.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Copyright (C) 1996-2001 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <[email protected]>
* Copyright (C) 2003-2020 Wayne Davison
* Copyright (C) 2003-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
Expand Down
2 changes: 1 addition & 1 deletion itypes.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* Inline functions for rsync.
*
* Copyright (C) 2007-2020 Wayne Davison
* Copyright (C) 2007-2021 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
Expand Down
2 changes: 1 addition & 1 deletion latest-year.h
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#define LATEST_YEAR "2020"
#define LATEST_YEAR "2022"
2 changes: 1 addition & 1 deletion lib/sysxattrs.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Extended attribute support for rsync.
*
* Copyright (C) 2004 Red Hat, Inc.
* Copyright (C) 2003-2019 Wayne Davison
* Copyright (C) 2003-2020 Wayne Davison
* Written by Jay Fenlason.
*
* This program is free software; you can redistribute it and/or modify
Expand Down
Loading

0 comments on commit 17c7806

Please sign in to comment.