summaryrefslogtreecommitdiff
path: root/src/basic/fileio.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2017-09-22 21:05:03 +0200
committerSven Eden <yamakuzure@gmx.net>2017-09-22 21:05:03 +0200
commit11ae6b68eb7f659dc2c81e8dfadc702ebfab0b26 (patch)
treef2a51a32a82760a88d29f984742c27f9583f7247 /src/basic/fileio.c
parent23223261b38be3b59c7bf2bd824eb69db425f29b (diff)
fileio: initialize errno to zero before we do fread()
if there was something in the read buffer already errno might not be set on error, let's detect that case.
Diffstat (limited to 'src/basic/fileio.c')
-rw-r--r--src/basic/fileio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/basic/fileio.c b/src/basic/fileio.c
index 7638ae87a..f4ab6612b 100644
--- a/src/basic/fileio.c
+++ b/src/basic/fileio.c
@@ -271,12 +271,13 @@ int read_full_stream(FILE *f, char **contents, size_t *size) {
return -ENOMEM;
buf = t;
+ errno = 0;
k = fread(buf + l, 1, n - l, f);
if (k > 0)
l += k;
if (ferror(f))
- return -errno;
+ return errno > 0 ? -errno : -EIO;
if (feof(f))
break;