Author:
Felici Riccardo,Pozzi Laura,Furia Carlo A.
Abstract
AbstractAs research in automatically detecting bugs grows and produces new techniques, having suitable collections of programs with known bugs becomes crucial to reliably and meaningfully compare the effectiveness of these techniques. Most of the existing approaches rely on benchmarks collecting manually curated real-world bugs, or synthetic bugs seeded into real-world programs. Using real-world programs entails that extending the existing benchmarks or creating new ones remains a complex time-consuming task. In this paper, we propose a complementary approach that automatically generates programs with seeded bugs. Our technique, called HyperPUT, builds C programs from a “seed” bug by incrementally applying program transformations (introducing programming constructs such as conditionals, loops, etc.) until a program of the desired size is generated. In our experimental evaluation, we demonstrate how HyperPUT can generate buggy programs that can challenge in different ways the capabilities of modern bug-finding tools, and some of whose characteristics are comparable to those of bugs in existing benchmarks. These results suggest that HyperPUT can be a useful tool to support further research in bug-finding techniques—in particular their empirical evaluation.
Funder
Swiss National Science Foundation
Publisher
Springer Science and Business Media LLC
Reference73 articles.
1. Ammann P, Offutt J (2007) Introduction to software testing, 2nd edn. Cambridge University Press
2. Aschermann C, Schumilo S, Blazytko T, Gawlik R, Holz T (2019) REDQUEEN: fuzzing with input-to-state correspondence. In: 26th annual network and distributed system security symposium, NDSS 2019. The Internet Society, San Diego. https://www.ndss-symposium.org/ndss-paper/redqueen-fuzzing-with-input-to-state-correspondence/
3. Babic D, Bucur S, Chen Y, Ivancic F, King T, Kusano M, Lemieux C, Szekeres L, Wang W (2019) FUDGE: fuzz driver generation at scale. In: Dumas M, Pfahl D, Apel S, Russo A (eds) Proceedings of the ACM joint meeting on European software engineering conference and symposium on the foundations of software engineering, ESEC/SIGSOFT FSE 2019. ACM, Tallinn, pp 975–985. https://doi.org/10.1145/3338906.3340456
4. Baldoni R, Coppa E, D’Elia DC, Demetrescu C, Finocchi I (2018) A survey of symbolic execution techniques. ACM Comput Surv 51(3):50:1–50:39. https://doi.org/10.1145/3182657
5. Bame P (2023) McCabe cyclomatic complexity for C and Cpp. https://manpages.ubuntu.com/manpages/jammy/en/man1/pmccabe.1.html. Accessed 08 Aug 2023