From 9d1afbba578dfe7d00aeefeba344a435a7c5bf45 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Wed, 23 Apr 2014 21:37:27 +0200 Subject: [PATCH] Core/Player: Check Player race and class on login Don't allow login for Players with bad race/class combination to avoid any further crash later. --- src/server/game/Entities/Player/Player.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8dc12c2ddb..94f212e605 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -17183,6 +17183,14 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder) bytes0 |= gender << 16; // gender SetUInt32Value(UNIT_FIELD_BYTES_0, bytes0); + // check if race/class combination is valid + PlayerInfo const* info = sObjectMgr->GetPlayerInfo(getRace(), getClass()); + if (!info) + { + TC_LOG_ERROR("entities.player", "Player (GUID: %u) has wrong race/class (%u/%u), can't be loaded.", guid, getRace(), getClass()); + return false; + } + SetUInt32Value(UNIT_FIELD_LEVEL, fields[6].GetUInt8()); SetUInt32Value(PLAYER_XP, fields[7].GetUInt32());