[PATCH 10/17] uimage: Fix lseek error check in uimage_load()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Don't use 'int' to store lseek()'s return value to avoid problems with
large seek offsets. While at it, make sure to populate return error
code from 'errno'.

Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx>
---
 common/uimage.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/common/uimage.c b/common/uimage.c
index 72b668e89..12c7e9e2c 100644
--- a/common/uimage.c
+++ b/common/uimage.c
@@ -308,6 +308,7 @@ int uimage_load(struct uimage_handle *handle, unsigned int image_no,
 	image_header_t *hdr = &handle->header;
 	struct uimage_handle_data *iha;
 	int ret;
+	loff_t off;
 	int (*uncompress_fn)(unsigned char *inbuf, int len,
 		    int(*fill)(void*, unsigned int),
 	            int(*flush)(void*, unsigned int),
@@ -320,10 +321,9 @@ int uimage_load(struct uimage_handle *handle, unsigned int image_no,
 
 	iha = &handle->ihd[image_no];
 
-	ret = lseek(handle->fd, iha->offset + handle->data_offset,
-			SEEK_SET);
-	if (ret < 0)
-		return ret;
+	off = iha->offset + handle->data_offset;
+	if (lseek(handle->fd, off, SEEK_SET) != off)
+		return -errno;
 
 	/* if ramdisk U-Boot expect to ignore the compression type */
 	if (hdr->ih_comp == IH_COMP_NONE || hdr->ih_type == IH_TYPE_RAMDISK)
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux