summaryrefslogtreecommitdiff
path: root/common/env_attr.c
diff options
context:
space:
mode:
authorxypron.glpk@gmx.de <xypron.glpk@gmx.de>2017-05-08 18:23:54 (GMT)
committerTom Rini <trini@konsulko.com>2017-05-12 12:37:17 (GMT)
commit902f5bcfbcbc8dce964a69e4c9fcf658dfb62998 (patch)
treea16f831faef69493874e8c789f0929addd76057f /common/env_attr.c
parent9b57e252ffb85b175b0818bf01fb20086d788f5d (diff)
downloadu-boot-902f5bcfbcbc8dce964a69e4c9fcf658dfb62998.tar.xz
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.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/common/env_attr.c b/common/env_attr.c
index 3862190..f965b4b 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);