3131#include " GossipDef.h"
3232#include " SocialMgr.h"
3333#include " Language.h"
34+ #include " Anticheat.h"
3435
3536void WorldSession::HandleGuildQueryOpcode (WorldPacket& recvPacket)
3637{
@@ -60,6 +61,12 @@ void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
6061 return ;
6162 }
6263
64+ if (gname.size () > GUILD_NAME_MAX_LENGTH)
65+ {
66+ ProcessAnticheatAction (" PassiveAnticheat" , " Attempt to set guild name to string longer than client limit." , CHEAT_ACTION_LOG | CHEAT_ACTION_REPORT_GMS | CHEAT_ACTION_KICK);
67+ return ;
68+ }
69+
6370 Guild *guild = new Guild;
6471 if (!guild->Create (GetPlayer (), gname))
6572 {
@@ -72,17 +79,16 @@ void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
7279
7380void WorldSession::HandleGuildInviteOpcode (WorldPacket& recvPacket)
7481{
75- std::string Invitedname, plname;
76- Player* player = nullptr ;
77-
78- recvPacket >> Invitedname;
82+ std::string invitedName;
83+ recvPacket >> invitedName;
7984
80- if (normalizePlayerName (Invitedname))
81- player = ObjectAccessor::FindPlayerByName (Invitedname.c_str ());
85+ Player* player = nullptr ;
86+ if (normalizePlayerName (invitedName))
87+ player = ObjectAccessor::FindPlayerByName (invitedName.c_str ());
8288
8389 if (!player)
8490 {
85- SendGuildCommandResult (GUILD_INVITE_S, Invitedname , ERR_GUILD_PLAYER_NOT_FOUND_S);
91+ SendGuildCommandResult (GUILD_INVITE_S, invitedName , ERR_GUILD_PLAYER_NOT_FOUND_S);
8692 return ;
8793 }
8894
@@ -102,29 +108,26 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
102108 // OK result but not send invite
103109 if (player->GetSocial ()->HasIgnore (GetPlayer ()->GetObjectGuid ()))
104110 {
105- plname = player->GetName ();
106- SendGuildCommandResult (GUILD_INVITE_S, plname, ERR_GUILD_IGNORING_YOU_S);
111+ SendGuildCommandResult (GUILD_INVITE_S, invitedName, ERR_GUILD_IGNORING_YOU_S);
107112 return ;
108113 }
109114
110115 // not let enemies sign guild charter
111116 if (!sWorld .getConfig (CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GUILD) && player->GetTeam () != GetPlayer ()->GetTeam ())
112117 {
113- SendGuildCommandResult (GUILD_INVITE_S, Invitedname , ERR_GUILD_NOT_ALLIED);
118+ SendGuildCommandResult (GUILD_INVITE_S, invitedName , ERR_GUILD_NOT_ALLIED);
114119 return ;
115120 }
116121
117122 if (player->GetGuildId ())
118123 {
119- plname = player->GetName ();
120- SendGuildCommandResult (GUILD_INVITE_S, plname, ERR_ALREADY_IN_GUILD_S);
124+ SendGuildCommandResult (GUILD_INVITE_S, invitedName, ERR_ALREADY_IN_GUILD_S);
121125 return ;
122126 }
123127
124128 if (player->GetGuildIdInvited ())
125129 {
126- plname = player->GetName ();
127- SendGuildCommandResult (GUILD_INVITE_S, plname, ERR_ALREADY_INVITED_TO_GUILD_S);
130+ SendGuildCommandResult (GUILD_INVITE_S, invitedName, ERR_ALREADY_INVITED_TO_GUILD_S);
128131 return ;
129132 }
130133
@@ -134,7 +137,7 @@ void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
134137 return ;
135138 }
136139
137- sLog .Out (LOG_BASIC, LOG_LVL_DEBUG, " Player %s Invited %s to Join his Guild" , GetPlayer ()->GetName (), Invitedname .c_str ());
140+ sLog .Out (LOG_BASIC, LOG_LVL_DEBUG, " Player %s Invited %s to Join his Guild" , GetPlayer ()->GetName (), invitedName .c_str ());
138141
139142 player->SetGuildIdInvited (GetPlayer ()->GetGuildId ());
140143 // Put record into guildlog
@@ -493,7 +496,10 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
493496 MOTD.clear ();
494497
495498 if (MOTD.size () > GUILD_MOTD_MAX_LENGTH)
499+ {
500+ ProcessAnticheatAction (" PassiveAnticheat" , " Attempt to set guild motd to string longer than client limit." , CHEAT_ACTION_LOG | CHEAT_ACTION_REPORT_GMS | CHEAT_ACTION_KICK);
496501 return ;
502+ }
497503
498504 Guild* guild = sGuildMgr .GetGuildById (GetPlayer ()->GetGuildId ());
499505 if (!guild)
@@ -542,7 +548,10 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
542548
543549 recvPacket >> PNOTE;
544550 if (PNOTE.size () > GUILD_NOTE_MAX_LENGTH)
551+ {
552+ ProcessAnticheatAction (" PassiveAnticheat" , " Attempt to set guild player note to string longer than client limit." , CHEAT_ACTION_LOG | CHEAT_ACTION_REPORT_GMS | CHEAT_ACTION_KICK);
545553 return ;
554+ }
546555
547556 slot->SetPNOTE (PNOTE);
548557
@@ -579,7 +588,10 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
579588
580589 recvPacket >> OFFNOTE;
581590 if (OFFNOTE.size () > GUILD_NOTE_MAX_LENGTH)
591+ {
592+ ProcessAnticheatAction (" PassiveAnticheat" , " Attempt to set guild officer note to string longer than client limit." , CHEAT_ACTION_LOG | CHEAT_ACTION_REPORT_GMS | CHEAT_ACTION_KICK);
582593 return ;
594+ }
583595
584596 slot->SetOFFNOTE (OFFNOTE);
585597
@@ -588,7 +600,7 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
588600
589601void WorldSession::HandleGuildRankOpcode (WorldPacket& recvPacket)
590602{
591- std::string rankname ;
603+ std::string rankName ;
592604 uint32 rankId;
593605 uint32 rights;
594606
@@ -609,9 +621,15 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
609621
610622 recvPacket >> rankId;
611623 recvPacket >> rights;
612- recvPacket >> rankname;
624+ recvPacket >> rankName;
625+
626+ if (rankName.size () > GUILD_RANK_MAX_LENGTH)
627+ {
628+ ProcessAnticheatAction (" PassiveAnticheat" , " Attempt to set guild rank name to string longer than client limit." , CHEAT_ACTION_LOG | CHEAT_ACTION_REPORT_GMS | CHEAT_ACTION_KICK);
629+ return ;
630+ }
613631
614- guild->SetRankName (rankId, rankname );
632+ guild->SetRankName (rankId, rankName );
615633
616634 if (rankId == GR_GUILDMASTER) // prevent loss leader rights
617635 rights = GR_RIGHT_ALL;
@@ -624,8 +642,14 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
624642
625643void WorldSession::HandleGuildAddRankOpcode (WorldPacket& recvPacket)
626644{
627- std::string rankname;
628- recvPacket >> rankname;
645+ std::string rankName;
646+ recvPacket >> rankName;
647+
648+ if (rankName.size () > GUILD_RANK_MAX_LENGTH)
649+ {
650+ ProcessAnticheatAction (" PassiveAnticheat" , " Attempt to set guild rank name to string longer than client limit." , CHEAT_ACTION_LOG | CHEAT_ACTION_REPORT_GMS | CHEAT_ACTION_KICK);
651+ return ;
652+ }
629653
630654 Guild* guild = sGuildMgr .GetGuildById (GetPlayer ()->GetGuildId ());
631655 if (!guild)
@@ -643,7 +667,7 @@ void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
643667 if (guild->GetRanksSize () >= GUILD_RANKS_MAX_COUNT) // client not let create more 10 than ranks
644668 return ;
645669
646- guild->CreateRank (rankname , GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK);
670+ guild->CreateRank (rankName , GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK);
647671
648672 guild->Query (this );
649673 guild->Roster (); // broadcast for tab rights update
@@ -683,8 +707,12 @@ void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
683707{
684708 std::string GINFO;
685709 recvPacket >> GINFO;
710+
686711 if (GINFO.size () > GUILD_INFO_MAX_LENGTH)
712+ {
713+ ProcessAnticheatAction (" PassiveAnticheat" , " Attempt to set guild info to string longer than client limit." , CHEAT_ACTION_LOG | CHEAT_ACTION_REPORT_GMS | CHEAT_ACTION_KICK);
687714 return ;
715+ }
688716
689717 Guild* guild = sGuildMgr .GetGuildById (GetPlayer ()->GetGuildId ());
690718 if (!guild)
0 commit comments