summaryrefslogtreecommitdiff
path: root/src/journal/journald.c
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd@luon.net>2012-04-14 14:11:08 +0200
committerLennart Poettering <lennart@poettering.net>2012-05-22 13:22:00 +0200
commit499fb2152f8518796607dd0406698cb6ce4c7098 (patch)
tree137730e92132cabc05d88532ae4d39b3e803de2e /src/journal/journald.c
parentbf4df7c3b6cb24918d94835cafd9dd60881c8981 (diff)
journal: crash when filesystem is low on space
When space is getting too low on a file system rotating the journal file will fail after the rotation, as opening the new logfile will fail. Recognize this when logging the error and don't try to dereference a NULL JournalFile pointer.
Diffstat (limited to 'src/journal/journald.c')
-rw-r--r--src/journal/journald.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/journal/journald.c b/src/journal/journald.c
index 9d45762e25..547c4ecc21 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -330,7 +330,10 @@ static void server_rotate(Server *s) {
if (s->runtime_journal) {
r = journal_file_rotate(&s->runtime_journal);
if (r < 0)
- log_error("Failed to rotate %s: %s", s->runtime_journal->path, strerror(-r));
+ if (s->runtime_journal)
+ log_error("Failed to rotate %s: %s", s->runtime_journal->path, strerror(-r));
+ else
+ log_error("Failed to create new runtime journal: %s", strerror(-r));
else
server_fix_perms(s, s->runtime_journal, 0);
}
@@ -338,7 +341,11 @@ static void server_rotate(Server *s) {
if (s->system_journal) {
r = journal_file_rotate(&s->system_journal);
if (r < 0)
- log_error("Failed to rotate %s: %s", s->system_journal->path, strerror(-r));
+ if (s->system_journal)
+ log_error("Failed to rotate %s: %s", s->system_journal->path, strerror(-r));
+ else
+ log_error("Failed to create new system journal: %s", strerror(-r));
+
else
server_fix_perms(s, s->system_journal, 0);
}
@@ -346,7 +353,10 @@ static void server_rotate(Server *s) {
HASHMAP_FOREACH_KEY(f, k, s->user_journals, i) {
r = journal_file_rotate(&f);
if (r < 0)
- log_error("Failed to rotate %s: %s", f->path, strerror(-r));
+ if (f->path)
+ log_error("Failed to rotate %s: %s", f->path, strerror(-r));
+ else
+ log_error("Failed to create user journal: %s", strerror(-r));
else {
hashmap_replace(s->user_journals, k, f);
server_fix_perms(s, s->system_journal, PTR_TO_UINT32(k));