Memory-related errors such as buffer overflows and dangling pointers remain one of the principle reasons for the failure of C programs. Such failures do not always manifest as program crashes but also as incorrect outputs. Well-tested programs do run error free in most cases, but studies have shown that even such programs can crash when presented with unexpected data. Out of bounds array and pointer accesses are an important subclass of memory-related errors. Despite many years of research in bounds-checking, current solutions are mostly deployed as debugging and testing aids. This is because the current techniques for bounds protection are either too performance intensive to be used in production software or are unable to process all valid C programs.
Hence, in this thesis, we present a backwards compatible lightweight bounds checking technique that aims to provide practical protection to C programs that can be deployed in production software. Our technique involves flanking memory objects with guard zones. We generate instrumentation to check that memory references do not access these guard zones. We are able to avoid some of the compatibility problems associated with previous bounds-checking techniques by avoiding pointer arithmetic checks, and instead relying on checks on the values of dereferenced pointers. To obtain good performance, we partition these runtime checks into two parts. The first part is always performed, and is very fast because it does not introduce additional memory dereferences. The more expensive second part is triggered only if the first check succeeds, which is relatively rare. We present an efficient implementation of our technique. Our results show that the technique has a relatively low overhead in CPU intensive benchmarks. Furthermore, by instrumenting real world applications, we prove the practical utility of our approach.
Some files may require a special program or browser plug-in. More Information
|Advisor:||Sekar, Ram C.|
|Commitee:||Johnson, Robert, Ramakrishnan, C. R.|
|School:||State University of New York at Stony Brook|
|School Location:||United States -- New York|
|Source:||MAI 49/01M, Masters Abstracts International|
Copyright in each Dissertation and Thesis is retained by the author. All Rights Reserved
The supplemental file or files you are about to download were provided to ProQuest by the author as part of a
dissertation or thesis. The supplemental files are provided "AS IS" without warranty. ProQuest is not responsible for the
content, format or impact on the supplemental file(s) on our system. in some cases, the file type may be unknown or
may be a .exe file. We recommend caution as you open such files.
Copyright of the original materials contained in the supplemental file is retained by the author and your access to the
supplemental files is subject to the ProQuest Terms and Conditions of use.
Depending on the size of the file(s) you are downloading, the system may take some time to download them. Please be