From f552e98cd4895232539cab34a5673ab35a9e99d2 Mon Sep 17 00:00:00 2001 From: Isaac <62234577+Isaac0-dev@users.noreply.github.com> Date: Tue, 10 May 2022 19:27:29 +1000 Subject: [PATCH 1/3] Prevent spoofing moderator packets (#86) --- src/pc/network/packets/packet.c | 2 +- src/pc/network/packets/packet.h | 2 +- src/pc/network/packets/packet_command_mod.c | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pc/network/packets/packet.c b/src/pc/network/packets/packet.c index 78ef25339..435885b58 100644 --- a/src/pc/network/packets/packet.c +++ b/src/pc/network/packets/packet.c @@ -52,7 +52,7 @@ void packet_process(struct Packet* p) { case PACKET_CHAT: network_receive_chat(p); break; case PACKET_KICK: network_receive_kick(p); break; case PACKET_COMMAND: network_recieve_chat_command(p); break; - case PACKET_MODERATOR: network_recieve_moderator(); break; + case PACKET_MODERATOR: network_recieve_moderator(p); break; case PACKET_KEEP_ALIVE: network_receive_keep_alive(p); break; case PACKET_LEAVING: network_receive_leaving(p); break; case PACKET_SAVE_FILE: network_receive_save_file(p); break; diff --git a/src/pc/network/packets/packet.h b/src/pc/network/packets/packet.h index 94be11bca..d5ef0b29b 100644 --- a/src/pc/network/packets/packet.h +++ b/src/pc/network/packets/packet.h @@ -247,7 +247,7 @@ void network_recieve_chat_command(struct Packet* p); // packet_moderator.c void network_send_moderator(u8 localIndex); -void network_recieve_moderator(void); +void network_recieve_moderator(struct Packet* p); // packet_keep_alive.c void network_send_keep_alive(u8 localIndex); diff --git a/src/pc/network/packets/packet_command_mod.c b/src/pc/network/packets/packet_command_mod.c index 1465d8dc9..6e0226402 100644 --- a/src/pc/network/packets/packet_command_mod.c +++ b/src/pc/network/packets/packet_command_mod.c @@ -52,10 +52,15 @@ void network_send_moderator(u8 localIndex) { network_send_to(localIndex, &p); } -void network_recieve_moderator(void) { +void network_recieve_moderator(struct Packet* p) { if (gIsModerator == 1) { return; } + + if (network_player_any_connected() && gNetworkPlayers[p->localIndex].type != NPT_SERVER) { + return; + } + gIsModerator = 1; djui_chat_message_create("\\#fff982\\You are now a Moderator."); } \ No newline at end of file From 2a6c0be1bdda4d49c941653ec89d4cfba4d07a45 Mon Sep 17 00:00:00 2001 From: EmeraldLoc <86802223+EmeraldLoc@users.noreply.github.com> Date: Tue, 10 May 2022 23:20:19 -0500 Subject: [PATCH 2/3] Fixed mac compilation (#88) --- data/dynos_mgr_actor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/dynos_mgr_actor.cpp b/data/dynos_mgr_actor.cpp index 009051a78..b4b44ac86 100644 --- a/data/dynos_mgr_actor.cpp +++ b/data/dynos_mgr_actor.cpp @@ -45,7 +45,7 @@ void DynOS_Actor_AddCustom(const SysPath &aFilename, const char *aActorName) { } // Alloc and init the actors gfx list - ActorGfx actorGfx = { 0 }; + ActorGfx actorGfx = { }; actorGfx.mGfxData = _GfxData; actorGfx.mGraphNode = (GraphNode *) DynOS_Geo_GetGraphNode(geoLayout, false); actorGfx.mPackIndex = MOD_PACK_INDEX; From 02b99d04436b8c73e5c21817f58521c3de685dbe Mon Sep 17 00:00:00 2001 From: Isaac <62234577+Isaac0-dev@users.noreply.github.com> Date: Wed, 11 May 2022 13:50:40 +0930 Subject: [PATCH 3/3] Crash fix (#87) --- src/pc/network/network.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pc/network/network.c b/src/pc/network/network.c index 0f3df7c8f..4dae3f0a6 100644 --- a/src/pc/network/network.c +++ b/src/pc/network/network.c @@ -186,6 +186,10 @@ bool network_allow_unknown_local_index(enum PacketType packetType) { } void network_send_to(u8 localIndex, struct Packet* p) { + if (p == NULL) { + LOG_ERROR("no data to send"); + return; + } // sanity checks if (gNetworkType == NT_NONE) { LOG_ERROR("network type error none!"); return; } if (p->error) { LOG_ERROR("packet error!"); return; } @@ -272,6 +276,10 @@ void network_send_to(u8 localIndex, struct Packet* p) { } void network_send(struct Packet* p) { + if (p == NULL) { + LOG_ERROR("no data to send"); + return; + } // prevent errors during writing from propagating if (p->writeError) { LOG_ERROR("packet has write error: %u", p->packetType);