tools: fdtgrep: Fix handle leak

The handle "fd" was created in fdtgrep.c:708 by calling the
 "open" function and is lost in fdtgrep.c:716 and fdtgrep.c:723.
 Close file descriptor 'fd' before exiting with an error from function
 utilfdt_read_err_len(const char *filename, char **buffp, off_t *len).

Fixes: 1043d0a029 ("fdt: Add fdtgrep tool")
Signed-off-by: Mikhail Ilin <ilin.mikhail.ol@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Mikhail Ilin 2022-11-23 14:31:03 +03:00 committed by Tom Rini
parent 17f8a74876
commit 4b95e8407e

View File

@ -712,15 +712,19 @@ int utilfdt_read_err_len(const char *filename, char **buffp, off_t *len)
/* Loop until we have read everything */
buf = malloc(bufsize);
if (!buf)
if (!buf) {
close(fd);
return -ENOMEM;
}
do {
/* Expand the buffer to hold the next chunk */
if (offset == bufsize) {
bufsize *= 2;
buf = realloc(buf, bufsize);
if (!buf)
if (!buf) {
close(fd);
return -ENOMEM;
}
}
ret = read(fd, &buf[offset], bufsize - offset);