Next Article in Journal
Improved Long Short-Term Memory Network with Multi-Attention for Human Action Flow Evaluation in Workshop
Next Article in Special Issue
An Approach for Detecting Feasible Paths Based on Minimal SSA Representation and Symbolic Execution
Previous Article in Journal
Continuous Genetic Algorithms in the Optimization of Logistic Networks: Applicability Assessment and Tuning
Previous Article in Special Issue
An Abstraction Technique for Verifying Shared-Memory Concurrency
Article

Abstracting Strings for Model Checking of C Programs

1
Faculty of Informatics, Masaryk University, Botanickà 68A, 60200 Brno, Czech Republic
2
Scientific Campus, Ca’ Foscari University of Venice, Via Torino 155, Mestre, 30172 Venice, Italy
*
Authors to whom correspondence should be addressed.
Appl. Sci. 2020, 10(21), 7853; https://doi.org/10.3390/app10217853
Received: 30 September 2020 / Revised: 20 October 2020 / Accepted: 2 November 2020 / Published: 5 November 2020
(This article belongs to the Special Issue Static Analysis Techniques: Recent Advances and New Horizons)
Data type abstraction plays a crucial role in software verification. In this paper, we introduce a domain for abstracting strings in the C programming language, where strings are managed as null-terminated arrays of characters. The new domain M-String is parametrized on an index (bound) domain and a character domain. By means of these different constituent domains, M-Strings captures shape information on the array structure as well as value information on the characters occurring in the string. By tuning these two parameters, M-String can be easily tailored for specific verification tasks, balancing precision against complexity. The concrete and the abstract semantics of basic operations on strings are carefully formalized, and soundness proofs are fully detailed. Moreover, for a selection of functions contained in the standard C library, we provide the semantics for character access and update, enabling an automatic lifting of arbitrary string-manipulating code into our new domain. An implementation of abstract operations is provided within a tool that automatically lifts existing programs into the M-String domain along with an explicit-state model checker. The accuracy of the proposed domain is experimentally evaluated on real-case test programs, showing that M-String can efficiently detect real-world bugs as well as to prove that program does not contain them after they are fixed. View Full-Text
Keywords: string analysis; model checking; abstract interpretation; abstract domain string analysis; model checking; abstract interpretation; abstract domain
Show Figures

Figure 1

MDPI and ACS Style

Lauko, H.; Olliaro, M.; Cortesi, A.; Roc̆kai, P. Abstracting Strings for Model Checking of C Programs. Appl. Sci. 2020, 10, 7853. https://doi.org/10.3390/app10217853

AMA Style

Lauko H, Olliaro M, Cortesi A, Roc̆kai P. Abstracting Strings for Model Checking of C Programs. Applied Sciences. 2020; 10(21):7853. https://doi.org/10.3390/app10217853

Chicago/Turabian Style

Lauko, Henrich, Martina Olliaro, Agostino Cortesi, and Petr Roc̆kai. 2020. "Abstracting Strings for Model Checking of C Programs" Applied Sciences 10, no. 21: 7853. https://doi.org/10.3390/app10217853

Find Other Styles
Note that from the first issue of 2016, MDPI journals use article numbers instead of page numbers. See further details here.

Article Access Map by Country/Region

1
Back to TopTop