Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
linux
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martyn Welch
linux
Commits
ad05e6ca
Commit
ad05e6ca
authored
7 years ago
by
Kees Cook
Browse files
Options
Downloads
Plain Diff
Merge branch 'for-next/gcc-plugin/structleak' into for-next/gcc-plugins
parents
9225331b
f7dd2507
Loading
Loading
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
arch/Kconfig
+7
-0
7 additions, 0 deletions
arch/Kconfig
scripts/Makefile.gcc-plugins
+1
-0
1 addition, 0 deletions
scripts/Makefile.gcc-plugins
scripts/gcc-plugins/structleak_plugin.c
+11
-2
11 additions, 2 deletions
scripts/gcc-plugins/structleak_plugin.c
with
19 additions
and
2 deletions
arch/Kconfig
+
7
−
0
View file @
ad05e6ca
...
...
@@ -458,6 +458,13 @@ config GCC_PLUGIN_STRUCTLEAK
* https://grsecurity.net/
* https://pax.grsecurity.net/
config GCC_PLUGIN_STRUCTLEAK_BYREF_ALL
bool "Force initialize all struct type variables passed by reference"
depends on GCC_PLUGIN_STRUCTLEAK
help
Zero initialize any struct type local variable that may be passed by
reference without having been initialized.
config GCC_PLUGIN_STRUCTLEAK_VERBOSE
bool "Report forcefully initialized variables"
depends on GCC_PLUGIN_STRUCTLEAK
...
...
This diff is collapsed.
Click to expand it.
scripts/Makefile.gcc-plugins
+
1
−
0
View file @
ad05e6ca
...
...
@@ -27,6 +27,7 @@ ifdef CONFIG_GCC_PLUGINS
gcc-plugin-$(CONFIG_GCC_PLUGIN_STRUCTLEAK)
+=
structleak_plugin.so
gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK_VERBOSE)
+=
-fplugin-arg-structleak_plugin-verbose
gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL)
+=
-fplugin-arg-structleak_plugin-byref-all
gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK)
+=
-DSTRUCTLEAK_PLUGIN
gcc-plugin-$(CONFIG_GCC_PLUGIN_RANDSTRUCT)
+=
randomize_layout_plugin.so
...
...
This diff is collapsed.
Click to expand it.
scripts/gcc-plugins/structleak_plugin.c
+
11
−
2
View file @
ad05e6ca
...
...
@@ -16,6 +16,7 @@
* Options:
* -fplugin-arg-structleak_plugin-disable
* -fplugin-arg-structleak_plugin-verbose
* -fplugin-arg-structleak_plugin-byref-all
*
* Usage:
* $ # for 4.5/4.6/C based 4.7
...
...
@@ -42,6 +43,7 @@ static struct plugin_info structleak_plugin_info = {
};
static
bool
verbose
;
static
bool
byref_all
;
static
tree
handle_user_attribute
(
tree
*
node
,
tree
name
,
tree
args
,
int
flags
,
bool
*
no_add_attrs
)
{
...
...
@@ -150,7 +152,9 @@ static void initialize(tree var)
/* these aren't the 0days you're looking for */
if
(
verbose
)
inform
(
DECL_SOURCE_LOCATION
(
var
),
"userspace variable will be forcibly initialized"
);
"%s variable will be forcibly initialized"
,
(
byref_all
&&
TREE_ADDRESSABLE
(
var
))
?
"byref"
:
"userspace"
);
/* build the initializer expression */
initializer
=
build_constructor
(
TREE_TYPE
(
var
),
NULL
);
...
...
@@ -190,7 +194,8 @@ static unsigned int structleak_execute(void)
continue
;
/* if the type is of interest, examine the variable */
if
(
TYPE_USERSPACE
(
type
))
if
(
TYPE_USERSPACE
(
type
)
||
(
byref_all
&&
TREE_ADDRESSABLE
(
var
)))
initialize
(
var
);
}
...
...
@@ -232,6 +237,10 @@ __visible int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gc
verbose
=
true
;
continue
;
}
if
(
!
strcmp
(
argv
[
i
].
key
,
"byref-all"
))
{
byref_all
=
true
;
continue
;
}
error
(
G_
(
"unknown option '-fplugin-arg-%s-%s'"
),
plugin_name
,
argv
[
i
].
key
);
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment