ABSTRACT

This chapter discusses Security and Dependability Aspects. It shows how to detect code mistakes and vulnerabilities, mostly related to bogus memory accesses, by means of static code analysis techniques. The chapter discusses the general techniques used by static analysis tools—and Splint. Splint is able to perform many checks without help from the programmer, more advanced checks require additional information given in source code annotations. Static code analysis is able to infer some properties of a program by working exclusively at the source code level—possibly with some additional hints from the programmer, given in the form of source code annotations. Static code analysis does not require any kind of runtime support from the processor and the operating system. Static code analysis is therefore a useful technique to improve source code quality, reliability, and alleviate security concerns. In modern high-level programming languages, functions communicate with their caller through a well-defined interface.