chiark / gitweb /
fileio: initialize errno to zero before we do fread()
authorLennart Poettering <lennart@poettering.net>
Fri, 22 Sep 2017 19:05:03 +0000 (21:05 +0200)
committerSven Eden <yamakuzure@gmx.net>
Fri, 22 Sep 2017 19:05:03 +0000 (21:05 +0200)
if there was something in the read buffer already errno might not be set
on error, let's detect that case.

src/basic/fileio.c

index 7638ae87a8f5bd72801a8d203a797922245b5e8e..f4ab6612b36b7f2c796b6613ebdb4cbb2456948d 100644 (file)
@@ -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;