From: Gunnar Beutner Date: Fri, 7 Nov 2014 08:26:44 +0000 (+0100) Subject: Fix crash in CompatUtility::GetCheckableCommandArgs X-Git-Tag: v2.2.0~101 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=60114d4b5dcdce1b137bf0db91460574f69a6034;p=icinga2 Fix crash in CompatUtility::GetCheckableCommandArgs refs #7599 --- diff --git a/lib/icinga/compatutility.cpp b/lib/icinga/compatutility.cpp index 2a699893e..19a951dd7 100644 --- a/lib/icinga/compatutility.cpp +++ b/lib/icinga/compatutility.cpp @@ -126,6 +126,7 @@ String CompatUtility::GetCheckableCommandArgs(const Checkable::Ptr& checkable) Dictionary::Ptr command_vars = command->GetVars(); if (command_vars) { + ObjectLock olock(command_vars); BOOST_FOREACH(const Dictionary::Pair& kv, command_vars) { String macro = "$" + kv.first + "$"; // this is too simple if (command_line.Contains(macro)) @@ -137,6 +138,7 @@ String CompatUtility::GetCheckableCommandArgs(const Checkable::Ptr& checkable) Dictionary::Ptr host_vars = host->GetVars(); if (host_vars) { + ObjectLock olock(host_vars); BOOST_FOREACH(const Dictionary::Pair& kv, host_vars) { String macro = "$" + kv.first + "$"; // this is too simple if (command_line.Contains(macro)) @@ -151,6 +153,7 @@ String CompatUtility::GetCheckableCommandArgs(const Checkable::Ptr& checkable) Dictionary::Ptr service_vars = service->GetVars(); if (service_vars) { + ObjectLock olock(service_vars); BOOST_FOREACH(const Dictionary::Pair& kv, service_vars) { String macro = "$" + kv.first + "$"; // this is too simple if (command_line.Contains(macro)) @@ -163,6 +166,7 @@ String CompatUtility::GetCheckableCommandArgs(const Checkable::Ptr& checkable) } String arg_string; + ObjectLock olock(args); BOOST_FOREACH(const Dictionary::Pair& kv, args) { arg_string += Convert::ToString(kv.first) + "=" + Convert::ToString(kv.second) + "!"; }