Re: [patch 2/5] Add the Kconfig option for the stackprotector feature

Adrian Bunk
2006-07-29T17:48:50Z

On Fri, Jul 28, 2006 at 06:03:46PM +0200, Arjan van de Ven wrote:
>...
> --- linux-2.6.18-rc2-git5-stackprot.orig/arch/x86_64/Kconfig
> +++ linux-2.6.18-rc2-git5-stackprot/arch/x86_64/Kconfig
> @@ -522,6 +522,31 @@ config SECCOMP
>
> If unsure, say Y. Only embedded should say N here.
>
> +config CC_STACKPROTECTOR
> + bool "Enable -fstack-protector buffer overflow detection (EXPRIMENTAL)"
> + depends on EXPERIMENTAL
> + default n

You can remove the "default n".

> + help
> + This option turns on the -fstack-protector GCC feature that is new
> + in GCC version 4.1. This feature puts, at the beginning of
> + critical functions, a canary value on the stack just before the return
> + address, and validates the value just before actually returning.
> + Stack based buffer overflows that need to overwrite this return
> + address now also overwrite the canary, which gets detected.
> +
> + NOTE
> + This feature requires gcc version 4.2 or above, or a distribution
> + gcc with the feature backported. For older gcc versions, this is a NOP.

After reading this thread, I do understand why you write once
"GCC version 4.1" and once "gcc version 4.2".

But for the normal user this will be quite confusing.

What about simply removing the first sentence of the help text since
it's anyway handled by the NOTE?

> +config CC_STACKPROTECTOR_ALL
> + bool "Use stack-protector for all functions"
> + depends on CC_STACKPROTECTOR
> + default n

You can remove the "default n".

> + help
> + Normally, GCC only inserts the canary value protection for
> + functions that use large-ish on-stack buffers. By enabling
> + this option, GCC will be asked to do this for ALL functions.
> +

cu
Adrian

--

Gentoo kernels are 42 times more popular than SUSE kernels among
KLive users (a service by SUSE contractor Andrea Arcangeli that
gathers data about kernels from many users worldwide).

There are three kinds of lies: Lies, Damn Lies, and Statistics.
Benjamin Disraeli