diff options
author | xypron.glpk@gmx.de <xypron.glpk@gmx.de> | 2017-05-08 20:23:54 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-05-12 08:37:17 -0400 |
commit | 902f5bcfbcbc8dce964a69e4c9fcf658dfb62998 (patch) | |
tree | a16f831faef69493874e8c789f0929addd76057f /common/env_attr.c | |
parent | 9b57e252ffb85b175b0818bf01fb20086d788f5d (diff) |
env: avoid possible NULL pointer access
env_attr_lookup call env_attr_walk with
callback = regex_callback.
In env_attr_walk
attributes = strchr(entry_cpy, ENV_ATTR_SEP)
will return NULL if ENV_ATTR_SEP is not found.
In the aftermath regex_callback may call
strlen(attributes)
with a NULL value which will lead to a failure.
The problem was indicated by scan-clam.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Diffstat (limited to 'common/env_attr.c')
-rw-r--r-- | common/env_attr.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/common/env_attr.c b/common/env_attr.c index 386219087b..f965b4bbb6 100644 --- a/common/env_attr.c +++ b/common/env_attr.c @@ -132,6 +132,10 @@ static int regex_callback(const char *name, const char *attributes, void *priv) if (slre_match(&slre, cbp->searched_for, strlen(cbp->searched_for), caps)) { free(cbp->regex); + if (!attributes) { + retval = -EINVAL; + goto done; + } cbp->regex = malloc(strlen(regex) + 1); if (cbp->regex) { strcpy(cbp->regex, regex); |