mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-08-03 01:06:58 -04:00
Adds .github/workflows/ubuntu-version-mix.yml (ubuntu-latest) and a per-release manifest testsuite/expect/rsync_<ver>.expect for each of the nine peers. The workflow builds the current rsync, then runs the two- sided suite against every old binary over both the pipe and --use-tcp daemon transports. All peers run in a SINGLE looped job (not a matrix) so the PR shows one check line; each peer/transport is a foldable log group and a failure annotates which one broke. A new phony `check-progs` target builds rsync plus the test helper programs and check symlinks without running the suite -- the build half of `make check` -- so the workflow's direct runtests.py invocation has the helpers it needs. Notable expected results encoded in the manifests: - The four May-2026 security tests xfail against every released peer: the suite demonstrates each release is vulnerable to those findings while current master is fixed. - symlink-dirlink-basis xfails on 3.4.0/3.4.1 (issue #715: their secure_relative_open O_NOFOLLOW-confines the basedir, breaking a -K dir-symlink update; current master fixes it with secure_basis_open). - Older peers carry more xfails for options/negotiation they lack; 2.6.0 (protocol 27) fails most daemon tests. reverse-daemon-delta passes against all peers, confirming backward compat down to 2004. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
50 lines
2.4 KiB
Plaintext
50 lines
2.4 KiB
Plaintext
# Expected outcomes for current rsync (client/driver) <-> rsync 3.1.3 peer
|
|
# (daemon / remote-shell server), used by runtests.py --expect-result.
|
|
#
|
|
# Format: "<testname> <pass|skip|fail|xfail>", '#' comments ignored. The listed
|
|
# tests ARE the run set. outcome meanings:
|
|
# pass - must succeed
|
|
# skip - must skip (exit 77)
|
|
# xfail - expected to fail: a known, benign old-peer limitation or an
|
|
# unpatched-old-peer vulnerability (documented per line below)
|
|
# fail - expected to fail, flagged for investigation (not understood / may
|
|
# be a current-side bug)
|
|
# fail and xfail are equivalent for pass/fail accounting; the label documents
|
|
# why. An UNEXPECTED pass (xpass) of an xfail/fail line fails the run, which is
|
|
# the signal to revisit this manifest (e.g. an old-peer gap got closed).
|
|
#
|
|
# daemon-access-ip and daemon-chroot-acl are intentionally omitted: they need a
|
|
# real TCP peer and would skip/run differently by transport.
|
|
|
|
# --- two-sided tests that pass against a 3.1.3 peer ---
|
|
00-hello pass
|
|
reverse-daemon-delta pass # old client -> current daemon (backward-compat: delta+compress, both directions)
|
|
alt-dest pass
|
|
bare-do-open-symlink-race pass
|
|
batch-mode pass
|
|
chmod-option pass
|
|
daemon-access pass
|
|
daemon-auth pass
|
|
daemon-config pass
|
|
daemon-exec pass
|
|
daemon-filter pass
|
|
daemon-gzip-download pass
|
|
daemon-gzip-upload pass
|
|
daemon-munge pass
|
|
exclude pass
|
|
files-from pass
|
|
hardlinks pass
|
|
ssh-basic pass
|
|
symlink-dirlink-basis pass
|
|
|
|
# --- version feature/option gaps in 3.1.3 ---
|
|
daemon xfail # exercises -U/--atimes etc. unknown to 3.1.3 (server errors)
|
|
daemon-refuse xfail # daemon refuse/option semantics differ (connection reset)
|
|
daemon-refuse-compress xfail # pre-zstd compress negotiation; no --compress refuse error
|
|
|
|
# --- May-2026 security fixes absent in 3.1.3 (peer is vulnerable) ---
|
|
alt-dest-symlink-race xfail # --link-dest basis lookup follows basedir symlink (escape)
|
|
chdir-symlink-race xfail # chmod escape via cd symlink during chdir
|
|
copy-dest-source-symlink xfail # copy_file source reads /outside via cd symlink (poison)
|
|
sender-flist-symlink-leak xfail # sender flist follows cd symlink, leaks outside paths
|