From bc13c3a4610a31745908533d062a9f2602511018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szil=C3=A1rd=20Parrag?= Date: Fri, 9 Sep 2022 16:11:12 +0200 Subject: [PATCH] affile: remove null pointer dereference in `affile_dd_reuse_writer()`` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In very rare (and unrealistic) cases syslog-ng could crash if it was reloaded and it was unable to reuse it's file writers. Signed-off-by: Szilárd Parrag --- modules/affile/affile-dest.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/affile/affile-dest.c b/modules/affile/affile-dest.c index 7cd2bcabef1..139d917a7b2 100644 --- a/modules/affile/affile-dest.c +++ b/modules/affile/affile-dest.c @@ -292,24 +292,28 @@ static void affile_dw_set_owner(AFFileDestWriter *self, AFFileDestDriver *owner) { GlobalConfig *cfg = log_pipe_get_config(&owner->super.super.super); + log_pipe_set_config(&self->super, cfg); + + if (self->writer) + log_pipe_set_config((LogPipe *) self->writer, cfg); if (self->owner) log_pipe_unref(&self->owner->super.super.super); - log_pipe_ref(&owner->super.super.super); + + self->owner = owner; - self->super.expr_node = owner->super.super.super.expr_node; + if (self->owner) { + log_pipe_ref(&self->owner->super.super.super); + log_pipe_set_options(&self->super, &self->owner->super.super.super.options); + self->super.expr_node = self->owner->super.super.super.expr_node; + } - log_pipe_set_options(&self->super, &owner->super.super.super.options); - log_pipe_set_config(&self->super, cfg); - if (self->writer) - { - log_pipe_set_config((LogPipe *) self->writer, cfg); + if (self->writer && self->owner) log_writer_set_options(self->writer, &self->super, &owner->writer_options, self->owner->super.super.id, self->filename); - } } static void