Skip to content

Commit

Permalink
Improve config validation for arrays of object names
Browse files Browse the repository at this point in the history
fixes #12556
  • Loading branch information
gunnarbeutner committed Aug 26, 2016
1 parent 4f46e59 commit dac0ff9
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
5 changes: 4 additions & 1 deletion lib/remote/zone.cpp
Expand Up @@ -41,7 +41,10 @@ void Zone::OnAllConfigLoaded(void)
if (endpoints) {
ObjectLock olock(endpoints);
for (const String& endpoint : endpoints) {
Endpoint::GetByName(endpoint)->SetCachedZone(this);
Endpoint::Ptr ep = Endpoint::GetByName(endpoint);

if (ep)
ep->SetCachedZone(this);
}
}

Expand Down
9 changes: 8 additions & 1 deletion tools/mkclass/classcompiler.cpp
Expand Up @@ -535,7 +535,14 @@ void ClassCompiler::HandleClass(const Klass& klass, const ClassDebugInfo&)
std::string ftype = FieldTypeToIcingaName(field, true);

if (field.Type.IsName) {
m_Impl << "\t" << "if (!avalue.IsEmpty() && !utils.ValidateName(\"" << field.Type.TypeName << "\", avalue))" << std::endl
m_Impl << "\t" << "if (";

if (field.Type.ArrayRank > 0)
m_Impl << "avalue.IsEmpty() || ";
else
m_Impl << "!avalue.IsEmpty() && ";

m_Impl << "!utils.ValidateName(\"" << field.Type.TypeName << "\", avalue))" << std::endl
<< "\t\t" << "BOOST_THROW_EXCEPTION(ValidationError(dynamic_cast<ConfigObject *>(this), boost::assign::list_of(\"" << field.Name << "\"), \"Object '\" + avalue + \"' of type '" << field.Type.TypeName
<< "' does not exist.\"));" << std::endl;
} else if (field.Type.ArrayRank > 0 && (ftype == "Number" || ftype == "Boolean")) {
Expand Down

0 comments on commit dac0ff9

Please sign in to comment.