From 27d7db1faecd761f6dccd753792b2e72d71e9fdd Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Sat, 27 Aug 2022 04:00:27 +0200 Subject: dedicated_room: Correctly handle token decoding Correctly handle token decoding when '=' has been trimmed by the backend server. Co-Authored-By: liushuyu --- src/dedicated_room/yuzu_room.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/dedicated_room/yuzu_room.cpp b/src/dedicated_room/yuzu_room.cpp index 7c1a75de3..173a53317 100644 --- a/src/dedicated_room/yuzu_room.cpp +++ b/src/dedicated_room/yuzu_room.cpp @@ -75,6 +75,17 @@ static constexpr char BanListMagic[] = "YuzuRoom-BanList-1"; 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) { std::size_t outlen; @@ -300,6 +311,7 @@ int main(int argc, char** argv) { if (username.empty()) { LOG_INFO(Network, "Hosting a public room"); Settings::values.web_api_url = web_api_url; + PadToken(token); Settings::values.yuzu_username = UsernameFromDisplayToken(token); username = Settings::values.yuzu_username.GetValue(); Settings::values.yuzu_token = TokenFromDisplayToken(token); -- cgit v1.2.3