Buffer Overflow Defenses. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle. http://sfsecurity.pr.erau.edu.
Operating system tools
Disable execution of code outside the code space – It is possible on some architectures to distinguish between code and data and not allow data to be executed as code.
Intrusion detection systems – These are programs that watch for abnormal behavior or behavior that is similar to attack behavior.
Generation of an interrupt – With hardware support it is possible to set bounds on a buffer and generate an interrupt when an attempt is made to access or change memory outside those bounds.