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:
		
							parent
							
								
									17f8a74876
								
							
						
					
					
						commit
						4b95e8407e
					
				|  | @ -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); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue