1. The code you put in a system (say, a
telephone switch) to make sure that the users can't do any
damage. Since users always want to be able to do everything but
never want to suffer for any mistakes, the construction of a
firewall is a question not only of defensive coding but also of
interface presentation, so that users don't even get curious about
those corners of a system where they can burn themselves.
2. Any sanity check inserted to catch a can't happen error.
Wise programmers often change code to fix a bug twice: once to fix
the bug, and once to insert a firewall which would have arrested
the bug before it did quite as much damage.