randstruct: Enable function pointer struct detection
This enables the automatic structure selection logic in the randstruct GCC plugin. The selection logic randomizes all structures that contain only function pointers, unless marked with __no_randomize_layout. Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
Родитель
3598f5d087
Коммит
9225331b31
12
arch/Kconfig
12
arch/Kconfig
|
@ -473,11 +473,13 @@ config GCC_PLUGIN_RANDSTRUCT
|
|||
depends on GCC_PLUGINS
|
||||
select MODVERSIONS if MODULES
|
||||
help
|
||||
If you say Y here, the layouts of structures explicitly
|
||||
marked by __randomize_layout will be randomized at
|
||||
compile-time. This can introduce the requirement of an
|
||||
additional information exposure vulnerability for exploits
|
||||
targeting these structure types.
|
||||
If you say Y here, the layouts of structures that are entirely
|
||||
function pointers (and have not been manually annotated with
|
||||
__no_randomize_layout), or structures that have been explicitly
|
||||
marked with __randomize_layout, will be randomized at compile-time.
|
||||
This can introduce the requirement of an additional information
|
||||
exposure vulnerability for exploits targeting these structure
|
||||
types.
|
||||
|
||||
Enabling this feature will introduce some performance impact,
|
||||
slightly increase memory usage, and prevent the use of forensic
|
||||
|
|
|
@ -436,9 +436,6 @@ static int is_pure_ops_struct(const_tree node)
|
|||
|
||||
gcc_assert(TREE_CODE(node) == RECORD_TYPE || TREE_CODE(node) == UNION_TYPE);
|
||||
|
||||
/* XXX: Do not apply randomization to all-ftpr structs yet. */
|
||||
return 0;
|
||||
|
||||
for (field = TYPE_FIELDS(node); field; field = TREE_CHAIN(field)) {
|
||||
const_tree fieldtype = get_field_type(field);
|
||||
enum tree_code code = TREE_CODE(fieldtype);
|
||||
|
|
Загрузка…
Ссылка в новой задаче