Veröffentlichung des GNU-Dienstprogramms cflow 1.7

Nach dreijähriger Entwicklungszeit wurde das Dienstprogramm GNU cflow 1.7 veröffentlicht, das dazu dient, ein visuelles Diagramm von Funktionsaufrufen in C-Programmen zu erstellen, das zur Vereinfachung des Studiums der Anwendungslogik verwendet werden kann. Der Graph wird ausschließlich auf Basis der Analyse der Quelltexte erstellt, ohne dass das Programm ausgeführt werden muss. Unterstützt wird die Erstellung von Flussdiagrammen für die Vorwärts- und Rückwärtsausführung sowie die Erstellung von Querverweislisten für Codedateien.

Die Veröffentlichung zeichnet sich durch die Implementierung der Unterstützung für das „Punkt“-Ausgabeformat („—format=dot“) aus, um das Ergebnis in der DOT-Sprache für die anschließende Visualisierung im Graphviz-Paket zu generieren. Es wurde die Möglichkeit hinzugefügt, durch Duplizieren der „—main“-Optionen mehrere Startfunktionen anzugeben; für jede dieser Funktionen wird ein separates Diagramm erstellt. Außerdem wurde die Option „--target=FUNCTION“ hinzugefügt, mit der Sie das resultierende Diagramm nur auf den Zweig beschränken können, der bestimmte Funktionen enthält (die Option „--target“ kann mehrmals angegeben werden). Dem cflow-mode wurden neue Befehle für die Diagrammnavigation hinzugefügt: „c“ – gehe zur aufrufenden Funktion, „n“ – gehe zur nächsten Funktion auf einer bestimmten Verschachtelungsebene und „p“ – gehe mit derselben zur vorherigen Funktion Verschachtelungsebene.

Die neue Version beseitigt außerdem zwei bereits 2019 identifizierte Schwachstellen, die bei der Verarbeitung speziell formatierter Quelltexte in cflow zu Speicherbeschädigungen führen. Die erste Schwachstelle (CVE-2019-16165) wird durch einen Use-after-free-Speicherzugriff im Parser-Code (Referenzfunktion in parser.c) verursacht. Die zweite Schwachstelle (CVE-2019-16166) steht im Zusammenhang mit einem Pufferüberlauf in der Funktion nexttoken(). Nach Angaben der Entwickler stellen diese Probleme kein Sicherheitsrisiko dar, da sie sich auf die abnormale Beendigung des Dienstprogramms beschränken.

Source: opennet.ru

Kommentar hinzufügen