From 0d18b96c39a4e48e42bd65917a35e6c8f1eeb79e Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Wed, 11 Feb 2015 15:58:59 +0100 Subject: [PATCH] Resolve macros in dictionary values refs #7311 --- lib/icinga/macroprocessor.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/icinga/macroprocessor.cpp b/lib/icinga/macroprocessor.cpp index 8a578842b..aac8fb4ab 100644 --- a/lib/icinga/macroprocessor.cpp +++ b/lib/icinga/macroprocessor.cpp @@ -59,6 +59,19 @@ Value MacroProcessor::ResolveMacros(const Value& str, const ResolverList& resolv } result = resultArr; + } else if (str.IsObjectType()) { + Dictionary::Ptr resultDict = new Dictionary(); + Dictionary::Ptr dict = str; + + ObjectLock olock(dict); + + BOOST_FOREACH(const Dictionary::Pair& kv, dict) { + /* Note: don't escape macros here. */ + resultDict->Set(kv.first, InternalResolveMacros(kv.second, resolvers, cr, missingMacro, + EscapeCallback(), resolvedMacros, useResolvedMacros)); + } + + result = resultDict; } else if (str.IsObjectType()) { result = EvaluateFunction(str, resolvers, cr, missingMacro, escapeFn, resolvedMacros, useResolvedMacros, 0); } else { -- 2.40.0