From f5781c83e2234aba550f8cffafd808602940ff1d Mon Sep 17 00:00:00 2001
From: Pierre Smeyers <pierre.smeyers@gmail.com>
Date: Sat, 2 Dec 2023 13:06:03 +0100
Subject: [PATCH] fix: envsubst when variable contains a '&'

---
 templates/gitlab-ci-docker.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/templates/gitlab-ci-docker.yml b/templates/gitlab-ci-docker.yml
index 69a855d..180a8ab 100644
--- a/templates/gitlab-ci-docker.yml
+++ b/templates/gitlab-ci-docker.yml
@@ -351,7 +351,8 @@ stages:
   }
 
   function awkenvsubst() {
-    awk '{while(match($0,"[$%]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH-3);val=ENVIRON[var]; gsub(/["\\]/,"\\\\&",val); gsub("\n","\\n",val);gsub("\r","\\r",val); gsub("[$%]{"var"}",val)}}1'
+    # performs variables escaping: '&' for gsub + JSON chars ('\' and '"')
+    awk '{while(match($0,"[$%]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH-3);val=ENVIRON[var];gsub(/["\\&]/,"\\\\&",val);gsub("[$%]{"var"}",val)}}1'
   }
 
   function configure_registries_auth() {
-- 
GitLab