Опубликован релиз rsync 3.5.1, очередная версия широко используемой утилиты синхронизации и передачи файлов с открытым кодом. Он вышел чуть больше месяца спустя после крупного релиза 3.5.

Одна из основных областей, которых касается rsync 3.5.1, связана с обработкой путей. Явно указанные пути отправителя снова могут проходить через родительские каталоги, являющиеся симлинками, и при этом защита для путей, обнаруженных во время рекурсивного сканирования, не ослабляется.

Пути, переданные через --files-from при локальных пересылках и пересылках через remote shell, теперь корректно трактуются как пути, явно заданные оператором, а не как пути внутри корня передачи.

Кроме того, в релизе исправлен доступ к /dev/stdin, /dev/stdout, /dev/stderr и /dev/fd/N, когда они указывают на каналы или файловые дескрипторы внутри пользовательских пространств имён. Это возвращает работоспособность сценариям вроде чтения пакетных данных через FIFO или подстановку процесса, которые пострадали из-за регрессий в предыдущей версии.

Ещё одно исправление касается опции --max-alloc=0. Она снова означает, что rsync должен использовать максимальный потолок выделения памяти парсера, а не полностью отключать ограничение на выделение.

Другие исправления в rsync 3.5.1:

  • Исправлена обработка путей с ограниченным корнем в rrsync.

  • Улучшено определение соединений inetd, когда демон получает локальный сокет через стандартный ввод.

  • Добавлена поддержка --contimeout при подключении к демону rsync через --rsh, при этом обычные пересылки через remote shell не затрагиваются.

  • Более строгая проверка состояния частичных каталогов и путей альтернативного назначения.

  • Предотвращено следование по симлинку конечного элемента в альтернативном назначении, когда он используется как базовый файл.

  • Исправлены неопределённые сдвиги во встроенном коде zlib.

  • Исправлена проблема сборки на FreeBSD amd64, связанная с объектами ассемблера и SIMD.

Что касается протокола, rsync 3.5.1 поднимает его номер до 33. Это включает новую статистику в --stats, которая показывает, сколько отдельных логических блоков файла размером 4 КиБ затронул приёмник.

Также появилась поддержка интернационализированных доменных имён, если rsync собран с нужной библиотекой. Это позволяет напрямую работать с именами хостов, содержащими символы вне ASCII.

Подробнее в примечаниях к выпуску.