Blame SOURCES/0018-Check-lseek-for-errors.patch

38ab4d
From 818be6eb0946100a38bd8a10634940e058fc4c90 Mon Sep 17 00:00:00 2001
5fb29d
From: Peter Jones <pjones@redhat.com>
5fb29d
Date: Wed, 10 Sep 2014 16:56:49 -0400
38ab4d
Subject: [PATCH 18/31] Check lseek() for errors.
5fb29d
5fb29d
Covscan.
5fb29d
5fb29d
Signed-off-by: Peter Jones <pjones@redhat.com>
5fb29d
---
5fb29d
 src/lib/gpt.c | 8 ++++++--
5fb29d
 1 file changed, 6 insertions(+), 2 deletions(-)
5fb29d
5fb29d
diff --git a/src/lib/gpt.c b/src/lib/gpt.c
5fb29d
index 67a8c41..fc2acf3 100644
5fb29d
--- a/src/lib/gpt.c
5fb29d
+++ b/src/lib/gpt.c
5fb29d
@@ -221,6 +221,7 @@ read_lba(int fd, uint64_t lba, void *buffer, size_t bytes)
5fb29d
         void *iobuf;
5fb29d
         size_t iobuf_size;
5fb29d
         int rc;
5fb29d
+	off_t new_offset;
5fb29d
 
5fb29d
         iobuf_size = lcm(bytes, sector_size);
5fb29d
         rc = posix_memalign(&iobuf, sector_size, iobuf_size);
5fb29d
@@ -228,8 +229,11 @@ read_lba(int fd, uint64_t lba, void *buffer, size_t bytes)
5fb29d
                 return rc;
5fb29d
         memset(iobuf, 0, bytes);
5fb29d
 
5fb29d
-
5fb29d
-        lseek(fd, offset, SEEK_SET);
5fb29d
+        new_offset = lseek(fd, offset, SEEK_SET);
5fb29d
+	if (new_offset == (off_t)-1) {
5fb29d
+		free(iobuf);
5fb29d
+		return 0;
5fb29d
+	}
5fb29d
         bytesread = read(fd, iobuf, iobuf_size);
5fb29d
         memcpy(buffer, iobuf, bytes);
5fb29d
         free(iobuf);
5fb29d
-- 
38ab4d
2.7.4
5fb29d