Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation 2019
DOI: 10.1145/3314221.3314645
|View full text |Cite
|
Sign up to set email alerts
|

Sound regular expression semantics for dynamic symbolic execution of JavaScript

Abstract: Support for regular expressions in symbolic execution-based tools for test generation and bug finding is insufficient. Common aspects of mainstream regular expression engines, such as backreferences or greedy matching, are ignored or imprecisely approximated, leading to poor test coverage or missed bugs. In this paper, we present a model for the complete regular expression language of ECMAScript 2015 (ES6), which is sound for dynamic symbolic execution of the test and exec functions. We model regular expressio… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
24
0

Year Published

2019
2019
2024
2024

Publication Types

Select...
5
1
1

Relationship

0
7

Authors

Journals

citations
Cited by 26 publications
(26 citation statements)
references
References 42 publications
0
24
0
Order By: Relevance
“…Unfortunately, the gap between the string functions that are supported by current string solvers and those supported by modern programming languages is still too big. As convincingly argued in [Loring et al 2019] in the context of constraint solving, the widely used Regular Expressions in modern programming languages (among others, JavaScript, Python, etc. )Ðwhich we call RegEx in the sequelÐare one important and frequently occurring feature in programs that are difficult for existing SMT theories over strings to model and solve, especially because their syntaxes and semantics substantially differ from the notion of regular expressions in formal language theory [Hopcroft and Ullman 1979].…”
Section: Introductionmentioning
confidence: 89%
See 3 more Smart Citations
“…Unfortunately, the gap between the string functions that are supported by current string solvers and those supported by modern programming languages is still too big. As convincingly argued in [Loring et al 2019] in the context of constraint solving, the widely used Regular Expressions in modern programming languages (among others, JavaScript, Python, etc. )Ðwhich we call RegEx in the sequelÐare one important and frequently occurring feature in programs that are difficult for existing SMT theories over strings to model and solve, especially because their syntaxes and semantics substantially differ from the notion of regular expressions in formal language theory [Hopcroft and Ullman 1979].…”
Section: Introductionmentioning
confidence: 89%
“…see [Abdulla et al 2018;Chen et al 2019;Liang et al 2014;Trinh et al 2016;), i.e., features that can be found in the above examples like capturing groups, greedy/lazy matching, and references are not supported. This limitation of existing string solvers was already mentioned in the recent paper [Loring et al 2019].…”
Section: Introductionmentioning
confidence: 91%
See 2 more Smart Citations
“…Symbolic Execution Tools for JavaScript and C. Most existing symbolic execution tools for JavaScript aim at bugfinding and target specific types of bugs, such as security vulnerabilities related to the misuse of strings [57], malformed Web API requests [66], DOM-API-specific bugs [35], or bugs involving regular expressions [36]. These tools aim at code in the large, primarily focussing on scalability and coverage.…”
Section: Parametric Framework For Abstract Interpretationmentioning
confidence: 99%