Record topology dump truncation defect found during audit

This commit is contained in:
evgeny committed 2026-10-24 13:37:22 +02:00
1 parent 902ffa05b4
commit 8dcd2fac3b
1 file changed
+12
+12
View File
@@ -4,6 +4,18 @@
## Текущие задачи
[ ] **Routing: ограничить длину результата topo_node_format_all при усечении**.
24.10.2026, аудит topo_node: при buf_size=1/2/5/12/13 функция возвращает 13, хотя записаны
соответственно 0/1/4/11/12 байт. Причина — snprintf возвращает требуемую длину маркера,
а код прибавляет её к pos как фактически записанную. FMT_ADD также продолжает наращивать
pos после усечения внутри одного узла, формируя указатели за пределами заявленного буфера.
control_server использует возвращённую длину для text[text_len] и копирования; его текущий
буфер существенно больше 13 байт, сбой рабочего control-вызова этим опытом не установлен.
План: поддерживать pos <= buf_size-1, завершать добавление при заполнении, ограничить маркер
оставшимся местом и возвращать фактическую длину; проверить маленькие буферы и усечение внутри узла/пути.
Воспроизведение: /tmp/topo-node-format-audit.c; лог: /tmp/topo-node-format-audit.log (5 неверных длин из 9 размеров).
Дальнейший аудит остановлен по AGENTS.md; код форматирования и документы модулей не менялись.
[+] **Routing: согласовать обход секции подсетей в topo_node_deserialize с wire-размером**.
24.10.2026: ручная упаковка/разбор доработаны без lib/serialize. Без TOPO_FLAG_SEND_SUBNETS
счётчики подсетей равны 0; противоречащий заголовок отклоняется до выделения объектов.