From 4d7dc0bfc8a310eedceeea332c620dbd0872e05f Mon Sep 17 00:00:00 2001 From: Arkadiusz Pietraszek Date: Thu, 16 Apr 2020 11:36:47 +0200 Subject: [PATCH] [Bluetooth] Implementation of MAC address validator fix 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 --- src/bluetooth/bluetooth_adapter.cc | 35 ++++++++++-------------------- 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/src/bluetooth/bluetooth_adapter.cc b/src/bluetooth/bluetooth_adapter.cc index 4e7456d3..0487d264 100644 --- a/src/bluetooth/bluetooth_adapter.cc +++ b/src/bluetooth/bluetooth_adapter.cc @@ -18,8 +18,7 @@ #include #include - -#include +#include #ifdef APP_CONTROL_SETTINGS_SUPPORT #include @@ -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) { -- 2.34.1