メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

-consider-analysis-perimeter-as-trust-boundary

解析境界を信頼境界と見なすことによって、現在の解析境界の外部から来たデータは汚染されたと見なす

構文

-checkers cmd_name_of_check -consider-analysis-perimeter-as-trust-boundary

説明

-checkers cmd_name_of_check -consider-analysis-perimeter-as-trust-boundary は、解析境界の外部から来たデータが汚染されたと見なされるように cmd_name_of_check の動作を修正します。たとえば、単一のファイルを解析している場合は、そのファイル以外から来たデータは汚染されたと見なされます。このオプションは、複数の Polyspace® Bug Finder™ 欠陥およびコーディング ルールに影響します。cmd_name_of_check が取り得る値については、Polyspace 汚染データ チェッカーを参照してください。

既定で、以下のデータは汚染されたと見なされます。

  • volatile として宣言または定義されたオブジェクト

  • ユーザー入力、ハードウェア データ、ネットワーク データ、環境変数などの外部データ

汚染されたデータのソースを参照してください。

オプション -consider-analysis-perimeter-as-trust-boundary を指定すると、現在の Polyspace 解析の範囲に入っていないデータは汚染されたと見なされます。このようなデータには以下が含まれます。

  • 可視の呼び出し元がない、外部から可視の関数の仮パラメーター。

  • スタブ関数の戻り値。

  • ユニット外部のグローバル変数。

外部モジュールから来たデータを信頼しない場合は、このオプションを使用して、この汚染されたデータに対して脆弱な操作を検出します。

ユーザー インターフェイス (Polyspace デスクトップ製品のみ) では、[構成] ペインの [その他] フィールドにこのオプションを入力します。Otherを参照してください。

次のコードについて考えます。

#include<stdio.h>
double taintedloopboundary(int num, int denum) {
	int count;
	scanf("%d", &count);
	for (int i=0; i<count; ++i) { 
		num = num/denum;
	} 
	return num;
}
この例では、汚染されたデータの 2 つのケース (既定で検出されるケースとこのオプションを使用したケース) を示します。

  • 変数 count がユーザーから取得されます。次のコマンドを使用して既定で汚染されたデータの解析を実行する場合:

    polyspace-bug-finder -checkers tainted_data
    Polyspace は、汚染されたループ変数にフラグを設定します。

  • 変数の numdenum は、現在のモジュールで定義されません。次のコマンドを使用して汚染されたデータの解析を変更する場合:

    polyspace-bug-finder -checkers tainted_data -consider-analysis-perimeter-as-trust-boundary
    Polyspace は、numdenum の間の除算演算にフラグを設定します。

ヒント

このオプションは、Polyspace as You Code 解析では役立ちません。

バージョン履歴

R2020b で導入