SoftBound: Highly compatible and complete spatial memory safety for C

Santosh Nagarakatte, Jianzhou Zhao, Milo M.K. Martin, Steve Zdancewic

Research output: Contribution to journalArticlepeer-review

137 Scopus citations


The serious bugs and security vulnerabilities facilitated by C/C++'s lack of bounds checking are well known, yet C and C++ remain in widespread use. Unfortunately, C's arbitrary pointer arithmetiC., conflation of pointers and arrays, and programmer-visible memory layout make retrofitting C/C++ with spatial safety guarantees extremely challenging. Existing approaches suffer from incompleteness, have high runtime overhead, or require non-trivial changes to the C source code. Thus far, these deficiencies have prevented widespread adoption of such techniques. This paper proposes SoftBound, a compile-time transformation for enforcing spatial safety of C. Inspired by HardBound, a previously proposed hardware-assisted approach, SoftBound similarly records base and bound information for every pointer as disjoint metadata. This decoupling enables SoftBound to provide spatial safety without requiring changes to C source code. Unlike HardBound, SoftBound is a software-only approach and performs metadata manipulation only when loading or storing pointer values. A formal proof shows that this is sufficient to provide spatial safety even in the presence of arbitrary casts. SoftBound's full checking mode provides complete spatial violation detection with 67% runtime overhead on average. To further reduce overheads, SoftBound has a store-only checking mode that successfully detects all the security vulnerabilities in a test suite at the cost of only 22% runtime overhead on average.

Original languageEnglish (US)
Pages (from-to)245-258
Number of pages14
JournalACM SIGPLAN Notices
Issue number6
StatePublished - Jun 2009
Externally publishedYes

All Science Journal Classification (ASJC) codes

  • Computer Science(all)


  • Buffer overflows
  • C
  • Spatial memory safety


Dive into the research topics of 'SoftBound: Highly compatible and complete spatial memory safety for C'. Together they form a unique fingerprint.

Cite this