diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c index e86178ed77..d0fee2a797 100644 --- a/src/journal/journald-native.c +++ b/src/journal/journald-native.c @@ -141,6 +141,11 @@ static int server_process_entry( } /* A property follows */ + if (n > ENTRY_FIELD_COUNT_MAX) { + log_debug("Received an entry that has more than " STRINGIFY(ENTRY_FIELD_COUNT_MAX) " fields, ignoring entry."); + r = 1; + goto finish; + } /* n existing properties, 1 new, +1 for _TRANSPORT */ if (!GREEDY_REALLOC(iovec, m, diff --git a/src/shared/journal-importer.h b/src/shared/journal-importer.h index 53354b7c78..7914c0cf5f 100644 --- a/src/shared/journal-importer.h +++ b/src/shared/journal-importer.h @@ -21,6 +21,9 @@ #endif #define LINE_CHUNK 8*1024u +/* The maximum number of fields in an entry */ +#define ENTRY_FIELD_COUNT_MAX 1024 + struct iovec_wrapper { struct iovec *iovec; size_t size_bytes;