From fd3748fb635cf115399b09ae5184f3a5a6cdf1f2 Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Dec 15 2020 17:54:52 +0000 Subject: journald: lower the maximum entry size limit to ½ for non-sealed fds We immediately read the whole contents into memory, making thigs much more expensive. Sealed fds should be used instead since they are more efficient on our side. (cherry-picked from commit 6670c9de196c8e2d5e84a8890cbb68f70c4db6e3) Related: #1664977 patch_name: 0082-journald-lower-the-maximum-entry-size-limit-to-for-n.patch present_in_specfile: true location_in_specfile: 82 squash_commits: true --- diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c index 110ab36..da62448 100644 --- a/src/journal/journald-native.c +++ b/src/journal/journald-native.c @@ -380,8 +380,10 @@ void server_process_native_file( if (st.st_size <= 0) return; - if (st.st_size > ENTRY_SIZE_MAX) { - log_error("File passed too large. Ignoring."); + /* When !sealed, set a lower memory limit. We have to read the file, + * effectively doubling memory use. */ + if (st.st_size > ENTRY_SIZE_MAX / (sealed ? 1 : 2)) { + log_error("File passed too large (%"PRIu64" bytes). Ignoring.", (uint64_t) st.st_size); return; }