diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c index 6a194e7f9f..645bd7b4cf 100644 --- a/src/journal-remote/journal-remote-parse.c +++ b/src/journal-remote/journal-remote-parse.c @@ -32,7 +32,6 @@ void source_free(RemoteSource *source) { * ownership of fd, name, and writer, otherwise does not touch them. */ RemoteSource* source_new(int fd, bool passive_fd, char *name, Writer *writer) { - RemoteSource *source; log_debug("Creating source for %sfd:%d (%s)", @@ -75,7 +74,10 @@ int process_source(RemoteSource *source, bool compress, bool seal) { assert(source->importer.iovw.iovec); r = writer_write(source->writer, &source->importer.iovw, &source->importer.ts, compress, seal); - if (r < 0) + if (r == -EBADMSG) { + log_error_errno(r, "Entry is invalid, ignoring."); + r = 0; + } else if (r < 0) log_error_errno(r, "Failed to write entry of %zu bytes: %m", iovw_size(&source->importer.iovw)); else diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c index 1f88ee9562..494ee71e95 100644 --- a/src/journal-remote/journal-remote-write.c +++ b/src/journal-remote/journal-remote-write.c @@ -97,8 +97,9 @@ int writer_write(Writer *w, if (r >= 0) { if (w->server) w->server->event_count += 1; - return 1; - } + return 0; + } else if (r == -EBADMSG) + return r; log_debug_errno(r, "%s: Write failed, rotating: %m", w->journal->path); r = do_rotate(&w->journal, compress, seal); @@ -115,5 +116,5 @@ int writer_write(Writer *w, if (w->server) w->server->event_count += 1; - return 1; + return 0; } diff --git a/test/fuzz-corpus/journal-remote/invalid-ts.txt b/test/fuzz-corpus/journal-remote/invalid-ts.txt new file mode 100644 index 0000000000..bc036fdcb0 Binary files /dev/null and b/test/fuzz-corpus/journal-remote/invalid-ts.txt differ