J 2020

Abstracting Strings for Model Checking of C Programs

LAUKO, Henrich, Martina OLLIARO, Agostino CORTESI a Petr ROČKAI

Základní údaje

Originální název

Abstracting Strings for Model Checking of C Programs

Autoři

LAUKO, Henrich (703 Slovensko, domácí), Martina OLLIARO (380 Itálie, domácí), Agostino CORTESI (380 Itálie) a Petr ROČKAI (203 Česká republika, domácí)

Vydání

Applied Sciences, Multidisciplinary Digital Publishing Institute, 2020, 2076-3417

Další údaje

Jazyk

angličtina

Typ výsledku

Článek v odborném periodiku

Obor

10200 1.2 Computer and information sciences

Stát vydavatele

Švýcarsko

Utajení

není předmětem státního či obchodního tajemství

Odkazy

Impakt faktor

Impact factor: 2.679

Kód RIV

RIV/00216224:14330/20:00114537

Organizační jednotka

Fakulta informatiky

UT WoS

000588870800001

Klíčová slova anglicky

string analysis; model checking; abstract interpretation; abstract domain

Příznaky

Mezinárodní význam, Recenzováno
Změněno: 29. 4. 2021 08:11, RNDr. Pavel Šmerk, Ph.D.

Anotace

V originále

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.

Návaznosti

GA18-02177S, projekt VaV
Název: Abstrakce a jiné techniky v semi-symbolické verifikaci programů
Investor: Grantová agentura ČR, Abstrakce a jiné techniky v semi-symbolické verifikaci programů