Permalink
Browse files

BTReal: Handle case where a link key may be invalid within LoadLinkKe…

…ys()

This can only occur if a user purposely corrupts their config file, but
still, we may as well protect users from themselves.
  • Loading branch information...
lioncash committed Jun 10, 2018
1 parent ce69201 commit 59846378b3c7ffb427718c6a2375873a73909b69
Showing with 12 additions and 3 deletions.
  1. +12 −3 Source/Core/Core/IOS/USB/Bluetooth/BTReal.cpp
@@ -514,8 +514,17 @@ void BluetoothReal::LoadLinkKeys()
if (index == std::string::npos)
continue;
bdaddr_t address = Common::StringToMacAddress(pair.substr(0, index)).value();
std::reverse(address.begin(), address.end());
const std::string address_string = pair.substr(0, index);
std::optional<bdaddr_t> address = Common::StringToMacAddress(address_string);
if (!address)
{
ERROR_LOG(IOS_WIIMOTE, "Malformed MAC address (%s). Skipping loading of current link key.",
address_string.c_str());
continue;
}
auto& mac = address.value();
std::reverse(mac.begin(), mac.end());
const std::string& key_string = pair.substr(index + 1);
linkkey_t key{};
@@ -527,7 +536,7 @@ void BluetoothReal::LoadLinkKeys()
key[pos++] = value;
}
m_link_keys[address] = key;
m_link_keys[mac] = key;
}
}

0 comments on commit 5984637

Please sign in to comment.