Po trzech latach prac została opublikowana wersja narzędzia GNU cflow 1.7, przeznaczonego do tworzenia przejrzystych wykresów wywołań funkcji w programach napisanych w języku C, który może być używany do uproszczenia zrozumienia logiki działania aplikacji. Wykresy są budowane wyłącznie na podstawie analizy kodu źródłowego, bez konieczności uruchamiania programu. Obsługiwane jest generowanie zarówno bezpośrednich, jak i odwrotnych wykresów przepływu wykonania, a także generowanie list odniesień krzyżowych dla plików z kodem.
Wydanie to wyróżnia się wprowadzeniem wsparcia dla formatu wyjściowego „dot” (‘—format=dot’), co umożliwia tworzenie wyników w języku DOT do późniejszej wizualizacji w pakiecie Graphviz. Dodana została możliwość określenia wielu funkcji startowych poprzez powielanie opcji ‘—main’; dla każdej z tych funkcji wygenerowany zostanie osobny wykres. Dodano również opcję „—target=FUNCTION”, która pozwala ograniczyć wynikowy wykres do gałęzi obejmującej określone funkcje (opcję „—target” można podawać wielokrotnie). W trybie cflow-mode dodano nowe polecenia do nawigacji po wykresie: „c” — przejście do funkcji wywołującej, „n” — przejście do następnej funkcji na danym poziomie zagnieżdżenia i „p” — przejście do poprzedniej funkcji na tym samym poziomie zagnieżdżenia.
W nowej wersji naprawiono również dwie podatności, które zostały ujawnione jeszcze w 2019 roku i prowadzą do uszkodzenia pamięci podczas przetwarzania w cflow specjalnie sformatowanych kodów źródłowych. Pierwsza podatność (CVE-2019-16165) spowodowana jest próbą dostępu do pamięci po jej zwolnieniu (use-after-free) w kodzie parsera (funkcja reference w parser.c). Druga podatność (CVE-2019-16166) dotyczy przepełnienia bufora w funkcji nexttoken(). Zdaniem deweloperów, wskazane problemy nie stanowią zagrożenia dla bezpieczeństwa, ponieważ ograniczają się do awaryjnego zakończenia działania narzędzia.
Źródło: opennet.ru
