]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add escape rule lookup by char
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 27 Oct 2021 15:30:47 +0000 (11:30 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 27 Oct 2021 16:16:10 +0000 (12:16 -0400)
src/lib/util/value.c
src/lib/util/value.h

index 99889708782488940aa6906b2dc9bbbf56c46d9c..02867dce42964f81c1731d6e3c816debc89c49b6 100644 (file)
@@ -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 = '\\',
index 8cd227bee6a32d6d94975bed8a1e22dad98a58d9..42bd9278caeb0064d8618add71bc97c3bed6586e 100644 (file)
@@ -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;