A Decision Procedure for Path Feasibility of String Manipulating Programs with Integer Data Type
Taolue Chen, Matthew Hague, Jinlong He, Denghang Hu, Anthony Widjaja, Lin, Philipp Rummer, Zhilin Wu

TL;DR
This paper introduces a decision procedure and solver for a highly expressive class of string constraints involving integer data types, enabling more complete analysis of string-manipulating programs.
Contribution
It presents the first decidable method for a broad class of string and integer constraints, including operations like concatenation, replaceAll, reverse, and finite transducers.
Findings
Successfully handles finite transducers and integer constraints.
Performance comparable to state-of-the-art solvers.
First solver capable of tackling such expressive string constraints.
Abstract
Strings are widely used in programs, especially in web applications. Integer data type occurs naturally in string-manipulating programs, and is frequently used to refer to lengths of, or positions in, strings. Analysis and testing of string-manipulating programs can be formulated as the path feasibility problem: given a symbolic execution path, does there exist an assignment to the inputs that yields a concrete execution that realizes this path? Such a problem can naturally be reformulated as a string constraint solving problem. Although state-of-the-art string constraint solvers usually provide support for both string and integer data types, they mainly resort to heuristics without completeness guarantees. In this paper, we propose a decision procedure for a class of string-manipulating programs which includes not only a wide range of string operations such as concatenation,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsWeb Application Security Vulnerabilities · Software Testing and Debugging Techniques · Security and Verification in Computing
