From 970cd2ccf6d0f387d3b17b259e4379c63ca9ddc6 Mon Sep 17 00:00:00 2001 From: fatalerrors Date: Wed, 8 Jul 2026 18:51:24 +0200 Subject: [PATCH] bugfix --- profile.d/conf.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/profile.d/conf.sh b/profile.d/conf.sh index c13836b..bf4fad1 100755 --- a/profile.d/conf.sh +++ b/profile.d/conf.sh @@ -53,7 +53,7 @@ conf_save() local section="$1" key="$2" value="$3" - if ! [[ "$section" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + if ! [[ "$section" =~ ^[a-zA-Z0-9_]+$ ]]; then disp E "conf_save: invalid section name '${section}' (alphanumeric and underscore only)." return 1 fi @@ -87,8 +87,12 @@ conf_save() fi local tmp_file="${conf_file}.tmp.$$" - awk -v sec="$section" -v key="$key" -v val="$value" ' + # The value is passed via ENVIRON (not awk -v) so backslashes are preserved + # verbatim; awk -v would interpret C escape sequences (\t, \n, \e, ...). + _CONF_SAVE_VAL="$value" \ + awk -v sec="$section" -v key="$key" ' BEGIN { + val = ENVIRON["_CONF_SAVE_VAL"] in_sec = 0 saw_sec = 0 wrote = 0 @@ -203,6 +207,10 @@ conf_dump() shift break ;; + *) + disp E "Invalid option, use \"conf_dump --help\" to display options list" + return 1 + ;; esac done