From 8eed7ee531fead89b416e07967c6ed550d773d64 Mon Sep 17 00:00:00 2001 From: Tristan 'Natrist' Cormier Date: Thu, 30 Nov 2023 14:25:01 -0500 Subject: [PATCH] fix(Core/Channel): potential nullptr reference in Channel::SetOwner() (#17906) --- src/server/game/Chat/Channels/Channel.cpp | 30 ++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index 645e74d0c..6dbe45666 100644 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -884,23 +884,25 @@ void Channel::SetOwner(ObjectGuid guid, bool exclaim) pinfo.SetModerator(true); uint8 oldFlag = pinfo.flags; pinfo.SetOwner(true); - - Player* player = ObjectAccessor::FindPlayer(_ownerGUID); - - WorldPacket data; - - if (ShouldAnnouncePlayer(player)) - { - MakeModeChange(&data, _ownerGUID, oldFlag); - SendToAll(&data); - } - FlagsNotify(pinfo.plrPtr); - if (exclaim && ShouldAnnouncePlayer(player)) + Player* player = ObjectAccessor::FindPlayer(_ownerGUID); + if (player) { - MakeOwnerChanged(&data, _ownerGUID); - SendToAll(&data); + if (ShouldAnnouncePlayer(player)) + { + WorldPacket data; + + MakeModeChange(&data, _ownerGUID, oldFlag); + SendToAll(&data); + + if (exclaim) + { + // MakeOwnerChanged will reset the packet for us + MakeOwnerChanged(&data, _ownerGUID); + SendToAll(&data); + } + } } } }