summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-05-16 14:02:24 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-05-31 13:04:18 +0200
commitfd4885df947a23b8f40c08f08ac7f7d13a8abdf4 (patch)
tree09dfac1c5f9091e598e3250ada951fd07a531686
parentea03f6ba0d66374594d716fc0e84e4d65906d2c3 (diff)
downloadsystemd-fd4885df947a23b8f40c08f08ac7f7d13a8abdf4.tar.gz
journal: allow writing journal files even if machine-id is missing
The code to open journal files seems like the wrong place to enforce this. We already check during boot and refuse to boot if machine-id is missing, no need to enforce this here. In particular, it seems better to write logs from journald even if they are not completely functional rather than refuse to operate at all, and systemd-journal-remote also writes journal files and may even be run on a system without systemd at all. The docker image that oss-fuzz uses has an empty /etc/machine-id. Obviously this is an error in the docker, but docker is fact of life, and it seems better for systemd-journal-remote to work in such an incomplete environment.
-rw-r--r--src/journal/journal-file.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 606ca604ac..da663f0196 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -453,7 +453,10 @@ static int journal_file_refresh_header(JournalFile *f) {
assert(f->header);
r = sd_id128_get_machine(&f->header->machine_id);
- if (r < 0)
+ if (IN_SET(r, -ENOENT, -ENOMEDIUM))
+ /* We don't have a machine-id, let's continue without */
+ zero(f->header->machine_id);
+ else if (r < 0)
return r;
r = sd_id128_get_boot(&boot_id);