ci/lib: do not interpret escape sequences in `group ()` arguments

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2024-12-12 07:47:16 +01:00 committed by Junio C Hamano
parent 33b06fa603
commit d2ca12020f
1 changed files with 4 additions and 2 deletions

View File

@ -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