arrow
返回

Detecting Vector Container Errors in C plus plus Programs via Abstract Interpretation

delete2026-01-01
delete0
PRE
AI
L
Liu, Siyu *
C
Chen, Liqian
F
Fan, Guangsheng
Y
Yin, Banghu
H
Huang, Chun
W
Wang, Ji
DOI:10.1007/978-981-95-4213-0_7delete
delete原文链接
delete原文求助
delete分享
delete收藏
摘要

摘要

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
FORMAL METHODS AND SOFTWARE ENGINEERING, ICFEM 2025
IF:
0
论文数:
19
被引数:
0

机构

N
national university of defense technology - china
学者数:
1.8W
论文数: 1.4W
被引数: 9
引用论文

引用论文

Abstract interpretation
err1996-06-01
err109
errOAAI
errCousot, P
err分享
err收藏
A Primer on Galois Connections
err2006-12-17
err0
PREAI
errM. ERNÉ; J. KOSLOWSKI; A. MELTON; G. E. STRECKER
err分享
err收藏
没有更多内容