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

Після трьох років розробки опубліковано випуск утиліти 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(). На думку розробників, зазначені проблеми не становлять загрози безпеці, оскільки обмежуються аварійним завершенням утиліти.

Джерело: opennet.ru

Додати коментар або відгук