Выпуск утилиты GNU cflow 1.7

Kate

Administrator
Команда форума
После трёх лет разработки опубликован выпуск утилиты GNU cflow 1.7, предназначенной для построения наглядного графа вызовов функций в программах на языке Си, который может использоваться для упрощения изучения логики работы приложения. Граф строится только на основе анализа исходных текстов, без необходимости выполнения программы. Поддерживается генерация как прямых, так и обратных графов потоков выполнения, а также генерация списков перекрёстных ссылок для файлов с кодом.

Выпуск примечателен реализацией поддержки формата вывода "dot" ('--format=dot') для формирования результата на языке DOT для последующей визуализации в пакете Graphviz. Добавлена возможность указания нескольких стартовых функций через дублирование опций '--main', для каждой из подобных функций будет сгенерирован отдельный граф. Также добавлена опция "--target=FUNCTION" позволяющая ограничить результирующий граф только веткой, включающей определённые функции (опцию "--target" можно указывать несколько раз). В режим cflow-mode добавлены новые команды для навигации по графу: "c" - переход к вызывающей функции, "n" - переход к следующей функции на данном уровне вложенности и "p" - переход к предыдущей функции с тем же уровнем вложенности.

В новой версии также устранены две уязвимости, которые были выявлены ещё в 2019 году и приводят к повреждению памяти при обработке в cflow специально оформленных исходных текстов. Первая уязвимость (CVE-2019-16165) вызвана обращением к памяти после её освобождения (use-after-free) в коде парсера (функция reference в parser.c). Вторая уязвимость (CVE-2019-16166) связана с переполнением буфера в функции nexttoken(). По мнению разработчиков, указанные проблемы не представляют угрозы безопасности, так как ограничиваются аварийным завершением утилиты.

 
Сверху