EN JP CN

CWARN.NOEFFECT.UCMP.LT.MACRO

CWARN.NOEFFECT.UCMP.LT.MACRO

マクロ内の符号なし値の無効な比較は常に false になります

CWARN.NOEFFECT.UCMP.LT.MACRO チェッカーは、常に false になる符号なし値とゼロとの比較が存在するマクロのコードにフラグを立てます。

脆弱性とリスク

'a' が符号なし値の場合、a < 0 と 0 > a の比較は常に false です。この比較は無意味であるため、設計の意図が達成されない可能性があります。

脆弱コード例

1  #define RETURN_NEGATIVE(x) if (x < 0) return x
2  
3  int foo(usigned int a) {
4    RETURN_NEGATIVE(a);  
5    return 0;
6  }

Klocwork マクロ RETURN_NEGATIVE に常に false である条件が含まれている 4 行目にフラグを立てます。