From: Arran Cudbard-Bell Date: Wed, 27 Oct 2021 15:30:47 +0000 (-0400) Subject: Add escape rule lookup by char X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aac3b13b3e93ac0c0ff7559579834625f81a11f5;p=thirdparty%2Ffreeradius-server.git Add escape rule lookup by char --- diff --git a/src/lib/util/value.c b/src/lib/util/value.c index 99889708782..02867dce429 100644 --- a/src/lib/util/value.c +++ b/src/lib/util/value.c @@ -395,6 +395,13 @@ fr_sbuff_unescape_rules_t *fr_value_unescape_by_quote[T_TOKEN_LAST] = { [T_BACK_QUOTED_STRING] = &fr_value_unescape_backtick, }; +fr_sbuff_unescape_rules_t *fr_value_unescape_by_char[UINT8_MAX + 1] = { + ['"'] = &fr_value_unescape_double, + ['\''] = &fr_value_unescape_single, + ['/'] = &fr_value_unescape_solidus, + ['`'] = &fr_value_unescape_backtick, +}; + fr_sbuff_escape_rules_t fr_value_escape_double = { .name = "double", .chr = '\\', @@ -477,6 +484,13 @@ fr_sbuff_escape_rules_t *fr_value_escape_by_quote[T_TOKEN_LAST] = { [T_BACK_QUOTED_STRING] = &fr_value_escape_backtick, }; +fr_sbuff_escape_rules_t *fr_value_escape_by_char[UINT8_MAX + 1] = { + ['"'] = &fr_value_escape_double, + ['\''] = &fr_value_escape_single, + ['/'] = &fr_value_escape_solidus, + ['`'] = &fr_value_escape_backtick, +}; + fr_sbuff_escape_rules_t fr_value_escape_unprintables = { .name = "unprintables", .chr = '\\', diff --git a/src/lib/util/value.h b/src/lib/util/value.h index 8cd227bee6a..42bd9278cae 100644 --- a/src/lib/util/value.h +++ b/src/lib/util/value.h @@ -77,12 +77,14 @@ extern fr_sbuff_unescape_rules_t fr_value_unescape_single; extern fr_sbuff_unescape_rules_t fr_value_unescape_solidus; extern fr_sbuff_unescape_rules_t fr_value_unescape_backtick; extern fr_sbuff_unescape_rules_t *fr_value_unescape_by_quote[T_TOKEN_LAST]; +extern fr_sbuff_unescape_rules_t *fr_value_unescape_by_char[UINT8_MAX + 1]; extern fr_sbuff_escape_rules_t fr_value_escape_double; extern fr_sbuff_escape_rules_t fr_value_escape_single; extern fr_sbuff_escape_rules_t fr_value_escape_solidus; extern fr_sbuff_escape_rules_t fr_value_escape_backtick; extern fr_sbuff_escape_rules_t *fr_value_escape_by_quote[T_TOKEN_LAST]; +extern fr_sbuff_escape_rules_t *fr_value_escape_by_char[UINT8_MAX + 1]; extern fr_sbuff_escape_rules_t fr_value_escape_unprintables;