summaryrefslogtreecommitdiff
path: root/src/journal/sd-journal.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-12-17 01:13:55 +0100
committerLennart Poettering <lennart@poettering.net>2011-12-17 01:13:55 +0100
commitcab8ac60837b489b27a247990f741315c71cb389 (patch)
treec5eb0e242f349e0d61f8cd92c7e85e12049e2b90 /src/journal/sd-journal.c
parent7f3e62571a63ac90de6ac5eefeeb8d3e9aa6f49e (diff)
journal: enforce limits on open journal files
Diffstat (limited to 'src/journal/sd-journal.c')
-rw-r--r--src/journal/sd-journal.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index 85c57170d5..bcfcbfb9e1 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -30,6 +30,8 @@
#include "list.h"
#include "lookup3.h"
+#define JOURNAL_FILES_MAX 1024
+
typedef struct Match Match;
struct Match {
@@ -932,6 +934,11 @@ static int add_file(sd_journal *j, const char *prefix, const char *dir, const ch
assert(prefix);
assert(filename);
+ if (hashmap_size(j->files) >= JOURNAL_FILES_MAX) {
+ log_debug("Too many open journal files, ignoring.");
+ return 0;
+ }
+
if (dir)
fn = join(prefix, "/", dir, "/", filename, NULL);
else
@@ -952,7 +959,6 @@ static int add_file(sd_journal *j, const char *prefix, const char *dir, const ch
journal_file_dump(f);
-
r = hashmap_put(j->files, f->path, f);
if (r < 0) {
journal_file_close(f);