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 が提供しているアプリケーションセキュリティトレーニング教材。