返回
Detecting Vector Container Errors in C plus plus Programs via Abstract Interpretation
DOI:10.1007/978-981-95-4213-0_7.png)
摘要
En 中文
C++标准模板库(STL)中的向量容器因其灵活性和高效性而被广泛应用,但其元素访问和迭代器操作缺乏边界检查,可能导致内存安全问题,如缓冲区溢出和迭代器失效。现有静态分析工具在检测这些问题方面效果有限,原因在于未能充分考虑到C++向量容器的特性,例如迭代器与向量的联合使用以及向量的内存分配机制。为解决这些问题,本文提出了一种基于抽象解释的缺陷检测方法,该方法能够正式跟踪向量大小和迭代器状态,并识别非法操作。我们将该方法实现为一个名为IKOS4VecErr(基于IKOS)的工具,并在手工制作的基准测试和五个知名开源项目上进行了评估。实验结果表明,我们的工具在检测能力方面显著优于主流静态分析工具(包括IKOS、CSA、Infer和Cppcheck),证明了我们在识别C++向量相关缺陷方面的工作有效性。在手工制作的基准测试中,IKOS4VecErr成功检测出503个缺陷(共505个),而对比工具中表现最好的仅能检测出435个缺陷。在真实世界的开源项目中,我们发现16个此前未被检测到的向量相关错误(而对比工具中表现最好的仅发现4个缺陷)。
Keyword:
Abstract Interpretation
Static Analysis
C plus plus STL Vector
Memory Safety
Abstract Domain
期刊
F
IF:
0
论文数:
19
被引数:
0
机构
引用论文
没有更多内容

