diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-04-30 19:42:13 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-04-30 19:42:13 +0200 |
commit | e0746e49b3194fc26137cf93d140a2d2521668ee (patch) | |
tree | 49258b4dd65c0b53ee8b344e7c5b0cc936d253e4 /src | |
parent | 10a1aff63f901d70069d576e5d2ad289931cc0d4 (diff) |
Core/PacketIO: Fixed wrong FlushBits usage (mostly related to string lengths)
Diffstat (limited to 'src')
11 files changed, 53 insertions, 14 deletions
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 12161867004..40af397e110 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -60,6 +60,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket << uint8(Result); _worldPacket.WriteBit(SuccessInfo.is_initialized()); _worldPacket.WriteBit(WaitInfo.is_initialized()); + _worldPacket.FlushBits(); if (SuccessInfo) { @@ -83,6 +84,8 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket.WriteBit(realm.IsInternalRealm); _worldPacket.WriteBits(realm.RealmNameActual.length(), 8); _worldPacket.WriteBits(realm.RealmNameNormalized.length(), 8); + _worldPacket.FlushBits(); + _worldPacket.WriteString(realm.RealmNameActual); _worldPacket.WriteString(realm.RealmNameNormalized); } @@ -111,6 +114,8 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket.WriteBits(templat.Name.length(), 7); _worldPacket.WriteBits(templat.Description.length(), 10); + _worldPacket.FlushBits(); + _worldPacket.WriteString(templat.Name); _worldPacket.WriteString(templat.Description); } @@ -120,6 +125,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket.WriteBit(SuccessInfo->NumPlayersHorde.is_initialized()); _worldPacket.WriteBit(SuccessInfo->NumPlayersAlliance.is_initialized()); _worldPacket.WriteBit(SuccessInfo->IsVeteranTrial); + _worldPacket.FlushBits(); if (SuccessInfo->NumPlayersHorde) _worldPacket << uint16(*SuccessInfo->NumPlayersHorde); @@ -132,9 +138,9 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() { _worldPacket << uint32(WaitInfo->WaitCount); _worldPacket.WriteBit(WaitInfo->HasFCM); + _worldPacket.FlushBits(); } - _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index d3b3050216c..a48639f1b03 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -154,6 +154,8 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write() _worldPacket.WriteBit(charInfo.FirstLogin); _worldPacket.WriteBit(charInfo.BoostInProgress); _worldPacket.WriteBits(charInfo.unkWod61x, 5); + _worldPacket.FlushBits(); + _worldPacket.WriteString(charInfo.Name); } @@ -215,11 +217,13 @@ WorldPacket const* WorldPackets::Character::CharacterRenameResult::Write() _worldPacket << uint8(Result); _worldPacket.WriteBit(Guid.is_initialized()); _worldPacket.WriteBits(Name.length(), 6); + _worldPacket.FlushBits(); if (Guid) _worldPacket << *Guid; _worldPacket.WriteString(Name); + return &_worldPacket; } @@ -305,19 +309,21 @@ WorldPacket const* WorldPackets::Character::GenerateRandomCharacterNameResult::W { _worldPacket.WriteBit(Success); _worldPacket.WriteBits(Name.length(), 6); + _worldPacket.FlushBits(); + _worldPacket.WriteString(Name); + return &_worldPacket; } void WorldPackets::Character::ReorderCharacters::Read() { uint32 count = std::min<uint32>(_worldPacket.ReadBits(9), sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM)); - while (count--) + Entries.resize(count); + for (ReorderInfo& reorderInfo : Entries) { - ReorderInfo reorderInfo; _worldPacket >> reorderInfo.PlayerGUID; _worldPacket >> reorderInfo.NewPosition; - Entries.emplace_back(reorderInfo); } } diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index de4194db023..44df88257ab 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -165,6 +165,8 @@ WorldPacket const* WorldPackets::Chat::Chat::Write() _worldPacket.WriteBits(_ChatFlags, 11); _worldPacket.WriteBit(HideChatLog); _worldPacket.WriteBit(FakeSenderName); + _worldPacket.FlushBits(); + _worldPacket.WriteString(SenderName); _worldPacket.WriteString(TargetName); _worldPacket.WriteString(Prefix); @@ -203,13 +205,18 @@ WorldPacket const* WorldPackets::Chat::STextEmote::Write() WorldPacket const* WorldPackets::Chat::PrintNotification::Write() { _worldPacket.WriteBits(NotifyText.size(), 12); + _worldPacket.FlushBits(); + _worldPacket.WriteString(NotifyText); + return &_worldPacket; } WorldPacket const* WorldPackets::Chat::ChatPlayerNotfound::Write() { _worldPacket.WriteBits(Name.length(), 9); + _worldPacket.FlushBits(); + _worldPacket.WriteString(Name); return &_worldPacket; diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp index 0dc948f5170..3fe30d2b8e7 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp +++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp @@ -40,9 +40,10 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write() _worldPacket.WriteBits(equipSet->SetName.length(), 8); _worldPacket.WriteBits(equipSet->SetIcon.length(), 9); + _worldPacket.FlushBits(); + _worldPacket.WriteString(equipSet->SetName); _worldPacket.WriteString(equipSet->SetIcon); - _worldPacket.FlushBits(); } return &_worldPacket; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index d0383a82160..1e361b3b7f6 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -30,6 +30,7 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write() { _worldPacket << GuildGuid; _worldPacket.WriteBit(Info.is_initialized()); + _worldPacket.FlushBits(); if (Info) { @@ -48,13 +49,16 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write() _worldPacket << uint32(rank.RankOrder); _worldPacket.WriteBits(rank.RankName.size(), 7); + _worldPacket.FlushBits(); + _worldPacket.WriteString(rank.RankName); } _worldPacket.WriteBits(Info->GuildName.size(), 7); + _worldPacket.FlushBits(); + _worldPacket.WriteString(Info->GuildName); } - _worldPacket.FlushBits(); return &_worldPacket; } @@ -69,7 +73,6 @@ WorldPacket const* WorldPackets::Guild::GuildRoster::Write() for (GuildRosterMemberData const& member : MemberData) _worldPacket << member; - _worldPacket.ResetBitPos(); _worldPacket.WriteBits(WelcomeText.length(), 10); _worldPacket.WriteBits(InfoText.length(), 10); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index 2325c5efac0..4322ef3458b 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -176,8 +176,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa data << uint8(lookupData.Level); data.WriteString(lookupData.Name); - data.FlushBits(); - return data; } @@ -210,6 +208,8 @@ WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write() _worldPacket << Info.ID; _worldPacket << Info.NextPageID; _worldPacket.WriteBits(Info.Text.length(), 12); + _worldPacket.FlushBits(); + _worldPacket.WriteString(Info.Text); } @@ -290,6 +290,7 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write() { _worldPacket << GameObjectID; _worldPacket.WriteBit(Allow); + _worldPacket.FlushBits(); if (Allow) { diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 5a5320a4e2f..ad4001899fe 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -149,10 +149,12 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << questObjective.UnkFloat; _worldPacket << int32(questObjective.VisualEffects.size()); - for (auto& visualEffect : questObjective.VisualEffects) + for (int32 visualEffect : questObjective.VisualEffects) _worldPacket << visualEffect; _worldPacket.WriteBits(questObjective.Description.size(), 8); + _worldPacket.FlushBits(); + _worldPacket.WriteString(questObjective.Description); } @@ -165,6 +167,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket.WriteBits(Info.PortraitTurnInText.size(), 10); _worldPacket.WriteBits(Info.PortraitTurnInName.size(), 8); _worldPacket.WriteBits(Info.QuestCompletionLog.size(), 11); + _worldPacket.FlushBits(); _worldPacket.WriteString(Info.LogTitle); _worldPacket.WriteString(Info.LogDescription); @@ -277,6 +280,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write() _worldPacket.WriteBits(PortraitGiverName.size(), 8); _worldPacket.WriteBits(PortraitGiverText.size(), 10); _worldPacket.WriteBits(PortraitTurnInName.size(), 8); + _worldPacket.FlushBits(); _worldPacket.WriteString(QuestTitle); _worldPacket.WriteString(RewardText); @@ -362,6 +366,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write() _worldPacket.WriteBit(DisplayPopup); _worldPacket.WriteBit(StartCheat); _worldPacket.WriteBit(AutoLaunched); + _worldPacket.FlushBits(); _worldPacket.WriteString(QuestTitle); _worldPacket.WriteString(DescriptionText); @@ -406,6 +411,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write() _worldPacket.WriteBits(QuestTitle.size(), 9); _worldPacket.WriteBits(CompletionText.size(), 12); + _worldPacket.FlushBits(); _worldPacket.WriteString(QuestTitle); _worldPacket.WriteString(CompletionText); @@ -477,6 +483,8 @@ WorldPacket const* WorldPackets::Quest::QuestConfirmAcceptResponse::Write() _worldPacket << InitiatedBy; _worldPacket.WriteBits(QuestTitle.size(), 10); + _worldPacket.FlushBits(); + _worldPacket.WriteString(QuestTitle); return &_worldPacket; diff --git a/src/server/game/Server/Packets/ReferAFriendPackets.cpp b/src/server/game/Server/Packets/ReferAFriendPackets.cpp index 0f3211936f6..8bc017223f8 100644 --- a/src/server/game/Server/Packets/ReferAFriendPackets.cpp +++ b/src/server/game/Server/Packets/ReferAFriendPackets.cpp @@ -30,6 +30,7 @@ void WorldPackets::RaF::GrantLevel::Read() WorldPacket const* WorldPackets::RaF::ProposeLevelGrant::Write() { _worldPacket << Sender; + return &_worldPacket; } @@ -39,6 +40,8 @@ WorldPacket const* WorldPackets::RaF::ReferAFriendFailure::Write() // Client uses this string only if Reason == ERR_REFER_A_FRIEND_NOT_IN_GROUP || Reason == ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S // but always reads it from packet _worldPacket.WriteBits(Str.length(), 6); + _worldPacket.FlushBits(); _worldPacket.WriteString(Str); + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 365dc742e85..b03994aebab 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -121,6 +121,8 @@ WorldPacket const* WorldPackets::System::SetTimeZoneInformation::Write() { _worldPacket.WriteBits(ServerTimeTZ.length(), 7); _worldPacket.WriteBits(GameTimeTZ.length(), 7); + _worldPacket.FlushBits(); + _worldPacket.WriteString(ServerTimeTZ); _worldPacket.WriteString(GameTimeTZ); diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 80a6dad3bd2..cdbeea53e32 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -70,6 +70,7 @@ WorldPacket const* WorldPackets::Ticket::GMTicketGetTicketResponse::Write() { _worldPacket << Result; _worldPacket.WriteBit(Info.is_initialized()); + _worldPacket.FlushBits(); if (Info) { @@ -84,12 +85,12 @@ WorldPacket const* WorldPackets::Ticket::GMTicketGetTicketResponse::Write() _worldPacket.WriteBits(Info->TicketDescription.size(), 11); _worldPacket.WriteBits(Info->WaitTimeOverrideMessage.size(), 10); + _worldPacket.FlushBits(); _worldPacket.WriteString(Info->TicketDescription); _worldPacket.WriteString(Info->WaitTimeOverrideMessage); } - _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp index 99ce0805e8b..632aeba0e12 100644 --- a/src/server/game/Server/Packets/WhoPackets.cpp +++ b/src/server/game/Server/Packets/WhoPackets.cpp @@ -25,9 +25,10 @@ void WorldPackets::Who::WhoIsRequest::Read() WorldPacket const* WorldPackets::Who::WhoIsResponse::Write() { _worldPacket.WriteBits(AccountName.length(), 11); - _worldPacket.WriteString(AccountName); _worldPacket.FlushBits(); + _worldPacket.WriteString(AccountName); + return &_worldPacket; } @@ -102,10 +103,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Who::WhoEntry const& entr data.WriteBits(entry.GuildName.length(), 7); data.WriteBit(entry.IsGM); - data.WriteString(entry.GuildName); - data.FlushBits(); + data.WriteString(entry.GuildName); + return data; } |