Bug 35901

Summary: Не показывает папки, если количество файлов в них превышает 29 шт.
Product: Sisyphus Reporter: Gryzun <gryzun_an>
Component: vsftpdAssignee: Alexey Shabalin <shaba>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: admin1, rider, shaba
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Исправление проблемы none

Description Gryzun 2019-01-14 20:54:54 MSK
Если количество элементов в папке на ftp сервере превышает 29 - сервер разрывает соединение данных.
Причины такого поведения, кроются в sandbox в котором запускается vsftpd. При перечислении файлов в запрошенной папке, vsftpd успешно перечисляет их, а затем пытается отсортировать вызовом qsort. Если количество элементов для сортировки qsort превышает 31, то под них выделяется память, а перед её выделением происходит проверка количества установленного ОЗУ машины. Для проверки используется ядерная функция sysinfo, которая запрещена песочницей.
В качеств исправления предлагаю добавить следующие строки в файл seccompsandbox.c, функция seccomp_sandbox_setup_base:

  /* Needed for qsort. */
  allow_nr(__NR_sysinfo);

Изменённый файл seccompsandbox.c прилагаю.
Comment 1 Gryzun 2019-01-14 20:56:05 MSK
Created attachment 7944 [details]
Исправление проблемы
Comment 2 Nicom 2020-02-23 21:47:58 MSK
Другой вариант ухода от проблемы (не её исправление), добавить в файл конфига vsftpd строку отключающую песочницу - seccomp_sandbox=NO

Проблема всё-ещё воспроизводится на vsftpd: version 3.0.3 в alt starterkit p9

Подобный баг уже появлялся ранее https://bugzilla.altlinux.org/show_bug.cgi?id=27752
Comment 3 Repository Robot 2020-12-19 22:13:04 MSK
vsftpd-3.0.3-alt2 -> sisyphus:

 Sat Dec 19 2020 Dmitry V. Levin <ldv@altlinux> 3.0.3-alt2
 - Updated seccomp filter (closes: #27752, #35901).
 - Fixed build with gcc-10.