]> granicus.if.org Git - icinga2/commitdiff
Detect infinite recursion in the zone hierarchy graph
authorGunnar Beutner <gunnar@beutner.name>
Wed, 23 Mar 2016 08:01:10 +0000 (09:01 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Wed, 23 Mar 2016 08:03:53 +0000 (09:03 +0100)
fixes #10937

lib/remote/zone.cpp

index f58930c43c1c337b737b171eacced4e21f0ffd1a..d856b7d55bec4efd751757aea2bb8e8e24c0488c 100644 (file)
@@ -32,11 +32,16 @@ void Zone::OnAllConfigLoaded(void)
        m_Parent = Zone::GetByName(GetParentRaw());
 
        Zone::Ptr zone = m_Parent;
+       int levels = 0;
 
        while (zone) {
                m_AllParents.push_back(zone);
 
                zone = Zone::GetByName(zone->GetParentRaw());
+               levels++;
+
+               if (levels > 32)
+                       BOOST_THROW_EXCEPTION(ScriptError("Infinite recursion detected while resolving zone graph. Check your zone hierarchy.", GetDebugInfo()));
        }
 }