Setting a default value for OPT_INIT_ALL (stable=zero, current=pattern)
- Reply: Jessica Clarke : "Re: Setting a default value for OPT_INIT_ALL (stable=zero, current=pattern)"
- Reply: Colin Percival : "Re: Setting a default value for OPT_INIT_ALL (stable=zero, current=pattern)"
- Reply: Shawn Webb : "Re: Setting a default value for OPT_INIT_ALL (stable=zero, current=pattern)"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 11 Jan 2025 19:43:13 UTC
Hi,
we have support to set a default initialization value for uninitialized
variables (OPT_INIT_ALL in src.conf). Possible values are (copy&paste
from
https://gcc.gnu.org/pipermail/gcc-patches/2021-February/565514.html):
'-ftrivial-auto-var-init=CHOICE'
Initialize automatic variables with either a pattern or with zeroes
to increase program security by preventing uninitialized memory
disclosure and use.
The three values of CHOICE are:
* 'uninitialized' doesn't initialize any automatic variables.
This is C and C++'s default.
* 'pattern' Initialize automatic variables with values which
will likely transform logic bugs into crashes down the line,
are easily recognized in a crash dump and without being values
that programmers can rely on for useful program semantics.
The values used for pattern initialization might be changed in
the future.
* 'zero' Initialize automatic variables with zeroes.
The default is 'uninitialized'.
The main point of this option is to prevent leaking random data by
accident.
What I propose is to have OPT_INIT_ALL set to "zero" in stable branches.
We could maybe also set it to "pattern" in -current. In my opinion this
a similar thing like the malloc production setting, or witness, and so
on.
Any thoughts about this?
In case of a generic consensus of this, I would expect the release
engineering team to take this into their procedure for branching a new
stable branch. The locations where a OPT_INIT_ALL?=zero would need to be
added are share/mk/bsd.lib.mk, share/mk/bsd.prog.mk and
sys/conf/kern.mk.
Bye,
Alexander.
--
http://www.Leidinger.net Alexander@Leidinger.net: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org netchild@FreeBSD.org : PGP 0x8F31830F9F2772BF