summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuillem Jover <guillem@hadrons.org>2019-06-15 14:33:32 +0200
committerGuillem Jover <guillem@hadrons.org>2019-08-08 03:22:09 +0200
commitce53f7c25f64a694550886113154ce0b201be58f (patch)
treef56470adf7aa1f42e8bef7c7784e0be5d0ad280c /src
parent24d1f4dd34cd86759673f736c16e671a6303f8a8 (diff)
nlist: Fix pread() return value check
We should check for partial reads, and not continue in those cases, as we are not retrying them, otherwise we might end up operating on uninitialized data. Reported-by: Daniel Hodson <daniel@elttam.com.au> Based-on-patch-by: Daniel Hodson <daniel@elttam.com.au> Signed-off-by: Guillem Jover <guillem@hadrons.org>
Diffstat (limited to 'src')
-rw-r--r--src/nlist.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/nlist.c b/src/nlist.c
index e2a7949..d01fa55 100644
--- a/src/nlist.c
+++ b/src/nlist.c
@@ -161,7 +161,7 @@ __fdnlist(int fd, struct nlist *list)
return (-1);
/* Load section header table. */
- if (pread(fd, shdr, (size_t)shdr_size, (off_t)ehdr.e_shoff) < 0)
+ if (pread(fd, shdr, (size_t)shdr_size, (off_t)ehdr.e_shoff) != (ssize_t)shdr_size)
goto done;
/*
@@ -198,7 +198,7 @@ __fdnlist(int fd, struct nlist *list)
if (strtab == NULL)
goto done;
- if (pread(fd, strtab, (size_t)symstrsize, (off_t)symstroff) < 0)
+ if (pread(fd, strtab, (size_t)symstrsize, (off_t)symstroff) != (ssize_t)symstrsize)
goto done;
/*