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; also set sender_keeps_checksum in
the daemon-as-sender path, and skip the content-based basis match for a
hard-linked non-regular file, so %C and --compare-dest cannot read a
checksum slot that was never allocated
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, and widen that wrapper's gate from
a non-chrooted daemon to any non-chrooted receiver as upstream does, so a
parent component raced into a symlink can no longer place --relative
directories outside the destination over ssh either
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 restrict the hostname it
interpolates into them, refuse a shell-active RSYNC_CONNECT_PROG host, and
widen the remote-shell safe_arg() escape set