[syslog-ng] [PATCH (3.5) 2/2] templates: Respect the template_escape() in template functions
Gergely Nagy
algernon at balabit.hu
Wed Jun 12 15:10:46 CEST 2013
When a template function creates a template itself, make the new
template inherit the escape setting from the parent.
Signed-off-by: Gergely Nagy <algernon at balabit.hu>
---
lib/templates.c | 1 +
tests/unit/test_template.c | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/lib/templates.c b/lib/templates.c
index 6b23959..e084c1a 100644
--- a/lib/templates.c
+++ b/lib/templates.c
@@ -697,6 +697,7 @@ tf_simple_func_prepare(LogTemplateFunction *self, gpointer s, LogTemplate *paren
for (i = 0; i < argc - 1; i++)
{
state->argv[i] = log_template_new(parent->cfg, NULL);
+ log_template_set_escape(state->argv[i], parent->escape);
if (!log_template_compile(state->argv[i], argv[i + 1], error))
goto error;
}
diff --git a/tests/unit/test_template.c b/tests/unit/test_template.c
index 8546dd4..723f479 100644
--- a/tests/unit/test_template.c
+++ b/tests/unit/test_template.c
@@ -253,6 +253,10 @@ test_escaping(void)
{
assert_template_format_with_escaping("${APP.QVALUE}", FALSE, "\"value\"");
assert_template_format_with_escaping("${APP.QVALUE}", TRUE, "\\\"value\\\"");
+ assert_template_format_with_escaping("$(if (\"${APP.VALUE}\" == \"value\") \"${APP.QVALUE}\" \"${APP.QVALUE}\")",
+ FALSE, "\"value\"");
+ assert_template_format_with_escaping("$(if (\"${APP.VALUE}\" == \"value\") \"${APP.QVALUE}\" \"${APP.QVALUE}\")",
+ TRUE, "\\\"value\\\"");
}
int
--
1.7.10.4
More information about the syslog-ng
mailing list