ACM Home Page
Please provide us with feedback. Feedback
HAMPI: a solver for string constraints
Full text PdfPdf (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
SIGSOFT: ACM Special Interest Group on Software Engineering
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 30,   Downloads (12 Months): 70,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1572272.1572286
What is a DOI?

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
 
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
 
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
 
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
 
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
 
40
Y. Xie and A. Aiken. Saturn: A scalable framework for error detection using Boolean satisfiability. In CAV, 2007.

Collaborative Colleagues:
Adam Kiezun: colleagues
Vijay Ganesh: colleagues
Philip J. Guo: colleagues
Pieter Hooimeijer: colleagues
Michael D. Ernst: colleagues