diff options
-rw-r--r-- | ChangeLog.d/bugfix/ZBX-19872 | 1 | ||||
-rw-r--r-- | include/common.h | 1 | ||||
-rw-r--r-- | include/zbxserver.h | 1 | ||||
-rw-r--r-- | src/libs/zbxserver/expression.c | 29 | ||||
-rw-r--r-- | tests/libs/zbxserver/substitute_lld_macros.c | 4 |
5 files changed, 9 insertions, 27 deletions
diff --git a/ChangeLog.d/bugfix/ZBX-19872 b/ChangeLog.d/bugfix/ZBX-19872 new file mode 100644 index 00000000000..c91e70b00a0 --- /dev/null +++ b/ChangeLog.d/bugfix/ZBX-19872 @@ -0,0 +1 @@ +........S. [ZBX-19872] removed redundant escaping in XML data of HTTP agent POST request (asestakovs) diff --git a/include/common.h b/include/common.h index a45da89d9cf..d988fe61e5c 100644 --- a/include/common.h +++ b/include/common.h @@ -1471,7 +1471,6 @@ int zbx_strcmp_natural(const char *s1, const char *s2); /* additional token flags */ #define ZBX_TOKEN_JSON 0x0010000 -#define ZBX_TOKEN_XML 0x0020000 #define ZBX_TOKEN_REGEXP 0x0040000 #define ZBX_TOKEN_XPATH 0x0080000 #define ZBX_TOKEN_REGEXP_OUTPUT 0x0100000 diff --git a/include/zbxserver.h b/include/zbxserver.h index d3062c796ea..5693840d619 100644 --- a/include/zbxserver.h +++ b/include/zbxserver.h @@ -122,7 +122,6 @@ int zbx_expression_eval_execute(zbx_expression_eval_t *eval, const zbx_timespec_ /* lld macro context */ #define ZBX_MACRO_ANY (ZBX_TOKEN_LLD_MACRO | ZBX_TOKEN_LLD_FUNC_MACRO | ZBX_TOKEN_USER_MACRO) #define ZBX_MACRO_JSON (ZBX_MACRO_ANY | ZBX_TOKEN_JSON) -#define ZBX_MACRO_XML (ZBX_MACRO_ANY | ZBX_TOKEN_XML) #define ZBX_MACRO_FUNC (ZBX_MACRO_ANY | ZBX_TOKEN_FUNC_MACRO) int substitute_lld_macros(char **data, const struct zbx_json_parse *jp_row, const zbx_vector_ptr_t *lld_macro_paths, diff --git a/src/libs/zbxserver/expression.c b/src/libs/zbxserver/expression.c index 31110c178b2..915f8a1a553 100644 --- a/src/libs/zbxserver/expression.c +++ b/src/libs/zbxserver/expression.c @@ -4833,15 +4833,6 @@ static int substitute_simple_macros_impl(const zbx_uint64_t *actionid, const DB_ if (0 != (macro_type & MACRO_TYPE_HTTP_JSON) && NULL != replace_to) zbx_json_escape(&replace_to); - if (0 != (macro_type & MACRO_TYPE_HTTP_XML) && NULL != replace_to) - { - char *replace_to_esc; - - replace_to_esc = xml_escape_dyn(replace_to); - zbx_free(replace_to); - replace_to = replace_to_esc; - } - if (ZBX_TOKEN_FUNC_MACRO == token.type && NULL != replace_to) { if (SUCCEED != (ret = zbx_calculate_macro_function(*data, &token.data.func_macro, &replace_to))) @@ -5736,14 +5727,6 @@ static void process_lld_macro_token(char **data, zbx_token_t *token, int flags, { zbx_json_escape(&replace_to); } - else if (0 != (flags & ZBX_TOKEN_XML)) - { - char *replace_to_esc; - - replace_to_esc = xml_escape_dyn(replace_to); - zbx_free(replace_to); - replace_to = replace_to_esc; - } else if (0 != (flags & ZBX_TOKEN_REGEXP)) { zbx_regexp_escape(&replace_to); @@ -6595,11 +6578,12 @@ static void substitute_macros_in_xml_elements(const DC_ITEM *item, const struct } else { - substitute_lld_macros(&value_tmp, jp_row, lld_macro_paths, ZBX_MACRO_XML, NULL, + substitute_lld_macros(&value_tmp, jp_row, lld_macro_paths, ZBX_MACRO_ANY, NULL, 0); } - xmlNodeSetContent(node, (xmlChar *)value_tmp); + xmlNodeSetContent(node, NULL); + xmlNodeAddContent(node, (xmlChar *)value_tmp); zbx_free(value_tmp); xmlFree(value); @@ -6622,7 +6606,8 @@ static void substitute_macros_in_xml_elements(const DC_ITEM *item, const struct 0); } - xmlNodeSetContent(node, (xmlChar *)value_tmp); + xmlNodeSetContent(node, NULL); + xmlNodeAddContent(node, (xmlChar *)value_tmp); zbx_free(value_tmp); xmlFree(value); @@ -6642,8 +6627,10 @@ static void substitute_macros_in_xml_elements(const DC_ITEM *item, const struct MACRO_TYPE_HTTP_XML, NULL, 0); } else + { substitute_lld_macros(&value_tmp, jp_row, lld_macro_paths, - ZBX_MACRO_XML, NULL, 0); + ZBX_MACRO_ANY, NULL, 0); + } xmlSetProp(node, attr->name, (xmlChar *)value_tmp); diff --git a/tests/libs/zbxserver/substitute_lld_macros.c b/tests/libs/zbxserver/substitute_lld_macros.c index 93b3492d8cd..111fb439017 100644 --- a/tests/libs/zbxserver/substitute_lld_macros.c +++ b/tests/libs/zbxserver/substitute_lld_macros.c @@ -65,8 +65,6 @@ static int get_flags(const char *path) fail_msg("Cannot read flag #%d: %s", flags_num, zbx_mock_error_string(err)); else if (0 == strcmp(flag, "ZBX_TOKEN_JSON")) flags |= ZBX_TOKEN_JSON; - else if (0 == strcmp(flag, "ZBX_TOKEN_XML")) - flags |= ZBX_TOKEN_XML; else if (0 == strcmp(flag, "ZBX_TOKEN_REGEXP")) flags |= ZBX_TOKEN_REGEXP; else if (0 == strcmp(flag, "ZBX_TOKEN_XPATH")) @@ -83,8 +81,6 @@ static int get_flags(const char *path) flags |= ZBX_MACRO_ANY; else if (0 == strcmp(flag, "ZBX_MACRO_JSON")) flags |= ZBX_MACRO_JSON; - else if (0 == strcmp(flag, "ZBX_MACRO_XML")) - flags |= ZBX_MACRO_XML; else if (0 == strcmp(flag, "ZBX_MACRO_FUNC")) flags |= ZBX_MACRO_FUNC; else if (0 == strcmp(flag, "ZBX_TOKEN_EXPRESSION_MACRO")) |