コンテンツにスキップ

Undefined Behavior (未定義の動作)

ルール ID

MI110

定義

ソフトウェアは、未定義または予測不可能な動作を示しています。これは、多くの場合、クラッシュにつながります。

サンプル

次のコードは、CWE の該当コード サンプルの 1 つです。

1
2
3
4
5
void example() {
  char a;
  char b;
  *(&a + 1) = 0;
}

このサンプル関数では、変数 a のアドレスに 1 を追加することで変数 b のアドレスを導き出しています。その後、導き出されたアドレスを使用して b に値 0 を代入しています。しかし、b が a の 1 バイト後ろとはかぎりません。a の 1 バイト前かもしれません。あるいは、32 ビット境界合わせのために、2 つの変数の間には 3 バイトあるかもしれません。

参考資料

  • Common Weakness Enumeration: CWE-188
  • Common Weakness Enumeration: CWE-190
  • Common Weakness Enumeration: CWE-197
  • Common Weakness Enumeration: CWE-233
  • Common Weakness Enumeration: CWE-369
  • Common Weakness Enumeration: CWE-758