ACM Home Page
Please provide us with feedback. Feedback
Backwards-compatible array bounds checking for C with very low overhead
Full text PdfPdf (169 KB)
Source International Conference on Software Engineering archive
Proceedings of the 28th international conference on Software engineering table of contents
Shanghai, China
SESSION: Research papers: test & analysis II table of contents
Pages: 162 - 171  
Year of Publication: 2006
ISBN:1-59593-375-1
Authors
Dinakar Dhurjati  University of Illinois at Urbana-Champaign, Urbana, IL
Vikram Adve  University of Illinois at Urbana-Champaign, Urbana, IL
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 14,   Downloads (12 Months): 84,   Citation Count: 13
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1134285.1134309
What is a DOI?

ABSTRACT

The problem of enforcing correct usage of array and pointer references in C and C++ programs remains unsolved. The approach proposed by Jones and Kelly (extended by Ruwase and Lam) is the only one we know of that does not require significant manual changes to programs, but it has extremely high overheads of 5x-6x and 11x-12x in the two versions. In this paper, we describe a collection of techniques that dramatically reduce the overhead of this approach, by exploiting a fine-grain partitioning of memory called Automatic Pool Allocation. Together, these techniques bring the average overhead checks down to only 12% for a set of benchmarks (but 69% for one case). We show that the memory partitioning is key to bringing down this overhead. We also show that our technique successfully detects all buffer overrun violations in a test suite modeling reported violations in some important real-world programs.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
2
 
3
 
4
5
6
7
8
9
 
10
R. W. M. Jones and P. H. J. Kelly. Backwards-compatible bounds checking for arrays and pointers in c programs. In Automated and Algorithmic Debugging, pages 13--26, 1997.
 
11
S. C. Kendall. Bcc: Runtime checking for c programs. In In Proceedings of the USENIX, 1983.
 
12
13
 
14
15
 
16
 
17
O. Ruwase and M. Lam. A practical dynamic buffer overflow detector. In In Proceedings of the Network and Distributed System Security (NDSS) Symposium, pages 159--169, Feb. 2004.
 
18
19
20
21
 
22
M. Zhivich, T. Leek, and R. Lippmann. Dynamic buffer overflow detection. In BUGS: Workshop on the Evaluation of Software Defect Detection Tools, 2005.
23

CITED BY  13

Collaborative Colleagues:
Dinakar Dhurjati: colleagues
Vikram Adve: colleagues