CWARN.NOEFFECT.UCMP.GE.MACRO
宏中无符号值的无效比较始终为 true
CWARN.NOEFFECT.UCMP.GE.MACRO 检查器可标记宏中的代码,其中,无符号值与 0 的比较始终为 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 标记了第 4 行,其中的宏 POSITIVE_LOOP 包含一个始终为 true 的条件。