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.