Merge pull request #6497 from Icinga/bugfix/match-dictionary-error-handling

Improve error logging for match/regex/cidr_match functions and unsupported dictionary usage
This commit is contained in:
Jean Flach 2018-07-27 17:26:12 +02:00 committed by GitHub
commit a5afaf5b40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 3 deletions

View File

@ -108,10 +108,14 @@ bool ScriptUtils::CastBool(const Value& value)
bool ScriptUtils::Regex(const std::vector<Value>& args)
{
if (args.size() < 2)
BOOST_THROW_EXCEPTION(std::invalid_argument("Regular expression and text must be specified."));
BOOST_THROW_EXCEPTION(std::invalid_argument("Regular expression and text must be specified for regex()."));
String pattern = args[0];
const Value& argTexts = args[1];
if (argTexts.IsObjectType<Dictionary>())
BOOST_THROW_EXCEPTION(std::invalid_argument("Dictionaries are not supported by regex()."));
MatchType mode;
if (args.size() > 2)
@ -158,10 +162,14 @@ bool ScriptUtils::Regex(const std::vector<Value>& args)
bool ScriptUtils::Match(const std::vector<Value>& args)
{
if (args.size() < 2)
BOOST_THROW_EXCEPTION(std::invalid_argument("Pattern and text must be specified."));
BOOST_THROW_EXCEPTION(std::invalid_argument("Pattern and text must be specified for match()."));
String pattern = args[0];
const Value& argTexts = args[1];
if (argTexts.IsObjectType<Dictionary>())
BOOST_THROW_EXCEPTION(std::invalid_argument("Dictionaries are not supported by match()."));
MatchType mode;
if (args.size() > 2)
@ -199,10 +207,14 @@ bool ScriptUtils::Match(const std::vector<Value>& args)
bool ScriptUtils::CidrMatch(const std::vector<Value>& args)
{
if (args.size() < 2)
BOOST_THROW_EXCEPTION(std::invalid_argument("CIDR and IP address must be specified."));
BOOST_THROW_EXCEPTION(std::invalid_argument("CIDR and IP address must be specified for cidr_match()."));
String pattern = args[0];
const Value& argIps = args[1];
if (argIps.IsObjectType<Dictionary>())
BOOST_THROW_EXCEPTION(std::invalid_argument("Dictionaries are not supported by cidr_match()."));
MatchType mode;
if (args.size() > 2)