dedicated_room: Correctly handle token decoding

Correctly handle token decoding when '=' has been trimmed by the backend server.

Co-Authored-By: liushuyu <liushuyu011@gmail.com>
This commit is contained in:
FearlessTobi 2022-08-27 04:00:27 +02:00
parent 2b6ac4463c
commit 27d7db1fae

View File

@ -75,6 +75,17 @@ static constexpr char BanListMagic[] = "YuzuRoom-BanList-1";
static constexpr char token_delimiter{':'}; static constexpr char token_delimiter{':'};
static void PadToken(std::string& token) {
const auto remainder = token.size() % 3;
if (remainder == 0) {
return;
}
for (size_t i = 0; i < (3 - remainder); i++) {
token.push_back('=');
}
}
static std::string UsernameFromDisplayToken(const std::string& display_token) { static std::string UsernameFromDisplayToken(const std::string& display_token) {
std::size_t outlen; std::size_t outlen;
@ -300,6 +311,7 @@ int main(int argc, char** argv) {
if (username.empty()) { if (username.empty()) {
LOG_INFO(Network, "Hosting a public room"); LOG_INFO(Network, "Hosting a public room");
Settings::values.web_api_url = web_api_url; Settings::values.web_api_url = web_api_url;
PadToken(token);
Settings::values.yuzu_username = UsernameFromDisplayToken(token); Settings::values.yuzu_username = UsernameFromDisplayToken(token);
username = Settings::values.yuzu_username.GetValue(); username = Settings::values.yuzu_username.GetValue();
Settings::values.yuzu_token = TokenFromDisplayToken(token); Settings::values.yuzu_token = TokenFromDisplayToken(token);