Skip to content

Commit e623588

Browse files
RipleyTomelad335
authored andcommitted
fix: check ticket encoded correctly
1 parent 5ab2398 commit e623588

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

rpcs3/Emu/NP/clans_client.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
LOG_CHANNEL(clan_log, "clans");
3232

33-
3433
const char* REQ_TYPE_FUNC = "func";
3534
const char* REQ_TYPE_SEC = "sec";
3635

@@ -128,6 +127,11 @@ void fmt_class_string<clan::ClanRequestAction>::format(std::string& out, u64 arg
128127

129128
namespace clan
130129
{
130+
constexpr size_t base64_size(size_t size)
131+
{
132+
return (size + 2) / 3 * 4 + 1;
133+
}
134+
131135
size_t clans_client::curl_write_callback(void* data, size_t size, size_t nmemb, void* clientp)
132136
{
133137
const size_t realsize = size * nmemb;
@@ -341,11 +345,16 @@ namespace clan
341345
return "";
342346
}
343347

344-
std::vector<byte> ticket_bytes(1024);
345-
uint32_t ticket_size = UINT32_MAX;
348+
std::vector<byte> ticket_bytes(base64_size(clan_ticket.size()));
349+
uint32_t encoded_ticket_size = ::size32(ticket_bytes);
350+
351+
if (Base64_Encode_NoNl(clan_ticket.data(), ::size32(clan_ticket), ticket_bytes.data(), &encoded_ticket_size) != 0)
352+
{
353+
clan_log.error("Failed to encode clan ticket to base64");
354+
return "";
355+
}
346356

347-
Base64_Encode_NoNl(clan_ticket.data(), static_cast<u32>(clan_ticket.size()), ticket_bytes.data(), &ticket_size);
348-
const std::string ticket_str = std::string(reinterpret_cast<char*>(ticket_bytes.data()), ticket_size);
357+
const std::string ticket_str = std::string(reinterpret_cast<char*>(ticket_bytes.data()), encoded_ticket_size);
349358

350359
return ticket_str;
351360
}

0 commit comments

Comments
 (0)