CVE-2026-70461: count a trailing backslash when sizing the implied-include
filter rule, so a --files-from entry ending in a backslash can no longer
write one attacker-controlled byte past the rule's heap allocation
CVE-2026-70456: reserve the slot read_args() needs for its trailing NULL, so
a peer argument count landing exactly on maxargs cannot write one pointer
past the argv allocation
CVE-2026-70458: refuse FLAG_HLINKED when hard links are not in use and on a
directory entry, so a peer cannot displace the checksum slot through
hard-link extras that were never reserved; gate the hard-link basis check on
S_ISREG(file->mode) so a hard-linked symlink or device cannot read a checksum
slot it never had; also set sender_keeps_checksum in the daemon-as-sender
path so %C cannot log adjacent heap
CVE-2026-70462: reject a non-positive MSG_IO_TIMEOUT from the peer and cap it
at 24 hours, and make set_io_timeout()'s arithmetic overflow-safe, so a
crafted server can neither disable the client's --timeout nor spin it at 100%
CPU on a negative select() timeout
CVE-2026-70453: bound the hash_search() chain walk at MAX_CHAIN_LEN, so a
basis file whose weak checksums all collide cannot drive an
O(file_size * chain_length) scan
CVE-2026-53785: create each implied parent directory through do_mkdir_at()
against a held O_NOFOLLOW directory fd, so a parent component raced into a
symlink can no longer place --relative directories outside the destination
CVE-2026-53794: reject --max-alloc=0, which disabled the per-allocation size
cap entirely instead of enforcing a zero one
CVE-2026-53790: shell-escape %VAR% expansions for their quoting context in
the daemon's exec hooks and refuse a peer value holding shell syntax, quote
the program names the rsync-ssl helper execs, and widen the remote-shell
safe_arg() escape set