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

openSUSE Build Service is sponsored by