From 829231045b2f74926148baddf4e6ba97515559b5 Mon Sep 17 00:00:00 2001
From: Fabian Mauchle <fabian.mauchle@switch.ch>
Date: Fri, 13 Nov 2026 10:38:29 +0100
Subject: [PATCH] fix tls-psk merge from dynamic config (GHSA-4pv5-j49w-wfpp)

---
 radsecproxy.c | 5 +++++
 1 file changed, 5 insertions(+)

--- a/radsecproxy.c
+++ b/radsecproxy.c
@@ -2702,6 +2702,8 @@ int mergesrvconf(struct clsrvconf *dst,
         !mergeconfmstring(&dst->source, src ? &src->source : NULL) ||
         !mergeconfstring((char **)&dst->secret, (char **)(src ? &src->secret : NULL)) ||
         !mergeconfstring(&dst->tls, src ? &src->tls : NULL) ||
+        !mergeconfstring(&dst->pskid, src ? &src->pskid : NULL) ||
+        !mergeconfstring((char **)&dst->pskkey, src ? (char **)&src->pskkey : NULL) ||
         !mergeconfmstring(&dst->confmatchcertattrs, src ? &src->confmatchcertattrs : NULL) ||
         !mergeconfstring(&dst->confrewritein, src ? &src->confrewritein : NULL) ||
         !mergeconfstring(&dst->confrewriteout, src ? &src->confrewriteout : NULL) ||
@@ -2716,6 +2718,8 @@ int mergesrvconf(struct clsrvconf *dst,
     if (src) {
         if (src->pdef)
             dst->pdef = src->pdef;
+        dst->secret_len = src->secret_len;
+        dst->pskkeylen = src->pskkeylen;
         dst->statusserver = src->statusserver;
         dst->certnamecheck = src->certnamecheck;
         if (src->retryinterval != 255)
@@ -3018,6 +3022,7 @@ int confserver_cb(struct gconffile **cf,
         conf->statusserver = resconf->statusserver;
         conf->certnamecheck = resconf->certnamecheck;
         conf->secret_len = resconf->secret_len;
+        conf->pskkeylen = resconf->pskkeylen;
         conf->blockingstartup = resconf->blockingstartup;
         conf->type = resconf->type;
         conf->sni = resconf->sni;
