fix: remove invalid brace escapes in YAML escape regex

Escaped braces \{\} inside a character class [...] cause "Invalid
content of \{\}" errors on some bash versions. Curly braces are
literal inside character classes and don't need escaping.
This commit is contained in:
SamNet-dev
2026-02-07 10:44:17 -06:00
parent de8442c712
commit 5a4834fc9a

View File

@@ -875,7 +875,7 @@ generate_config() {
_escape_yaml() { _escape_yaml() {
local s="$1" local s="$1"
# If value contains special chars, quote it # If value contains special chars, quote it
if [[ "$s" =~ [:\#\[\]\{\}\"\'\|\>\<\&\*\!\%\@\`] ]] || [[ "$s" =~ ^[[:space:]] ]] || [[ "$s" =~ [[:space:]]$ ]]; then if [[ "$s" =~ [:\#\[\]{}\"\'\|\>\<\&\*\!\%\@\`] ]] || [[ "$s" =~ ^[[:space:]] ]] || [[ "$s" =~ [[:space:]]$ ]]; then
s="${s//\\/\\\\}" # Escape backslashes s="${s//\\/\\\\}" # Escape backslashes
s="${s//\"/\\\"}" # Escape double quotes s="${s//\"/\\\"}" # Escape double quotes
printf '"%s"' "$s" printf '"%s"' "$s"
@@ -4573,7 +4573,7 @@ change_config() {
# Escape YAML special characters to prevent injection # Escape YAML special characters to prevent injection
_escape_yaml() { _escape_yaml() {
local s="$1" local s="$1"
if [[ "$s" =~ [:\#\[\]\{\}\"\'\|\>\<\&\*\!\%\@\`] ]] || [[ "$s" =~ ^[[:space:]] ]] || [[ "$s" =~ [[:space:]]$ ]]; then if [[ "$s" =~ [:\#\[\]{}\"\'\|\>\<\&\*\!\%\@\`] ]] || [[ "$s" =~ ^[[:space:]] ]] || [[ "$s" =~ [[:space:]]$ ]]; then
s="${s//\\/\\\\}"; s="${s//\"/\\\"}"; printf '"%s"' "$s" s="${s//\\/\\\\}"; s="${s//\"/\\\"}"; printf '"%s"' "$s"
else else
printf '%s' "$s" printf '%s' "$s"
@@ -5713,7 +5713,7 @@ _install_paqet_components() {
# Helper to escape YAML values # Helper to escape YAML values
_escape_yaml_val() { _escape_yaml_val() {
local s="$1" local s="$1"
if [[ "$s" =~ [:\#\[\]\{\}\"\'\|\>\<\&\*\!\%\@\`] ]] || [[ "$s" =~ ^[[:space:]] ]] || [[ "$s" =~ [[:space:]]$ ]]; then if [[ "$s" =~ [:\#\[\]{}\"\'\|\>\<\&\*\!\%\@\`] ]] || [[ "$s" =~ ^[[:space:]] ]] || [[ "$s" =~ [[:space:]]$ ]]; then
s="${s//\\/\\\\}"; s="${s//\"/\\\"}"; printf '"%s"' "$s" s="${s//\\/\\\\}"; s="${s//\"/\\\"}"; printf '"%s"' "$s"
else else
printf '%s' "$s" printf '%s' "$s"