I want to do some experiments with buffer overflows on my various virtual machines, including (but not limited to) Debian 6, Ubuntu 12.04, Fedora 16, but every time I try to execute the buffer overflow exploit I get the following message:

stack smashing detected (core dumped)

After doing my research I read that it is a feature called buffer overflow protection implemented in the compiler. GCC for instance uses GCC Stack-Smashing Protector (ProPolice), Clang/LLVM uses two buffer overflow detectors, SafeCode and AddressSanitizer.

My question is: Since I really want to check out buffer overflow attacks on my machines is there a way (a compiler flag, perhaps? a linux config file?) to deactivate the buffer overflow protection?

1 Answer 1



On gcc (man gcc) the checks are enabled by

      Emit extra code to check for buffer overflows, such as stack smashing attacks.  >This is done by adding a guard variable to functions with
      vulnerable objects.  This includes functions that call alloca, and functions with >buffers larger than 8 bytes.  The guards are initialized when
      a function is entered and then checked when the function exits.  If a guard check >fails, an error message is printed and the program exits.

      Like -fstack-protector except that all functions are protected.

You can disable both by prepending no- to the option name

-fno-stack-protector -fno-stack-protector-all


On LLVM/Clang (http://clang.llvm.org/docs/UsersManual.html#commandline) to enable/disable AdressSanitizer:

-f[no-]address-sanitizer: Turn on AddressSanitizer, a memory error detector.

and SAFECode (http://safecode.cs.illinois.edu/docs/UsersGuide.html)


  • 2
    Is there a (simple) way to detect, whether a program has been compiled with SSP?
    – Michuelnik
    Aug 30, 2012 at 13:37
  • 2
    @Michuelnik you could see if the binary contains any reference to __stack_chk_fail (e.g., strings /bin/mybinary | grep __stack_chk_fail
    – Matteo
    Aug 30, 2012 at 13:53
  • 7
    i just tested it with GCC 4.7 and 4.1: option -fno-stack-protector-all is not recognized (-fstack-protector, -fstack-protector-all and -fno-stack-protector are recognized)
    – marcin
    Sep 11, 2013 at 17:19
  • 1
    gcc: error: unrecognized command line option ‘-fno-stack-protector-all’; did you mean ‘-fstack-protector-all’?
    – Clément
    Sep 8, 2019 at 11:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.