JAVA.COMPARE.NAN

NaN と比較しようとしない

脆弱性とリスク

NaN からの戻り値を検証しても、期待どおりの結果が得られないことがあります。

軽減と防止

isNan() や Double.isNaN などの別の方法を検証に使用してください。

脆弱コード例

コピー
package com.klocwork;

public class JAVA_COMPARE_NAN_POSITIVE {
    public static void test(String args[]) {
        double d = 1;
        
        if (d == Double.NaN) {
            return;
        }
    }
}

修正コード例

コピー
package com.klocwork;

public class JAVA_COMPARE_NAN_NEGATIVE {
    public static void test(String args[]) {
        double d = 1;

        if (Double.isNaN(d)) {
            return;
        }
    }
}

外部参考資料