From 8dcd2fac3b88f44afaf66e45a8e0e90644b80d92 Mon Sep 17 00:00:00 2001 From: evgeny Date: Sat, 24 Oct 2026 13:37:22 +0200 Subject: [PATCH] Record topology dump truncation defect found during audit --- doc/tasks.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/tasks.md b/doc/tasks.md index d6749b98..0bbfbaf1 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -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; противоречащий заголовок отклоняется до выделения объектов.