clock-util: be more tolerant in parsing /etc/adjtime

As we default to "hardware clock is in UTC" if /etc/adjtime is not present, it
also makes sense to have that default if /etc/adjtime contains only one or two
lines.

Drop the "gibberish" test case, as this was just EIO because of not containing
three lines, which is already contained in other tests. clock_is_localtime()
never actually validated the format of the first two lines, and there is little
point in doing that.

This addresses the reading half of issue #2638.
This commit is contained in:
Martin Pitt
2016-02-26 12:33:41 +01:00
parent 6369641d6f
commit 35f7216f96
2 changed files with 12 additions and 8 deletions
+3 -1
View File
@@ -91,7 +91,8 @@ int clock_is_localtime(const char* adjtime_path) {
fgets(line, sizeof(line), f) &&
fgets(line, sizeof(line), f);
if (!b)
return -EIO;
/* less than three lines -> default to UTC */
return 0;
truncate_nl(line);
return streq(line, "LOCAL");
@@ -99,6 +100,7 @@ int clock_is_localtime(const char* adjtime_path) {
} else if (errno != ENOENT)
return -errno;
/* adjtime not present -> default to UTC */
return 0;
}