Nach drei Jahren Entwicklung die Veröffentlichung der neuen Version des GNU-Hilfsprogramms cflow 1.7 wurde angekündigt. Für diejenigen, die dieses Dienstprogramm nicht kennen, sollten sie wissen, dass es so ist entwickelt, um einen visuellen Graphen von Funktionsaufrufen in C-Programmen zu erstellen, die verwendet werden können, um das Studium der Anwendungslogik zu vereinfachen.
die Grafikoder sie ist ausschließlich aus der Analyse der Ausgangstexte konstruiert, ohne dass das Programm ausgeführt werden muss, und es unterstützt die Generierung von Vorwärts- und Rückwärtsflussdiagrammen sowie die Generierung von Querverweislisten für Dateien mit Code.
Das Paket ist voll funktionsfähig und lässt sich auf jeder GNU/Linux-Distribution und auch auf neueren UNIX-ähnlichen Systemen kompilieren und ausführen. Es unterstützt alle von POSIX geforderten Zeilenumschaltbefehle. Es ist in der Lage, Ausgaben in zwei Formaten zu erzeugen: GNU cflow-Format (das ist die Standardeinstellung) und POSIX-Format.
Derzeit kann das Dienstprogramm nur C-Schriftarten verarbeiten, da dies die einzige Abweichung von den POSIX-Spezifikationen ist, die die Fähigkeit erfordern, YACC- und LEX-Schriftarten sowie binäre Objektdateien zu verarbeiten.
Das Emacs-Modul cflow-mode.el arbeitet mit Dateien im GNU-cflow-Format (im Gegensatz zum POSIX-Format) und wurde mit Emacs 24.2.1 getestet.
Die wichtigsten neuen Funktionen von GNU cflow 1.7
In dieser neuen Release-Version bemerkenswert für die Implementierung der Unterstützung für das Ausgabeformat "Punkt". ('–format=dot'), um ein DOT-Ergebnis zur weiteren Verarbeitung im Graphviz-Paket zu generieren.
Darüber hinaus wird auch hervorgehoben, dass Möglichkeit hinzugefügt, mehrere Startfunktionen anzugeben, indem die '–main'-Optionen dupliziert werden, die mit einem separaten Diagramm für jede dieser Funktionen generiert werden.
Es wird auch darauf hingewiesen, dass die Option hinzugefügt wurde „–target=FUNCTION“, um den resultierenden Graphen auf nur einen Zweig zu beschränken die bestimmte Funktionen enthält (die Option „–target“ kann mehrfach angegeben werden).
Eine weitere Änderung, die in diese neue Version von GNU cflow 1.7 integriert wurde, ist die Neue Befehle für die Kartennavigation wurden hinzugefügt a cflow-mode: „c“, das verwendet wird, um zur aufrufenden Funktion zu gehen, „n“, das verwendet wird, um zur nächsten Funktion in dieser Verschachtelungsebene zu gehen, und „p“, um zur vorherigen Funktion mit derselben Verschachtelungsebene zu gehen .
Andererseits wird in der Ankündigung dieser neuen Version von GNU cflow 1.7 auch darauf hingewiesen zwei Schwachstellen entfernt die 2019 identifiziert wurden und bei der Verarbeitung speziell präparierter Quelltexte in cflow zu Speicherbeschädigungen führten.
Von den behobenen Schwachstellen werden die folgenden genannt:
- Die erste Schwachstelle (CVE-2019-16165) tritt auf, wenn im Parser-Code (Referenzfunktion in parser.c) auf Speicher nach frei (use-after-free) zugegriffen wird.
- Die zweite Schwachstelle (CVE-2019-16166) bezieht sich auf einen Pufferüberlauf in der Funktion nexttoken(). Nach Ansicht der Entwickler stellen diese Probleme kein Sicherheitsrisiko dar, da sie sich auf die abnormale Beendigung des Dienstprogramms beschränken.
Schließlich wenn Sie mehr darüber wissen möchten Über diese neue Version können Sie die Details einchecken den folgenden Link.
Wie installiere ich cflow unter Linux?
Für diejenigen, die daran interessiert sind, dieses Dienstprogramm auf ihrem System zu installieren, sollten sie wissen, dass cflow in den Repositories einiger der wichtigsten Linux-Distributionen enthalten ist. Ich muss nur erwähnen, dass die neue Version in einigen von ihnen noch nicht implementiert ist, aber in wenigen Tagen fertig sein wird.
Benutzer von Debian, Ubuntu oder einem Derivat davon können vom Terminal aus installieren, indem sie den folgenden Befehl eingeben:
sudo apt install cflow -y
Bei Benutzern von Arch Linux, Manjaro oder einer anderen davon abgeleiteten Distribution muss die Installation aus den AUR-Repositories erfolgen:
yay -s cflow
Diejenigen, die daran interessiert sind, die neue Version zu kompilieren, können sie von der herunterladen folgenden Link