chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
journal: enforce limits on open journal files
[elogind.git]
/
src
/
journal
/
sd-journal.c
diff --git
a/src/journal/sd-journal.c
b/src/journal/sd-journal.c
index 85c57170d56be46d2e3c55b49ab32f303a8593e2..bcfcbfb9e1f6dd2ce1e7f8c86dd206969581e32f 100644
(file)
--- a/
src/journal/sd-journal.c
+++ b/
src/journal/sd-journal.c
@@
-30,6
+30,8
@@
#include "list.h"
#include "lookup3.h"
#include "list.h"
#include "lookup3.h"
+#define JOURNAL_FILES_MAX 1024
+
typedef struct Match Match;
struct Match {
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);
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
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);
journal_file_dump(f);
-
r = hashmap_put(j->files, f->path, f);
if (r < 0) {
journal_file_close(f);
r = hashmap_put(j->files, f->path, f);
if (r < 0) {
journal_file_close(f);