Dopo tre anni di sviluppo è stato pubblicato il rilascio dell'utilità GNU cflow 1.7, destinata a generare un diagramma visivo delle chiamate di funzione nei programmi in linguaggio C, che può essere utilizzato per facilitare lo studio della logica di funzionamento dell'applicazione. Il diagramma è costruito esclusivamente sulla base dell'analisi dei testi sorgente, senza la necessità di eseguire il programma. È supportata la generazione sia di grafi diretti che inversi dei flussi di esecuzione, così come la generazione di elenchi di riferimenti incrociati per i file contenenti codice.
Il rilascio è notevole per l'implementazione del supporto per il formato di output "dot" (‘—format=dot’) per la generazione del risultato nel linguaggio DOT per successiva visualizzazione nel pacchetto Graphviz. È stata aggiunta la possibilità di specificare più funzioni di avvio duplicando l'opzione ‘—main’; per ogni funzione di questo tipo verrà generato un grafico separato. È stata anche aggiunta l'opzione «—target=FUNCTION» che consente di limitare il grafo risultante solo al ramo che include funzioni specifiche (l'opzione «—target» può essere specificata più volte). Nella modalità cflow sono stati aggiunti nuovi comandi per la navigazione nel grafo: «c» — passa alla funzione chiamante, «n» — passa alla funzione successiva a questo livello di annidamento e «p» — passa alla funzione precedente con lo stesso livello di annidamento.
Nella nuova versione sono state risolte due vulnerabilità, che erano state individuate già nel 2019 e che portano a danni di memoria durante l'elaborazione in cflow di testi sorgente appositamente formattati. La prima vulnerabilità (CVE-2019-16165) è causata da una chiamata alla memoria dopo la sua liberazione (use-after-free) nel codice del parser (funzione reference in parser.c). La seconda vulnerabilità (CVE-2019-16166) riguarda il buffer overflow nella funzione nexttoken(). Secondo gli sviluppatori, i problemi indicati non rappresentano una minaccia per la sicurezza, poiché comportano solo l'interruzione dell'utilità.
Fonte: opennet.ru
