XNUMX年間の開発後 GNU cflow1.7ユーティリティの新しいバージョンのリリースが発表されました。 このユーティリティに気付いていない人は、それが Cプログラムの関数呼び出しの視覚的なグラフを作成するように設計されています、アプリケーションロジックの研究を簡素化するために使用できます。
グラフまたは、ソーステキストの分析のみから構築されます、プログラムを実行する必要なしに、直接および逆フローグラフの生成、およびコードを含むファイルの相互参照リストの生成をサポートすることに加えて。
このパッケージは完全に機能し、GNU / Linuxディストリビューション、および新しいUNIXライクなシステムでコンパイルおよび実行されます。 POSIXに必要なすべてのコマンドラインスイッチをサポートします。 GNU cflow形式(デフォルト)とPOSIX形式のXNUMXつの形式で結果を生成できます。
現在、ユーティリティはCフォントのみを処理できます。これはPOSIX仕様からの唯一の逸脱であり、YACCおよびLEXフォント、およびバイナリオブジェクトファイルを処理する機能が必要です。
Emacs cflow-mode.elモジュールは、GNU cflow形式(POSIX形式ではなく)のファイルで動作し、Emacs24.2.1でテストされています。
GNU cflow1.7の主な新機能
この新しいバージョンのリリースでは 出力形式「ドット」との互換性の実装で際立っています ( '–format = dot')Graphvizパッケージでさらに処理するためのDOT結果を生成します。
さらに、次のことも強調されています '–main'オプションを複製することにより、複数のスタートアップ機能を指定する機能を追加しました。 これは、これらの関数ごとに個別のグラフで生成されます。
オプションが 「–target = FUNCTION」は、結果のグラフをXNUMXつのブランチのみに制限します これには特定の機能が含まれています(「–target」オプションは複数回指定できます)。
この新しいバージョンのGNUcflow 1.7に統合されたもうXNUMXつの変更は、 チャートナビゲーション用の新しいコマンドが追加されました cflow-mode:»c "は呼び出し元の関数に移動するために使用され、" n "はこのネストレベルで次の関数に移動するために使用され、" p "は同じレベルのネストで前の関数に移動するために使用されます。
一方、GNU cflow 1.7のこの新しいバージョンの発表では、それも XNUMXつの脆弱性が削除されました これらは2019年に特定され、cflowで特別に細工されたソーステキストを処理するときにメモリの破損を引き起こしていました。
修正された脆弱性のうち、以下が言及されています。
- 最初の脆弱性(CVE-2019-16165)は、パーサーコード(parser.cの参照関数)でメモリを解放(解放後使用)した後にメモリにアクセスするときに発生します。
- 2019番目の脆弱性(CVE-16166-XNUMX)は、nexttoken()関数のバッファオーバーフローに関連しています。 開発者の意見では、これらの問題はユーティリティの異常終了に限定されているため、セキュリティ上の脅威にはなりません。
最後に あなたがそれについてもっと知りたいなら この新しいバージョンについては、で詳細を確認できます 次のリンク。
Linuxにcflowをインストールするにはどうすればいいですか?
このユーティリティをシステムにインストールできるようにすることに関心がある人は、cflowがいくつかの主要なLinuxディストリビューションのリポジトリ内にあることを知っておく必要があります。 新しいバージョンがまだ実装されていないものもありますが、準備が整うまでには数日かかります。
Debian、Ubuntu、またはこれらの派生物のユーザーは、次のコマンドを入力してターミナルからインストールできます。
sudo apt install cflow -y
Arch Linux、Manjaro、またはこれらのユーザーから派生したその他のディストリビューションの場合、インストールはAURリポジトリから実行する必要があります。
yay -s cflow
新しいバージョンをコンパイルできるようにすることに興味がある人は、これはから入手できます。 次のリンク。