]> granicus.if.org Git - icinga2/commitdiff
Fix race condition in the config validator.
authorGunnar Beutner <gunnar.beutner@netways.de>
Wed, 5 Feb 2014 08:24:26 +0000 (09:24 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Wed, 5 Feb 2014 11:00:37 +0000 (12:00 +0100)
Fixes #5602

lib/config/configcompilercontext.cpp
lib/config/configcompilercontext.h

index 1ebded61471c920730f333fccfe1a8b7af877d1d..380fc242d4f7396ad2ad6dec3e227ca670a2136d 100644 (file)
@@ -27,16 +27,22 @@ using namespace icinga;
 
 void ConfigCompilerContext::AddMessage(bool error, const String& message)
 {
+       boost::mutex::scoped_lock lock(m_Mutex);
+
        m_Messages.push_back(ConfigCompilerMessage(error, message));
 }
 
 std::vector<ConfigCompilerMessage> ConfigCompilerContext::GetMessages(void) const
 {
+       boost::mutex::scoped_lock lock(m_Mutex);
+
        return m_Messages;
 }
 
 bool ConfigCompilerContext::HasErrors(void) const
 {
+       boost::mutex::scoped_lock lock(m_Mutex);
+
        BOOST_FOREACH(const ConfigCompilerMessage& message, m_Messages) {
                if (message.Error)
                        return true;
@@ -47,6 +53,8 @@ bool ConfigCompilerContext::HasErrors(void) const
 
 void ConfigCompilerContext::Reset(void)
 {
+       boost::mutex::scoped_lock lock(m_Mutex);
+
        m_Messages.clear();
 }
 
index 0194f7a7902727268463a3f8c9f1bf997be1bd4d..a9f43b60ffdbf435f1b932a3b7666ff7888266c3 100644 (file)
@@ -53,6 +53,8 @@ public:
 
 private:
         std::vector<ConfigCompilerMessage> m_Messages;
+
+       mutable boost::mutex m_Mutex;
 };
 
 }