Since software defects due to buffer overflows are very
present in current computer programs, especially these
which are written in C or C++, a lot of approaches to eliminate
this source of defect exist. Some of them tackle this by
modification on the compiler side, as at this stage of software
development chain all needed information for doing
this checks are known. As mentioned before, this requires
recompilation of existing programs. In this section, we discuss
two approaches. The Bound Check C Compiler (BCC)
implicitly adds comparison instructions, which are executed
before the critical memory access happens. In contrast, the
CASH approach uses normal segmentation hardware to detect
illegal memory access.