summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDag Lem <dag@nimrod.no>2022-08-22 11:21:14 +0200
committerDag Lem <dag@nimrod.no>2022-08-22 11:21:14 +0200
commit1c80b19fe5f631b8d6106630803d586c8a1616a7 (patch)
tree2315ee81633e101ffd227fd5ca2062ee2c66e6bb
parent32eedc2b42d29a8658dc3c4d877410c6ae7b3328 (diff)
downloadlibfaketime-1c80b19fe5f631b8d6106630803d586c8a1616a7.tar.gz
Handle short reads from timestamp file
-rw-r--r--src/libfaketime.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libfaketime.c b/src/libfaketime.c
index 28b90f5..b5b0fe2 100644
--- a/src/libfaketime.c
+++ b/src/libfaketime.c
@@ -3142,9 +3142,13 @@ int read_config_file()
(faketimerc = open(filename, O_RDONLY)) != -1 ||
(faketimerc = open("/etc/faketimerc", O_RDONLY)) != -1)
{
- ssize_t length = read(faketimerc, user_faked_time, sizeof(user_faked_time) - 1);
+ ssize_t bytes;
+ ssize_t length = 0;
+ while ((bytes = read(faketimerc, user_faked_time + length, sizeof(user_faked_time) - 1 - length)) > 0) {
+ length += bytes;
+ }
close(faketimerc);
- if (length < 0) {
+ if (bytes < 0) {
length = 0;
}
user_faked_time[length] = 0;