Bläddra i källkod

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: 1043d0a0296a ("fdt: Add fdtgrep tool")
Signed-off-by: Mikhail Ilin <ilin.mikhail.ol@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Mikhail Ilin 1 år sedan
förälder
incheckning
4b95e8407e
1 ändrade filer med 6 tillägg och 2 borttagningar
  1. 6 2
      tools/fdtgrep.c

+ 6 - 2
tools/fdtgrep.c

@@ -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);