Journal of Automated Reasoning

, Volume 58, Issue 1, pp 33–65

Automatically Proving Termination and Memory Safety for Programs with Pointer Arithmetic

  • Thomas Ströder
  • Jürgen Giesl
  • Marc Brockschmidt
  • Florian Frohn
  • Carsten Fuhs
  • Jera Hensel
  • Peter Schneider-Kamp
  • Cornelius Aschermann
Article

DOI: 10.1007/s10817-016-9389-x

Cite this article as:
Ströder, T., Giesl, J., Brockschmidt, M. et al. J Autom Reasoning (2017) 58: 33. doi:10.1007/s10817-016-9389-x

Abstract

While automated verification of imperative programs has been studied intensively, proving termination of programs with explicit pointer arithmetic fully automatically was still an open problem. To close this gap, we introduce a novel abstract domain that can track allocated memory in detail. We use it to automatically construct a symbolic execution graph that over-approximates all possible runs of a program and that can be used to prove memory safety. This graph is then transformed into an integer transition system, whose termination can be proved by standard techniques. We implemented this approach in the automated termination prover AProVE and demonstrate its capability of analyzing C programs with pointer arithmetic that existing tools cannot handle.

Keywords

LLVM C programs Termination Memory Safety Symbolic Execution 

Funding information

Funder NameGrant NumberFunding Note
Deutsche Forschungsgemeinschaft
  • GI 274/6-1
  • Research Training Group 1298 AlgoSyn
Danish Council for Indpendent Research, Natural Sciences

    Copyright information

    © Springer Science+Business Media Dordrecht 2016

    Authors and Affiliations

    • Thomas Ströder
      • 1
    • Jürgen Giesl
      • 1
    • Marc Brockschmidt
      • 2
    • Florian Frohn
      • 1
    • Carsten Fuhs
      • 3
    • Jera Hensel
      • 1
    • Peter Schneider-Kamp
      • 4
    • Cornelius Aschermann
      • 1
    1. 1.LuFG Informatik 2RWTH Aachen UniversityAachenGermany
    2. 2.Microsoft Research CambridgeCambridgeUK
    3. 3.Department of Computer Science and Information SystemsBirkbeck, University of LondonLondonUK
    4. 4.Department of Mathematics and Computer ScienceUniversity of Southern DenmarkOdenseDenmark

    Personalised recommendations