ESP: Path-sensitive program verification in polynomial time

被引:126
作者
Das, M [1 ]
Lerner, S
Seigle, M
机构
[1] Microsoft Res, Redmond, WA 98052 USA
[2] Univ Washington, Seattle, WA 98195 USA
关键词
algorithms; security; verification; path-sensitive analysis; dataflow analysis; error detection;
D O I
10.1145/543552.512538
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
In this paper, we present a new algorithm for partial program verification that runs in polynomial time and space. We are interested in checking that a program satisfies a given temporal safety property. Our insight is that by accurately modeling only those branches in a program for which the property-related behavior differs along the arms of the branch, we can design an algorithm that is accurate enough to verify the program with respect to the given property, without paying the potentially exponential cost of full path-sensitive analysis. We have implemented this "property simulation" algorithm as part of a partial verification tool called ESP. We present the results of applying ESP to the problem of verifying the file I/O behavior of a version of the GNU C compiler (gcc, 140,000 LOC). We are able to prove that all of the 646 calls to fprintf in the source code of gcc are guaranteed to print to valid, open files. Our results show that property simulation scales to large programs and is accurate enough to verify meaningful properties.
引用
收藏
页码:57 / 68
页数:12
相关论文
共 28 条
[1]  
AIKEN A, 2002, P ACM SIGPLAN 2002 C
[2]  
AMMONS G, 1998, P ACM SIGPLAN 98 C P
[3]  
AMMONS G, 2002, 29 ACM S PRINC PROGR
[4]  
[Anonymous], 2001, P 18 ACM S OP SYST P
[5]  
BALL T, 2001, P SPIN 01 8 ANN SPIN
[6]  
BODIK R, 1998, S PRINCIPLES PROGRAM, P237
[7]  
Bush WR, 2000, SOFTWARE PRACT EXPER, V30, P775, DOI 10.1002/(SICI)1097-024X(200006)30:7<775::AID-SPE309>3.0.CO
[8]  
2-H
[9]  
COUSOT P, 1977, 4 ACM S PRINC PROGR
[10]  
DAS M, 2000, P ACM SIGPLAN 2000 C