summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-11-19 14:38:27 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2009-11-19 14:38:27 +0100
commit7f903697ecf116edcfc7eca4315eaaed0626401c (patch)
tree320e56ef41acea77e300625f0f3023df5598a147
parentefe1aee0dfe0fe5f364357080bcfed4287cb7597 (diff)
downloadabrt-7f903697ecf116edcfc7eca4315eaaed0626401c.tar.gz
abrt-7f903697ecf116edcfc7eca4315eaaed0626401c.tar.xz
abrt-7f903697ecf116edcfc7eca4315eaaed0626401c.zip
fix small bug in plugin loading code
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--lib/Utils/Plugin.h1
-rw-r--r--src/Daemon/PluginManager.cpp7
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/Utils/Plugin.h b/lib/Utils/Plugin.h
index 9447f45..2d8bba3 100644
--- a/lib/Utils/Plugin.h
+++ b/lib/Utils/Plugin.h
@@ -84,6 +84,7 @@ typedef enum {
ACTION, /**< An action plugin*/
REPORTER, /**< A reporter plugin*/
DATABASE /**< A database plugin*/
+ MAX_PLUGIN_TYPE = DATABASE
} plugin_type_t;
/**
diff --git a/src/Daemon/PluginManager.cpp b/src/Daemon/PluginManager.cpp
index f8e8fed..2f4d875 100644
--- a/src/Daemon/PluginManager.cpp
+++ b/src/Daemon/PluginManager.cpp
@@ -166,9 +166,10 @@ void CPluginManager::LoadPlugin(const char *pName)
{
std::string libPath = ssprintf(PLUGINS_LIB_DIR"/"PLUGINS_LIB_PREFIX"%s."PLUGINS_LIB_EXTENSION, pName);
abrtPlugin = new CABRTPlugin(libPath.c_str());
- if (abrtPlugin->GetMagicNumber() != PLUGINS_MAGIC_NUMBER ||
- (abrtPlugin->GetType() < ANALYZER && abrtPlugin->GetType() > DATABASE))
- {
+ if (abrtPlugin->GetMagicNumber() != PLUGINS_MAGIC_NUMBER
+ || abrtPlugin->GetType() < 0
+ || abrtPlugin->GetType() > MAX_PLUGIN_TYPE
+ ) {
throw CABRTException(EXCEP_PLUGIN, "CPluginManager::LoadPlugin(): non-compatible plugin");
}
log("Plugin %s (%s) succesfully loaded", pName, abrtPlugin->GetVersion());