A Reachability Predicate for Analyzing Low-Level Software

Reasoning about heap-allocated data structures such as linked lists and arrays is challenging. The reachability predicate has proved to be very useful for such reasoning in type-safe languages such as Java in which memory is manipulated by dereferencing object fields. Sound and precise analysis for such data structures becomes significantly more challenging in the presence of low-level pointer manipulation that is prevalent in systems software. In this paper, we give a novel formalization of the reachability predicate in the presence of internal pointers and pointer arithmetic. We have designed an annotation language for C programs that makes use of the new predicate. This language enables us to specify properties of many interesting data structures present in the Windows kernel. We present preliminary experience with a prototype verifier on a set of illustrative C benchmarks.

tr-2006-154.pdf
PDF file

In  Tools and Algorithms for the Construction and Analysis of Systems (TACAS '07)

Publisher  Springer Verlag
All copyrights reserved by Springer 2007.

Details

TypeInproceedings
Pages0
NumberMSR-TR-2006-154
InstitutionMicrosoft Research
> Publications > A Reachability Predicate for Analyzing Low-Level Software