Correcting Memory Errors with by Gene novark, Emery d. berger,
and benjamin G. Zorn Programs written in C and C++ are
susceptible to memory errors, including buffer overflows and
dangling pointers. These errors, which can lead to crashes,
erroneous execution, and security vulnerabilities, are
notoriously costly to repair. Tracking down their location in
the source code is difficult, even when the full memory state of
the program is available. Once the errors are finally found,
fixing them remains challenging: even for critical security-
sensitive bugs, the average time between initial reports and the
issuance of a patch is nearly 1 month. We present Exterminator,
a system that automatically corrects heap-based memory errors
without programmer intervention. Exterminator exploits
randomization to pinpoint errors with high precision. From this
information, Exterminator derives runtime patches that fix these
errors both in current and subsequent executions. In addition,
Exterminator enables collaborative bug corre