]> granicus.if.org Git - icinga2/commitdiff
Fix crash in CompatUtility::GetCheckableCommandArgs
authorGunnar Beutner <gunnar@beutner.name>
Fri, 7 Nov 2014 08:26:44 +0000 (09:26 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Fri, 7 Nov 2014 08:26:44 +0000 (09:26 +0100)
refs #7599

lib/icinga/compatutility.cpp

index 2a699893eca67c2f5d1d2ae660ffec435e1eab2d..19a951dd70f8756396f4154d096c435d48a41844 100644 (file)
@@ -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) + "!";
                }