【问题标题】:Coverity warning::"cc" clobber ignored for htons() and ntohs()覆盖警告::"cc" clobber 忽略 htons() 和 ntohs()
【发布时间】:2013-05-28 13:25:45
【问题描述】:

Coverity 为什么会产生警告

> "cc" clobber ignored

对于下面提到的代码中的函数调用 htons() 和 ntohs()?

lSocketAddr.sin_port = htons(kUDPServerPort);

我用谷歌搜索发现这个警告也出现在英特尔编译器链中。 “cc”clobber被忽略是什么意思?这是否意味着不应将 htons() 和 ntohs() 用于安全编程?有什么办法可以解决这个警告吗?有没有替代的 apis htons() 和 ntohs()?

系统配置:

  1. 覆盖率 5.3
  2. 红帽 6
  3. GCC 版本 4.4.5

【问题讨论】:

    标签: c sockets coverity


    【解决方案1】:

    我相信这意味着该函数被标记为破坏处理器中 conditions flags 的函数,但该标记被忽略了。

    This commit 到 OpenViz 显示正在添加的“cc”clobber,它是内联 asm 语句的参数,如下所示:

    asm("bsch %2,%0" : "=r"(bit) : "0"(0), "r"(x & -x) : "cc");
                                                          ^
                                                          |
                                                        hello!
    

    虽然不太清楚为什么会生成警告,也许 Coverity 试图传达有问题的函数包含此类 asm,但它无法在分析中考虑“cc”信息?

    我认为没有理由放弃基于此警告的函数,警告似乎相当“元”,不是关于代码本身,而是关于 Coverity 对代码的处理。

    注意:我从未使用过 Coverity。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 2018-06-30
      相关资源
      最近更新 更多