  The heap is a critical and widely used component of many applications. Due to
its dynamic nature, combined with the complexity of heap management algorithms,
it is also a frequent target for security exploits. To enhance the heap's
security, various heap protection techniques have been introduced, but they
either introduce significant runtime overhead or have limited protection.
  We present CAMP, a new sanitizer for detecting and capturing heap memory
corruption. CAMP leverages a compiler and a customized memory allocator. The
compiler adds boundary-checking and escape-tracking instructions to the target
program, while the memory allocator tracks memory ranges, coordinates with the
instrumentation, and neutralizes dangling pointers. With the novel error
detection scheme, CAMP enables various compiler optimization strategies and
thus eliminates redundant and unnecessary check instrumentation. This design
minimizes runtime overhead without sacrificing security guarantees. Our
evaluation and comparison of CAMP with existing tools, using both real-world
applications and SPEC CPU benchmarks, show that it provides even better heap
corruption detection capability with lower runtime overhead.
