Record media async primitive and contract audit findings

This commit is contained in:
evgeny committed 2026-10-22 10:07:20 +02:00
1 parent d8621c7f27
commit 41cc04bdab
1 file changed
+13
+13
View File
@@ -4,6 +4,19 @@
## Текущие задачи
[ ] **media_async: файловые примитивы и точные контракты .h** — аудит 22.10.2026:
ma_copy_file проверяет только strcmp: source и ./source обнуляют исходный файл (14→0 байт), возврат 0.
Одинаковые строки несуществующего пути также дают 0 без проверки источника; правила перезаписи/ошибок не описаны.
ma_uuid игнорирует отказ RAND_bytes: при внедрённой ошибке буфер остаётся прежним, вызывающий не получает ошибку.
ma_dir_walk молча возвращает 0 для отсутствующего каталога/обычного файла; ошибки opendir/lstat/readdir не передаются.
Windows-ветка рекурсирует по DIRECTORY без проверки REPARSE_POINT; regular-only контракт .h требует уточнения/реализации.
ma_file_size сужает st_size до int: 3 ГиБ возвращают -1073741824. Ограничение int в .h указано,
но вызывающие media_index/chat_msg используют результат как int64_t: расширение после вызова не восстанавливает размер.
В .h уточнить синхронные done при отказе, -2 также для неверных аргументов/closing, отсутствие callback при done=NULL,
лимит 16 задач до доставки done (включая завершённые workers), размеры ключа/подписи и отсутствие отката побочных эффектов work.
Порядок join→cancel post→done при destroy сверён с uasync и doc/service_lifecycle.md; описание этого порядка соответствует коду.
Стенд вне репозитория: /tmp/media-async-audit.c; результаты: /tmp/media-async-audit.log. Реализация не менялась.
[+] **test_stream_service: убрать зависимость bootstrap-проверки от гонки TCP-handshake** — исправлено 22.10.2026:
Падение на строке 409: REINIT=0 при probes=1/subflows=1/failures=0 и доставленной первой пачке.
Встречный TCP-линк успевает сообщить peer_reset_id до ETCP CONFIRM: начальная эпоха уже известна,