When max_use and keep_free are set to the defaults in coredump.conf for use in non-journal cores, systemd-coredump ignores the settings altogether and proceeds to fill up all available disk space with coredumps.

'-1 'is used internally inside of coredump.c and coredump-vacuum.c to denote default values, but coredump_vacuum() itself throws away all negative values as a bounds check, causing the error.


---
 src/journal/coredump-vacuum.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/journal/coredump-vacuum.c b/src/journal/coredump-vacuum.c
index 9b73795..74bfbbc 100644
--- a/src/journal/coredump-vacuum.c
+++ b/src/journal/coredump-vacuum.c
@@ -135,8 +135,11 @@ int coredump_vacuum(int exclude_fd, off_t keep_free, off_t max_use) {
         struct stat exclude_st;
         int r;

-        if (keep_free <= 0 && max_use <= 0)
-                return 0;
+        /* Set nonsense values to the defaults. */
+        if (keep_free <= 0)
+                keep_free = -1;
+        if (max_use <= 0)
+                max_use = -1;

         if (exclude_fd >= 0) {
                 if (fstat(exclude_fd, &exclude_st) < 0)
--
1.9.1
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to