Memory errors can occur in basically every program. Since memory errors are pretty much unavoidable, I wonder what a program needs to be at least impossible to exploit. A lot of research focuses on Control Flow Integrity (CFI). However, even CFI can not prevent data only attacks. Can Data Flow Integrity (DFI) prevent all memory errors from being exploited?