Fix SDL configuration file path Valgrind errors 63/6563/1
authorTimo Tietavainen <timo.tietavainen@nokia.com>
Thu, 5 Aug 2021 08:43:45 +0000 (11:43 +0300)
committerTimo Tietavainen <timo.tietavainen@nokia.com>
Thu, 5 Aug 2021 08:43:45 +0000 (11:43 +0300)
Fix Valgrind 'conditional jump or move depends on uninitialized value'
errors what are related to boost::filesystem::directory_iterator by
replacing the boost based implementation with standard C 'opendir()'
and 'readdir()' implementation.

Issue-ID: RIC-226

Signed-off-by: Timo Tietavainen <timo.tietavainen@nokia.com>
Change-Id: I011dabaab6dcf602ff16e21e778dcbd12c1a9819

src/configurationpaths.cpp

index f4b15c9..b0d86ab 100644 (file)
@@ -21,9 +21,7 @@
 
 #include "config.h"
 #include "private/configurationpaths.hpp"
-#include <algorithm>
-#include <boost/filesystem.hpp>
-#include <boost/range/iterator_range.hpp>
+#include <dirent.h>
 #include <boost/algorithm/string/predicate.hpp>
 
 using namespace shareddatalayer;
@@ -32,19 +30,17 @@ namespace
 {
     void findConfigurationFilesFromDirectory(const std::string& path, std::vector<std::string>& paths)
     {
-        try
+        DIR *dir; struct dirent *diread;
+        if ((dir = opendir(path.c_str())) != nullptr)
         {
-            for(const auto& i : boost::make_iterator_range(boost::filesystem::directory_iterator(path), { }))
+            while ((diread = readdir(dir)) != nullptr)
             {
-                const auto filename(i.path().filename().native());
-                if ((!boost::filesystem::is_directory(i.path())) &&
-                    (filename[0] != '.') &&
-                    (boost::algorithm::ends_with(filename, ".json")))
-                    paths.push_back(i.path().native());
+                if ((diread->d_type == DT_REG) &&
+                    (diread->d_name[0] != '.') &&
+                    (boost::algorithm::ends_with(diread->d_name, ".json")))
+                    paths.push_back(std::string(diread->d_name));
             }
-        }
-        catch (const boost::filesystem::filesystem_error &)
-        {
+            closedir (dir);
         }
     }
 }