HAMPI
Top Cited Papers
- 19 July 2009
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 105-116
- https://doi.org/10.1145/1572272.1572286
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.Keywords
This publication has 22 references indexed in Scilit:
- Path Feasibility Analysis for String-Manipulating ProgramsPublished by Springer Nature ,2009
- Analyzing Context-Free Grammars Using an Incremental SAT SolverPublished by Springer Nature ,2008
- Program analysis as constraint solvingPublished by Association for Computing Machinery (ACM) ,2008
- Static detection of cross-site scripting vulnerabilitiesPublished by Association for Computing Machinery (ACM) ,2008
- Sound and precise analysis of web applications for injection vulnerabilitiesPublished by Association for Computing Machinery (ACM) ,2007
- Global Grammar ConstraintsPublished by Springer Nature ,2006
- CUTEPublished by Association for Computing Machinery (ACM) ,2005
- Static approximation of dynamically generated Web pagesPublished by Association for Computing Machinery (ACM) ,2005
- Resolve and ExpandPublished by Springer Nature ,2005
- A Tool for Checking ANSI-C ProgramsPublished by Springer Nature ,2004