From 4099a281bb1e7bbb941c55de559dbfb9abf5897b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 11 Feb 2012 00:27:12 +0100 Subject: [PATCH] util: fix handling of empty files in read_one_line_file() https://bugs.freedesktop.org/show_bug.cgi?id=45362 --- src/util.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/util.c b/src/util.c index 11f77abde14..33299229bfb 100644 --- a/src/util.c +++ b/src/util.c @@ -705,15 +705,22 @@ int read_one_line_file(const char *fn, char **line) { assert(fn); assert(line); - if (!(f = fopen(fn, "re"))) + f = fopen(fn, "re"); + if (!f) return -errno; - if (!(fgets(t, sizeof(t), f))) { - r = feof(f) ? -EIO : -errno; - goto finish; + if (!fgets(t, sizeof(t), f)) { + + if (ferror(f)) { + r = -errno; + goto finish; + } + + t[0] = 0; } - if (!(c = strdup(t))) { + c = strdup(t); + if (!c) { r = -ENOMEM; goto finish; }