Extended validation for CommonAPI Addresses
[profile/ivi/common-api-dbus-runtime.git] / src / CommonAPI / DBus / DBusAddressTranslator.cpp
index 3e880eb..a1c836e 100644 (file)
@@ -37,26 +37,29 @@ DBusAddressTranslator::DBusAddressTranslator() {}
 
 void DBusAddressTranslator::init() {
     std::string fqnOfConfigFile = getCurrentBinaryFileFQN();
-    fqnOfConfigFile += DBUS_CONFIG_SUFFIX;
-
     std::ifstream addressConfigFile;
-    addressConfigFile.open(fqnOfConfigFile.c_str());
 
-    if(addressConfigFile.is_open()) {
-        readConfigFile(addressConfigFile);
-        addressConfigFile.close();
-    }
+    if (fqnOfConfigFile != "") {
+        fqnOfConfigFile += DBUS_CONFIG_SUFFIX;
 
-    addressConfigFile.clear();
-    std::vector<std::string> splittedConfigFQN = split(fqnOfConfigFile, '/');
-    std::string globalConfigFQN = DBUS_GLOBAL_CONFIG_ROOT + splittedConfigFQN.at(splittedConfigFQN.size() - 1);
-    addressConfigFile.open(globalConfigFQN);
-    if(addressConfigFile.is_open()) {
-        readConfigFile(addressConfigFile);
-        addressConfigFile.close();
+        addressConfigFile.open(fqnOfConfigFile.c_str());
+
+        if (addressConfigFile.is_open()) {
+            readConfigFile(addressConfigFile);
+            addressConfigFile.close();
+        }
+
+        addressConfigFile.clear();
+        std::vector<std::string> splittedConfigFQN = split(fqnOfConfigFile, '/');
+        std::string globalConfigFQN = DBUS_GLOBAL_CONFIG_ROOT + splittedConfigFQN.at(splittedConfigFQN.size() - 1);
+        addressConfigFile.open(globalConfigFQN);
+        if (addressConfigFile.is_open()) {
+            readConfigFile(addressConfigFile);
+            addressConfigFile.close();
+        }
+        addressConfigFile.clear();
     }
 
-    addressConfigFile.clear();
     addressConfigFile.open(DBUS_GLOBAL_CONFIG_FQN);
     if(addressConfigFile.is_open()) {
         readConfigFile(addressConfigFile);
@@ -125,8 +128,11 @@ void DBusAddressTranslator::readConfigFile(std::ifstream& addressConfigFile) {
                 dbusToCommonApiAddress.insert( {std::get<0>(serviceDetails), currentlyParsedCommonApiAddress});
             }
             reset(serviceDetails);
-            currentlyParsedCommonApiAddress = readLine.substr(1, readLineLength - 2);
-            newAddressFound = commonApiAddressDetails.find(currentlyParsedCommonApiAddress) == commonApiAddressDetails.end();
+            std::string newAddress = readLine.substr(1, readLineLength - 2);
+            if (isValidCommonApiAddress(newAddress)) {
+                currentlyParsedCommonApiAddress = std::move(newAddress);
+                newAddressFound = commonApiAddressDetails.find(currentlyParsedCommonApiAddress) == commonApiAddressDetails.end();
+            }
 
         } else if (newAddressFound) {
             readValue(readLine, serviceDetails);