In modern programming languages, more and more functionalities, such as reflection and data interchange, rely on string values.
String analysis statically computes the set of string values that are possibly assigned to a variable, and it involves a certain degree of approximation. During the last decade, several abstract domains approximating string values have been introduced and applied to statically analyze programs. However, most of them are not precise enough to track relational information between string variables whose value is statically unknown (e.g., user input), causing the loss of relevant knowledge about their possible values. This paper introduces a generic approach to formalize relational string abstract domains based on ordering relationships. We instantiate it to several domains built upon different well-known string orders (e.g., substring). We implemented the domain based on the substring ordering into a prototype static analyzer for Go, and we experimentally evaluated its precision and performance on some real-world case studies.
University of Parma - Department of Mathematical, Physical, and Computer Sciences
Ca' Foscari University of Venice - Department of Environmental Sciences, Informatics and Statistics
Sun 16 JanDisplayed time zone: Eastern Time (US & Canada) change
10:20 - 11:50
|Relational String Abstract DomainsRemote|
Vincenzo Arceri University of Parma - Department of Mathematical, Physical, and Computer Sciences, Martina Olliaro Ca' Foscari University of Venice - Department of Environmental Sciences, Informatics and Statistics, Agostino Cortesi Università Ca' Foscari Venezia, Pietro Ferrara Università Ca' Foscari, Venezia, Italy
|Lightweight Shape Analysis based on Physical TypesInPerson|
|A Flow-Insensitive-Complete Program RepresentationRemote|