Genesis , Prophet, SPR, and Kali are automatic patch generation systems for large real-world C programs. Genesis, Prophet, SPR, and Kali are available here. Genesis and Prophet pioneered the use of machine learning in automatic patch generation. Because Kali only deletes functionality, we do not recommend using it to obtain patches that change or add functionality.
CodeCarbonCopy and CodePhage are systems for automatically finding and transferring code between applications. CodePhage automatically transfers security checks between applications to eliminate security vulnerabilities. CodeCarbonCopy transfers complete blocks of functionality from a donor application into a recipient application.
DIODE is a system for automatically generating inputs that trigger integer and buffer overflows.
DroidSafe is a static information flow analysis for Android applications. DroidSafe is available here and here.
Chisel and Rely are systems for reasoning about the accuracy and reliability of programs that execute on approximate hardware platforms. The papers presenting these systems won Best Paper awards at OOPSLA 2014 and OOPSLA 2013.
RCV implements recovery shepherding, which attaches to the application process when an error occurs, repairs the execution, tracks the repair effects within the application process, and detaches from the process after all repair effects are flushed from the process state. The current implementation of RCV enables applications to recover from divide by zero and null dereference errors.
SIFT uses static program analysis to generate input filters that discard inputs that may trigger integer overflow errors in the computations of the sizes of allocated memory blocks or the number of copied bytes in block copy operations. SIFT is sound - if an input passes the filter, it will not trigger an overflow error at any analyzed site.