CXX.SIZEOF.CSTRING

char* での sizeof の使用は誤解を招く場合がある

sizeof 演算子は、オペランド引数のサイズをバイト数で返します。char ポインターの場合、それはポインター型のサイズであり、名前が誤解を招くような、返される文字列のサイズではありません。char* 文字列の長さを取得するには、適切な C ライブラリ関数を使用してください。

脆弱性とリスク

文字列サイズの計算が正しくないと、多様なセキュリティ脆弱性を引き起こす可能性があります。

軽減と防止

sizeof(char *) の使用は避けてください。

脆弱コード例

コピー
int str_len (char* text)
{
  int len = sizeof(text);
  return len;
}

char* で sizeof を使用すると、文字列のサイズではなくポインター型のサイズが生成されます。これは誤解を招きます。

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。