allow uneven command sizes in sc/ss command data

This commit is contained in:
Martin Michelsen
2023-03-18 15:08:04 -07:00
parent 618d9180cd
commit 3dda420c3a
2 changed files with 4 additions and 3 deletions
+3
View File
@@ -369,18 +369,21 @@ static void proxy_command_get_player_card(shared_ptr<ServerState>,
static void server_command_send_client(shared_ptr<ServerState>, shared_ptr<Lobby>,
shared_ptr<Client> c, const std::u16string& args) {
string data = parse_data_string(encode_sjis(args));
data.resize((data.size() + 3) & (~3));
c->channel.send(data);
}
static void proxy_command_send_client(shared_ptr<ServerState>,
ProxyServer::LinkedSession& session, const std::u16string& args) {
string data = parse_data_string(encode_sjis(args));
data.resize((data.size() + 3) & (~3));
session.client_channel.send(data);
}
static void proxy_command_send_server(shared_ptr<ServerState>,
ProxyServer::LinkedSession& session, const std::u16string& args) {
string data = parse_data_string(encode_sjis(args));
data.resize((data.size() + 3) & (~3));
session.server_channel.send(data);
}
+1 -3
View File
@@ -583,12 +583,10 @@ session with ID 17205AE4, run the command `on 17205AE4 sc 1D 00 04 00`.\n\
} else if ((command_name == "sc") || (command_name == "ss")) {
string data = parse_data_string(command_args, nullptr, ParseDataFlags::ALLOW_FILES);
if (data.size() & 3) {
throw invalid_argument("data size is not a multiple of 4");
}
if (data.size() == 0) {
throw invalid_argument("no data given");
}
data.resize((data.size() + 3) & (~3));
shared_ptr<ProxyServer::LinkedSession> proxy_session;
try {