Message ID | 20170508182354.24180-1-xypron.glpk@gmx.de |
---|---|
State | Accepted |
Commit | 902f5bcfbcbc8dce964a69e4c9fcf658dfb62998 |
Delegated to: | Tom Rini |
Headers | show |
On Mon, May 08, 2017 at 08:23:54PM +0200, xypron.glpk@gmx.de wrote: > 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> Applied to u-boot/master, thanks!
diff --git a/common/env_attr.c b/common/env_attr.c index 5bfe5e3a89..68843f2e0f 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);
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> --- common/env_attr.c | 4 ++++ 1 file changed, 4 insertions(+)