github Novik/ruTorrent v5.3.21

3 hours ago

Security

  • Unpack: each archive is extracted into its own empty directory. Symbolic links in archives are refused (unrar runs with -ol-, so it never creates them), and nothing is written through a link already in the output folder. A refusal names the entry in the task log and in errors.log. Behaviour changes: links in archives are no longer recreated, extracted files get u+rwX, and a file replaced by an unpack becomes a new inode. (#3494)
  • Create: a folder that holds a link resolving outside the top directory, or a link that does not resolve, is refused before any creator starts. This includes mktorrent and the other external creators, which follow links. (#3493)
  • The top-directory check refuses . and .. in the part of a path that does not exist yet. It also stops at the root under an open_basedir that hides it, and clears PHP's realpath cache before checking. (#3492)

Core

  • The log is written even when another user owns it in a sticky directory such as /tmp (fs.protected_regular). A write that fails no longer leaves the lock held, and a stalled writer no longer hangs every request that logs. (#3496, fixes #3495)
  • A torrent's source file is found when the session or tied-file path contains a backslash or a double quote. (#3491)

Interface

  • Users can choose between the desktop and the mobile UI: ?mobile=0 or ?mobile=1, remembered per device. The mobile settings page has a "Desktop version" button, and Settings > General has an "Interface" choice. Windows tablets and 2-in-1 devices are no longer stuck in the mobile UI. Arguments like mobile=10 or xmobile=1 no longer select it. (#3497)

Plugins

  • Tasks: cancelling a task stops its whole process tree. Before, the program doing the work (createtorrent.php, unrar, unzip) kept running to the end. (#3499)

Themes

  • RSS Manager filter names are readable in Oblivion and OblivionBlue, and the URL rewrite rules list in Dark, DarkBetter and MaterialDesign. (#3498, fixes #3487)

Localization

  • The new interface strings are translated in every language file; native speakers have not reviewed them. (#3497)

Development

  • An incomplete PHP test run now fails the suite, and source paths are preserved. (#3452)

What's Changed

  • Unescape the session and tied paths in rTorrent::getSource() by @IvanShift in #3491
  • tests: reject incomplete PHP test runs by @IvanShift in #3452
  • Stop isInsideTopDirectory() at the root and at .. in a missing tail by @IvanShift in #3492
  • Refuse to create from a folder holding a link out of the top directory by @IvanShift in #3493
  • Unpack each archive into its own empty directory and keep links out by @IvanShift in #3494
  • Write the log when another user owns it in a sticky directory by @xirvik in #3496
  • mobile: let the user choose the desktop or the mobile UI by @xirvik in #3497
  • rss: readable filter and rule names in dark themes by @xirvik in #3498
  • _task: kill the whole process tree of a task by @xirvik in #3499
  • Bump version to 5.3.21 by @xirvik in #3500

Full Changelog: v5.3.20...v5.3.21

Don't miss a new ruTorrent release

NewReleases is sending notifications on new releases.