git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 3/4] ci/lib: do not interpret escape sequences in `group ()` arguments

From
Patrick Steinhardt <ps@pks.im>
Date
Dec 12, 2024, 06:47 UTC
Message-ID
<20241212-pks-ci-section-fixes-v3-3-d9fe6baee21e@pks.im>
In-Reply-To
<20241212-pks-ci-section-fixes-v3-0-d9fe6baee21e@pks.im>

We use printf to set up sections with GitLab CI, which requires us to print a bunch of escape sequences via printf. The group name is controlled by the user and is expanded directly into the formatting string, which may cause problems in case the argument contains escape sequences or formatting directives.

Fix this potential issue by using formatting directives to pass variable data.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 ci/lib.sh | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/ci/lib.sh b/ci/lib.sh
index a54601be923bf475ba1a9cafd98bb1cb71a10255..d403ada911722af554df6255e5cd3fa01b56fd22 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -18,7 +18,8 @@ elif test true = "$GITLAB_CI"
 then
 	begin_group () {
 		need_to_end_group=t
-		printf "\e[0Ksection_start:$(date +%s):$(echo "$1" | tr ' ' _)[collapsed=true]\r\e[0K$1\n"
+		printf '\e[0Ksection_start:%s:%s[collapsed=true]\r\e[0K%s\n' \
+			"$(date +%s)" "$(echo "$1" | tr ' ' _)" "$1"
 		trap "end_group '$1'" EXIT
 		set -x
 	}
@@ -27,7 +28,8 @@ then
 		test -n "$need_to_end_group" || return 0
 		set +x
 		need_to_end_group=
-		printf "\e[0Ksection_end:$(date +%s):$(echo "$1" | tr ' ' _)\r\e[0K\n"
+		printf '\e[0Ksection_end:%s:%s\r\e[0K\n' \
+			"$(date +%s)" "$(echo "$1" | tr ' ' _)"
 		trap - EXIT
 	}
 else
-- 
2.47.1.447.ga7e8429e30.dirty
Previous: Patrick SteinhardtNext: Toon Claes
Message 5 of 6 in “Random improvements to GitLab CI”
  1. 0/4 Random improvements to GitLab CIPatrick Steinhardt, Dec 12, 2024
  2. 1/4 gitlab-ci: update macOS images to SonomaPatrick Steinhardt, Dec 12, 2024
  3. 2/4 ci/lib: remove duplicate trap to end "CI setup" groupPatrick Steinhardt, Dec 12, 2024
  4. 4/4 ci/lib: fix "CI setup" sections with GitLab CIPatrick Steinhardt, Dec 12, 2024
  5. 3/4 ci/lib: do not interpret escape sequences in `group ()` argumentsPatrick Steinhardt, Dec 12, 2024
  6. Toon ClaesDec 12, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.