Stack smashing protection is a feature of GCC that enables a program to
detect buffer overflows and immediately terminate execution, rather than
continuing execution with corrupt internal data structures. It uses
"canaries" and local variable reordering to reduce the likelihood of
stack corruption through buffer overflows.

Options that affect stack smashing protection:

-fstack-protector
    Enables protection for functions that are vulnerable to stack
    smashing, such as those that call alloca() or use pointers.

-fstack-protector-all
    Enables protection for all functions.

-Wstack-protector
    Warns about functions that will not be protected. Only active when
    -fstack-protector has been used.

Applications built with stack smashing protection should link with the
ssp library by using the option "-lssp" for systems with glibc-2.3.x or
older; glibc-2.4 and newer versions provide this functionality in libc.

The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not
have support for stack smashing protection.

More documentation can be found at the project's website:
http://researchweb.watson.ibm.com/trl/projects/security/ssp/
