contain buffer overflows, race conditions, and other exploitable faults, is one
way in which the confusion about these distinct concepts has been clarified.
When it comes to practical advice, however, this distinction still seems
muddy. A significant amount of literature and teaching about “secure software