Fixing issues found by prevent (49867)
authorKarol Pawlowski <k.pawlowski@samsung.com>
Wed, 17 Apr 2013 13:53:59 +0000 (15:53 +0200)
committerKarol Pawlowski <k.pawlowski@samsung.com>
Thu, 18 Apr 2013 13:57:51 +0000 (15:57 +0200)
[Issue#] LINUXWRT-234
[Bug] Dereference null return value
[Cause] N/A
[Solution] Remove issues
[Verification] Build wrt-plugins-common repository

Change-Id: I12673c3d4edf0688ef59371f408e590644658613

src/plugin-loading/plugin.cpp
src/plugins-api-support/PluginRegistry.cpp
src/plugins-installer/plugin_installer.cpp

index 7a468a4..3a7ab0d 100644 (file)
@@ -64,8 +64,10 @@ PluginPtr Plugin::LoadFromFile(const std::string& fileName)
     LogDebug("dlopen() done!");
 
     if (dllHandle == NULL) {
+        const char* error = (const char*)dlerror();
         LogError(
-            "Failed to load plugin: " << fileName << ". Reason: " << dlerror());
+            "Failed to load plugin: " << fileName <<
+            ". Reason: " << (error != NULL ? error : "unknown"));
         PluginPtr empty;
         return empty;
     }
index af9cc2d..adf6563 100644 (file)
@@ -83,7 +83,8 @@ void PluginRegistry::UnloadAll()
         if (m_plugins.end() != pluginIt) {
             void* handle = dlopen(libraryIt->first.c_str(), RTLD_NOW);
             if (!handle) {
-                LogError("Error: " << dlerror());
+                const char* error = (const char*)dlerror();
+                LogError("Error: " << (error != NULL ? error : "unknown"));
                 continue;
             }
 
@@ -91,7 +92,8 @@ void PluginRegistry::UnloadAll()
                 static_cast<ExportedApi*>
                 (dlsym(handle, GetExportedSymbolName()));
             if (NULL == entryPoint) {
-                LogError("Error: " << dlerror());
+                const char* error = (const char*)dlerror();
+                LogError("Error: " << (error != NULL ? error : "unknown"));
                 continue;
             }
             if (entryPoint->Unregister == NULL) {
@@ -114,7 +116,8 @@ bool PluginRegistry::LoadFromFile(const std::string& libraryName)
 {
     void* handle = dlopen(libraryName.c_str(), RTLD_NOW);
     if (!handle) {
-        LogError("Error: " << dlerror());
+        const char* error = (const char*)dlerror();
+        LogError("Error: " << (error != NULL ? error : "unknown"));
         return false;
     }
     m_libraries[libraryName] = handle;
@@ -122,7 +125,8 @@ bool PluginRegistry::LoadFromFile(const std::string& libraryName)
     ExportedApi* entryPoint =
         static_cast<ExportedApi*>(dlsym(handle, GetExportedSymbolName()));
     if (NULL == entryPoint) {
-        LogError("Error: " << dlerror());
+        const char* error = (const char*)dlerror();
+        LogError("Error: " << (error != NULL ? error : "unknown"));
         return false;
     }
 
index 929971b..68afd5f 100644 (file)
@@ -238,9 +238,10 @@ PluginObjectsPtr PluginsInstaller::loadLibraryFromMetafile(
 
     void *dlHandle = dlopen(libName.c_str(), RTLD_NOW);
     if (dlHandle == NULL) {
+        const char* error = (const char*)dlerror();
         LogError(
             "Failed to load plugin: " << libName <<
-            ". Reason: " << dlerror());
+            ". Reason: " << (error != NULL ? error : "unknown"));
         ThrowMsg(PluginInstall::Exceptions::LibraryException, "Library error");
     }
 
@@ -606,8 +607,9 @@ bool PluginsInstaller::fillMappingInterfaces(PluginMetafileData& pluginData,
 {
     void *dlHandle = dlopen(filename.c_str(), RTLD_NOW);
     if (dlHandle == NULL) {
+        const char* error = (const char*)dlerror();
         LogError(
-            "Failed to load plugin: " << filename << ". Reason: " << dlerror());
+            "Failed to load plugin: " << filename << ". Reason: " << (error != NULL ? error : "unknown"));
         return false;
     }
     Try
@@ -615,7 +617,8 @@ bool PluginsInstaller::fillMappingInterfaces(PluginMetafileData& pluginData,
         ExportedApi* entryPoint =
             static_cast<ExportedApi*>(dlsym(dlHandle, GetExportedSymbolName()));
         if (NULL == entryPoint) {
-            LogError("Error: " << dlerror());
+            const char* error = (const char*)dlerror();
+            LogError("Error: " << (error != NULL ? error : "unknown"));
             ThrowMsg(PluginInstall::Exceptions::LibraryException,
                      "Library error");
         }