微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

任何 C 的静态分析器都可以找到 sprintf 的潜在缓冲区溢出?

如何解决任何 C 的静态分析器都可以找到 sprintf 的潜在缓冲区溢出?

我正在尝试对以下代码运行静态代码分析器:

<div>part 1 working</div>
<div test1="m">
  <div class="otherdiv"></div>
  <div class="otherdiv"></div>
  <div class="header"></div>
</div>


<div>part 2 with attributes - not working</div>
<svg version="1.1" viewBox="0 0 300 120" xmlns="http://www.w3.org/2000/svg">
   <defs>
   <g id="cube" class="cube-unit">
   <rect class="frontside" width="21" height="24" fill="var(--frontColor)" stroke="var(--strokeColor)" transform="skewY(30)"/>
   <rect class="rightside" width="21" height="24" transform="skewY(-30) translate(21 24.3)"/>
   <rect class="topside" width="21" height="21" transform="scale(1.41,.81) rotate(45) translate(0 -21)"/>
   </g>
   </defs>

  <use xlink:href="#cube" x="21" y="12"/>
  <use xlink:href="#cube" x="42" y="24" c-status="pause"/>
  <use xlink:href="#cube" x="63" y="36" c-begin="tomorrow"/>
  <use xlink:href="#cube" x="84" y="48"/>
  <use xlink:href="#cube" x="105" y="60" c-status="check" c-begin="tomorrow"/>
  <use xlink:href="#cube" x="126" y="72"/>
</svg>

我尝试了 //cppcheck_test.c #include <stdio.h> #include <string.h> #define MAX_LEN 5 int func(const char* x) { char key[MAX_LEN + 1] = {0}; sprintf(key,"%s ",x); return strlen(key); } int main() { func("12345admin12345"); return 0; } (来自 fb)、cppcheck 等等。他们都没有给出上述代码的任何错误。 但是如果你运行上面的代码,它就会崩溃(应该是这样):

infer

是否有任何静态分析器可以处理此类错误?还是我在寻找错误的工具?是否有任何工具/工具组可以看到此类错误并发出警告?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。