// // Copyright (C) 2015 Google, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at: // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #include "service/common/bluetooth/util/address_helper.h" #include <cstdlib> #include <base/logging.h> #include <base/strings/string_split.h> namespace util { bool IsAddressValid(const std::string& address) { bt_bdaddr_t addr; return BdAddrFromString(address, &addr); } bool BdAddrFromString(const std::string& address, bt_bdaddr_t* out_addr) { CHECK(out_addr); if (address.length() != 17) return false; std::vector<std::string> byte_tokens = base::SplitString( address, ":", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); if (byte_tokens.size() != 6) return false; for (int i = 0; i < 6; i++) { const auto& token = byte_tokens[i]; if (token.length() != 2) return false; char* temp = nullptr; out_addr->address[i] = strtol(token.c_str(), &temp, 16); if (*temp != '\0') return false; } return true; } } // namespace util