]> granicus.if.org Git - icinga2/commitdiff
Fix missing command arguments
authorGunnar Beutner <gunnar.beutner@netways.de>
Thu, 8 Jan 2015 10:36:53 +0000 (11:36 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Thu, 8 Jan 2015 10:38:09 +0000 (11:38 +0100)
fixes #8144

lib/icinga/pluginutility.cpp

index 3fe81a98f3c71bb60e0407e540a39c6c51ddd996..33c6bcd62b449f7f2edd4a3a740b6aaccd3f3970 100644 (file)
@@ -196,17 +196,13 @@ void PluginUtility::ExecuteCommand(const Command::Ptr& commandObj, const Checkab
 
                Array::Ptr command_arr = command;
                BOOST_FOREACH(const CommandArgument& arg, args) {
-                       Array::Ptr arr;
 
-                       if (arg.AValue.IsString())
-                               AddArgumentHelper(command_arr, arg.Key, arg.AValue, !arg.SkipKey, !arg.SkipValue);
-                       else if (arg.AValue.IsObjectType<Array>())
-                               arr = static_cast<Array::Ptr>(arg.AValue);
-                       else
+                       if (arg.AValue.IsObjectType<Dictionary>()) {
+                               Log(LogWarning, "PluginUtility", "Tried to use dictionary in argument");
                                continue;
-
-                       if (arr) {
+                       } else if (arg.AValue.IsObjectType<Array>()) {
                                bool first = true;
+                               Array::Ptr arr = static_cast<Array::Ptr>(arg.AValue);
 
                                ObjectLock olock(arr);
                                BOOST_FOREACH(const Value& value, arr) {
@@ -217,11 +213,11 @@ void PluginUtility::ExecuteCommand(const Command::Ptr& commandObj, const Checkab
                                                add_key = !arg.SkipKey;
                                        } else
                                                add_key = !arg.SkipKey && arg.RepeatKey;
-                                               
 
                                        AddArgumentHelper(command_arr, arg.Key, value, add_key, !arg.SkipValue);
                                }
-                       }
+                       } else
+                               AddArgumentHelper(command_arr, arg.Key, arg.AValue, !arg.SkipKey, !arg.SkipValue);
                }
        }