  Buffer overflow detection and mitigation for C programs has been an important
concern for a long time. This paper defines a string buffer overflow analysis
for C programs. The key ideas of our formulation are (a) separating buffers
from the pointers that point to them, (b) modelling buffers in terms of sizes
and sets of positions of null characters, and (c) defining stateless functions
to compute the sets of null positions and mappings between buffers and
pointers.
  This exercise has been carried out to test the feasibility of describing such
an analysis in terms of lattice valued functions and relations to facilitate
automatic construction of an analyser without the user having to write
C/C++/Java code. This is facilitated by devising stateless formulations because
stateful formulations combine features through side effects in states raising a
natural requirement of C/C++/Java code to be written to describe them. Given
the above motivation, the focus of this paper is not to build good static
approximations for buffer overflow analysis but to show how given static
approximations could be formalized in terms of stateless formulations so that
they become amenable to automatic construction of analysers.

Programming Languages