CS.CMP.VAL.NULL
汎用タイプにリファレンス制約が含まれない型パラメーターのエンティティは、'null' と比較されます。
脆弱性とリスク
汎用タイプの型パラメーターにリファレンス制約が含まれない場合、値タイプで置き換えることができます。値タイプのエンティティを 'null' と比較すると、必ず false が返されるため有用ではありません。
例 1
コピー
namespace Namespace {
class Foo<T1> where T1: class {
T1 t;
bool checkT() {
return (t == null); // OK - cannot be a value type
}
}
class Bar<T2> where T2: struct {
T2 t;
bool setT(T2 arg) {
if (arg != null) // defect
t = arg;
}
}
}
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。