| HAMPI: a solver for string constraints |
| Full text |
Pdf
(441 KB)
|
Source
|
International Symposium on Software Testing and Analysis
archive
Proceedings of the eighteenth international symposium on Software testing and analysis
table of contents
Chicago, IL, USA
SESSION: Testing and analysis tools #1
table of contents
Pages 105-116
Year of Publication: 2009
ISBN:978-1-60558-338-9
|
|
Authors
|
|
Adam Kiezun
|
Massachusetts Institute of Technology, Cambridge, MA, USA
|
|
Vijay Ganesh
|
Massachusetts Institute of Technology, Cambridge, MA, USA
|
|
Philip J. Guo
|
Stanford University, Stanford, CA, USA
|
|
Pieter Hooimeijer
|
University of Virginia, Charlottesville, VA, USA
|
|
Michael D. Ernst
|
University of Washington, Seattle, WA, USA
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 30, Downloads (12 Months): 70, Citation Count: 0
|
|
|
ABSTRACT
Many automatic testing, analysis, and verification techniques for programs can be effectively reduced to a constraint generation phase followed by a constraint-solving phase. This separation of concerns often leads to more effective and maintainable tools. The increasing efficiency of off-the-shelf constraint solvers makes this approach even more compelling. However, there are few effective and sufficiently expressive off-the-shelf solvers for string constraints generated by analysis techniques for string-manipulating programs. We designed and implemented Hampi, a solver for string constraints over fixed-size string variables. Hampi constraints express membership in regular languages and fixed-size context-free languages. Hampi constraints may contain context-free-language definitions, regular language definitions and operations, and the membership predicate. Given a set of constraints, Hampi outputs a string that satisfies all the constraints, or reports that the constraints are unsatisfiable. Hampi is expressive and efficient, and can be successfully applied to testing and analysis of real programs. Our experiments use Hampi in: static and dynamic analyses for finding SQL injection vulnerabilities in Web applications; automated bug finding in C programs using systematic testing; and compare Hampi with another string solver. Hampi's source code, documentation, and the experimental data are available at http://people.csail.mit.edu/akiezun/hampi.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Roland Axelsson , Keijo Heljanko , Martin Lange, Analyzing Context-Free Grammars Using an Incremental SAT Solver, Proceedings of the 35th international colloquium on Automata, Languages and Programming, Part II, July 07-11, 2008, Reykjavik, Iceland
[doi> 10.1007/978-3-540-70583-3_34]
|
| |
2
|
A. Biere. Resolve and expand. In SAT, 2005.
|
| |
3
|
A. Biere, A. Cimatti, E. Clarke, O. Strichman, and Y. Zhu. Bounded model checking. Advances in Computers, 2003.
|
| |
4
|
N. Bjørner, N. Tillmann, and A. Voronkov. Path feasibility analysis for string-manipulating programs. In TACAS, 2009.
|
| |
5
|
C. Cadar, D. Dunbar, and D. R. Engler. Klee: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI, 2008.
|
 |
6
|
Cristian Cadar , Vijay Ganesh , Peter M. Pawlowski , David L. Dill , Dawson R. Engler, EXE: automatically generating inputs of death, Proceedings of the 13th ACM conference on Computer and communications security, October 30-November 03, 2006, Alexandria, Virginia, USA
[doi> 10.1145/1180405.1180445]
|
| |
7
|
A. S. Christensen, A. Møller, and M. I. Schwartzbach. Precise analysis of string expressions. In SAS, 2003.
|
| |
8
|
E. M. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In TACAS, 2004.
|
| |
9
|
L. de Moura and N. Bjørner. Z3: An Efficient SMT Solver. In TACAS, 2008.
|
 |
10
|
|
| |
11
|
Brics finite state automata utilities. http://www.brics.dk/automaton/faq.html.
|
| |
12
|
Finite state automata utilities. http://www.let.rug.nl/~vannoord/Fsa/fsa.html.
|
| |
13
|
AT&T FSM library. http://www.research.att.com/~fsmtools/fsm.
|
| |
14
|
Xiang Fu , Xin Lu , Boris Peltsverger , Shijun Chen , Kai Qian , Lixin Tao, A Static Analysis Framework For Detecting SQL Injection Vulnerabilities, Proceedings of the 31st Annual International Computer Software and Applications Conference, p.87-96, July 24-27, 2007
[doi> 10.1109/COMPSAC.2007.43]
|
| |
15
|
V. Ganesh and D. L. Dill. A decision procedure for bit-vectors and arrays. In CAV, 2007.
|
 |
16
|
|
 |
17
|
|
| |
18
|
P. Godefroid, M. Y. Levin, and D. Molnar. Automated whitebox fuzz testing. In NDSS, 2008.
|
 |
19
|
|
| |
20
|
|
 |
21
|
|
 |
22
|
|
| |
23
|
K. Jayaraman, D. Harvison, V. Ganesh, and A. Kie|un. jFuzz: A concolic whitebox fuzzer for Java. In NFM, 2009.
|
| |
24
|
A. Kie|un, P. J. Guo, K. Jayaraman, and M. D. Ernst. Automatic creation of SQL injection and cross-site scripting attacks. In ICSE, 2009.
|
| |
25
|
|
 |
26
|
|
| |
27
|
G. Makanin. The problem of solvability of equations in a free semigroup. Sbornik: Mathematics, 32(2), 1977.
|
 |
28
|
|
 |
29
|
Matthew W. Moskewicz , Conor F. Madigan , Ying Zhao , Lintao Zhang , Sharad Malik, Chaff: engineering an efficient SAT solver, Proceedings of the 38th annual Design Automation Conference, p.530-535, June 2001, Las Vegas, Nevada, United States
[doi> 10.1145/378239.379017]
|
| |
30
|
G. Pesant. A regular language membership constraint for finite sequences of variables. In CP, 2004.
|
| |
31
|
C. Quimper and T. Walsh. Global grammar constraints. In CP, 2006.
|
| |
32
|
|
| |
33
|
|
 |
34
|
|
| |
35
|
|
| |
36
|
|
 |
37
|
|
 |
38
|
|
 |
39
|
Gary Wassermann , Dachuan Yu , Ajay Chander , Dinakar Dhurjati , Hiroshi Inamura , Zhendong Su, Dynamic test input generation for web applications, Proceedings of the 2008 international symposium on Software testing and analysis, July 20-24, 2008, Seattle, WA, USA
[doi> 10.1145/1390630.1390661]
|
| |
40
|
Y. Xie and A. Aiken. Saturn: A scalable framework for error detection using Boolean satisfiability. In CAV, 2007.
|
|