[Bluetooth] Implementation of MAC address validator fix 96/230996/4
authorArkadiusz Pietraszek <a.pietraszek@samsung.com>
Thu, 16 Apr 2020 09:36:47 +0000 (11:36 +0200)
committerArkadiusz Pietraszek <a.pietraszek@samsung.com>
Tue, 21 Apr 2020 07:05:52 +0000 (09:05 +0200)
Functions IsValidAddress() and IsValidUUID have been fixed.

[Verification]
Code compiles without errors. Functions tested manually in developer console.

Change-Id: I3e975f6ea08061528ef5b6cfe14e8a6f814e693c
Signed-off-by: Arkadiusz Pietraszek <a.pietraszek@samsung.com>
src/bluetooth/bluetooth_adapter.cc

index 4e7456d..0487d26 100644 (file)
@@ -18,8 +18,7 @@
 
 #include <algorithm>
 #include <memory>
-
-#include <pcrecpp.h>
+#include <regex>
 
 #ifdef APP_CONTROL_SETTINGS_SUPPORT
 #include <appfw/app_control.h>
@@ -78,36 +77,24 @@ const unsigned short kTimeout = 180;
 
 static bool IsValidAddress(const std::string& address) {
   ScopeLogger();
-  static pcrecpp::RE re("(([0-9a-zA-Z]+):)+([0-9a-zA-Z]+)");
-  static std::string compare_address = "00:12:47:08:9A:A6";
+  const std::regex macAdressRegex {"([[:xdigit:]]{2}[:]){5}([[:xdigit:]]{2})"};
 
-  if (!re.FullMatch(address)) {
-    LoggerE("Invalid address");
-    return false;
-  }
-  if (address.size() != compare_address.size()) {
-    LoggerE("Invalid size");
-    return false;
+  if (std::regex_match(address, macAdressRegex)) {
+    return true;
   }
-  return true;
+  LoggerE("Invalid MAC address: %s", address.c_str());
+  return false;
 }
 
 static bool IsValidUUID(const std::string& uuid) {
   ScopeLogger();
-  static pcrecpp::RE re("(([0-9a-zA-Z]+)-)+([0-9a-zA-Z]+)");
-  static std::string compare_uuid = "00001101-0000-1000-8000-00805F9B34FB";
+  const std::regex uuidRegex {"[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}"};
 
-  if (!re.FullMatch(uuid)) {
-    LoggerE("Invalid UUID: %s", uuid.c_str());
-    return false;
+  if (std::regex_match(uuid, uuidRegex)) {
+    return true;
   }
-
-  if (uuid.size() != compare_uuid.size()) {
-    LoggerE("Invalid size: %s", uuid.c_str());
-    return false;
-  }
-
-  return true;
+  LoggerE("Invalid UUID: %s", uuid.c_str());
+  return false;
 }
 
 void BluetoothAdapter::StateChangedCB(int result, bt_adapter_state_e state, void* user_data) {