File 0003-Merge-pull-request-5445-from-beni-atlnz-log-writer-c.patch of Package syslog-ng
From 9e551271cc29aaf135eb2226c0048546c2bf5fe4 Mon Sep 17 00:00:00 2001
From: Hofi <hofione@gmail.com>
Date: Mon, 1 Sep 2025 09:31:22 +0200
Subject: [PATCH 3/4] Merge pull request #5445 from
beni-atlnz/log-writer-cfg-bug
Fix invalid access of freed log-writer cfg
(cherry picked from commit 304069cb4ea068c7c982a8052b47cff75fd172e8)
---
modules/afprog/afprog.c | 15 +++++++++++----
news/bugfix-5444.md | 1 +
2 files changed, 12 insertions(+), 4 deletions(-)
create mode 100644 news/bugfix-5444.md
diff --git a/modules/afprog/afprog.c b/modules/afprog/afprog.c
index 4b6d51135..75b32f7a8 100644
--- a/modules/afprog/afprog.c
+++ b/modules/afprog/afprog.c
@@ -519,7 +519,7 @@ afprogram_dd_exit(pid_t pid, int status, gpointer s)
static gboolean
afprogram_dd_restore_reload_store_item(AFProgramDestDriver *self, GlobalConfig *cfg)
{
- const gchar *persist_name = afprogram_dd_format_persist_name((const LogPipe *)self);
+ const gchar *persist_name = afprogram_dd_format_persist_name((const LogPipe *) self);
AFProgramReloadStoreItem *restored_info =
(AFProgramReloadStoreItem *)cfg_persist_config_fetch(cfg, persist_name);
@@ -573,9 +573,13 @@ afprogram_dd_init(LogPipe *s)
log_writer_options_init(&self->writer_options, cfg, 0);
const gboolean restore_successful = afprogram_dd_restore_reload_store_item(self, cfg);
-
- if (!self->writer)
- self->writer = log_writer_new(LW_FORMAT_FILE, s->cfg);
+ if (restore_successful)
+ log_pipe_set_config((LogPipe *) self->writer, cfg);
+ else
+ {
+ g_assert(self->writer == NULL);
+ self->writer = log_writer_new(LW_FORMAT_FILE, cfg);
+ }
StatsClusterKeyBuilder *writer_sck_builder;
StatsClusterKeyBuilder *driver_sck_builder;
@@ -640,6 +644,9 @@ afprogram_dd_deinit(LogPipe *s)
if (self->keep_alive)
{
+ // Do not store the writer's config, as it will be freshly initialized during reload
+ // TODO: by a good chance this should go to log_pipe_deinit, investigate it
+ log_pipe_reset_config((LogPipe *) self->writer);
afprogram_dd_store_reload_store_item(self, cfg);
}
else
diff --git a/news/bugfix-5444.md b/news/bugfix-5444.md
new file mode 100644
index 000000000..fb8fdc9d8
--- /dev/null
+++ b/news/bugfix-5444.md
@@ -0,0 +1 @@
+afprog: Fix invalid access of freed log-writer cfg.
--
2.51.0