Security and privacy
- Directories are kept inside
$topDirectoryonce symbolic links are
followed, not only as written. A user who can create links in their own
tree could previously point the Add Torrent base directory, a datadir move,
the httprpc default directory, AutoTools' finished and watch directories,
unpack's output directory or create's source at a link leading outside it,
and rtorrent or the plugin then wrote, moved, extracted or hashed data
there. - The Add Torrent base directory is validated before anything reaches
rtorrent: a value no filesystem can hold (a pasted URL or magnet link) is
refused instead of loading a download that can never start, and a plain
/nameis read as a folder under the download area. - External links decode special-scheme hosts before checking them, so RSS and
lookat no longer store links whose encoded host the browser refuses. - A task whose pid file reads as 1 is no longer killed as init's children.
- The log warns about PHP below 8.0 and rTorrent below 0.16.27, which
carries a fix for a buffer overflow in parsing a DNS reply.
Fixes
- Torrent names and paths that are not UTF-8 keep their bytes: add-torrent
notifications show them as\xNNinstead of�, filesystem shell fallbacks
quote them without depending on the locale (on 32-bit PHP a download over
2 GiB next to such a name was sent with the wrong size), and three more
basename()calls keep non-ASCII names on PHP 7.4, as does a non-ASCII move
destination. - Fast resume records the paths the daemon will load, including the
name.utf-8/path.utf-8aliases libtorrent 0.16.25 and later use, so a
resumed torrent no longer stays inactive with no message. - AutoTools uses the basename rtorrent wrote for a single-file torrent, and a
download skipped by "Skip torrents that contain files matching the pattern"
stays pointed at its data. - A private torrent's info hash is no longer randomized when adding it.
- Malformed httprpc list responses are reported and refused before they reach
the torrent list, which previously stopped updating until a reload. - The ratio plugin sets group limits through
group2.*on 0.9.4 up to 0.15,
where some patched 0.9.8 builds define only that, instead of failing to
start and leaving rtorrent's built-in limits in force. - extsearch sizes its results to the layout.
Translations
- The first line of the Log tab is translated.
- The new log warnings are translated in every language file.
Tests
Shared helpers for byte-preserving display and shell quoting, and display
names taken from a torrent's own metadata, land ahead of their callers. rTorrent
probe fixtures are cleaned up after a failed setup.
What's Changed
- Fix/add directory validation by @xirvik in #3469
- Set ratio group limits through group2 below 0.15 by @xirvik in #3472
- Warn in the log about an outdated PHP or rTorrent by @xirvik in #3473
- Size the extsearch results by the layout by @xirvik in #3479
- autotools: use the actual single-file basename by @IvanShift in #3475
- Warn about rTorrent releases before 0.16.27 by @xirvik in #3481
- Keep a non-ASCII move destination on PHP 7.4 by @xirvik in #3480
- Add helpers for byte-preserving text display and shell quoting by @IvanShift in #3476
- rtorrent: keep fast resume to the paths the daemon will load by @IvanShift in #3477
- _task: refuse pid 1 when killing a task by @IvanShift in #3478
- autotools: keep a skipped Move pointed at its data by @IvanShift in #3482
- Tests: clean up rTorrent probe fixtures after setup failures by @IvanShift in #3463
- ExternalURL: validate decoded special-scheme hosts by @IvanShift in #3464
- Add display names for torrents from their own metadata by @IvanShift in #3483
- Keep non-ASCII names on PHP 7.4 in three more basename() calls by @IvanShift in #3484
- Keep datadir moves inside the top directory through links by @xirvik in #3488
- Httprpc: validate list deltas before changing the cache by @IvanShift in #3466
- webui: translate the first line of the Log tab by @Heliedan in #3468
- addtorrent: don't randomize the info hash of a private torrent by @Heliedan in #3467
- Keep plugin directories inside the top directory through links by @xirvik in #3489
- Show legacy filename bytes in add torrent notifications by @IvanShift in #3485
- Preserve filename bytes in filesystem shell fallbacks by @IvanShift in #3486
- Bump version to 5.3.20 by @xirvik in #3490
Full Changelog: v5.3.19...v.5.20