tools/env: avoid memory leak in fw_setenv

If realloc fails we should release the old buffer.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
xypron.glpk@gmx.de 2017-04-15 13:05:40 +02:00 committed by Tom Rini
parent 1ecd2a2f06
commit ddc6a9de05

3
tools/env/fw_env.c vendored
View File

@ -473,6 +473,7 @@ int fw_setenv(int argc, char *argv[], struct env_opts *opts)
int i;
size_t len;
char *name, **valv;
char *oldval;
char *value = NULL;
int valc;
int ret;
@ -507,11 +508,13 @@ int fw_setenv(int argc, char *argv[], struct env_opts *opts)
if (value)
value[len - 1] = ' ';
oldval = value;
value = realloc(value, len + val_len + 1);
if (!value) {
fprintf(stderr,
"Cannot malloc %zu bytes: %s\n",
len, strerror(errno));
free(oldval);
return -1;
}