CWARN.NOEFFECT.UCMP.GE.MACRO
マクロ内の符号なし値の無効な比較は常に true になります
CWARN.NOEFFECT.UCMP.GE.MACRO チェッカーは、常に true になる符号なし値とゼロとの比較が存在するマクロのコードにフラグを立てます。
脆弱性とリスク
'a' が符号なし値の場合、a >= 0 と0 <= a の比較は常に true です。この比較は無意味であるため、設計の意図が達成されない可能性があります。
脆弱コード例
コピー
#define POSITIVE_LOOP(x) while (x >= 0) x--;
int foo(unsigned int a) {
POSITIVE_LOOP(a);
return 0;
}
Klocwork は、マクロ POSITIVE_LOOP に常に true である条件が含まれている 4 行目にフラグを立てます。