aboutsummaryrefslogtreecommitdiff
path: root/src/server/authserver
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-02-23 13:06:35 +0100
committerSpp <spp@jorge.gr>2012-02-23 13:06:35 +0100
commit5cff9e071640bc47688b71bb264edd8267ba77c3 (patch)
treec599d12dfb7870d7c34a07490a930b3102c3d8ac /src/server/authserver
parentf0ca875a216eaab3d213feae8ba75c07795c9304 (diff)
parent9219625243bc9f63e5a152e6cda1043cfaade201 (diff)
Merge branch 'master' into 4.x
Conflicts: sql/base/auth_database.sql src/server/authserver/Server/AuthSocket.cpp src/server/game/AI/CoreAI/CombatAI.cpp src/server/game/AuctionHouse/AuctionHouseMgr.cpp src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp src/server/game/DataStores/DBCStructure.h src/server/game/DataStores/DBCfmt.h src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Vehicle/Vehicle.cpp src/server/game/Globals/ObjectMgr.cpp src/server/game/Globals/ObjectMgr.h src/server/game/Handlers/AuctionHouseHandler.cpp src/server/game/Miscellaneous/SharedDefines.h src/server/game/Movement/MotionMaster.cpp src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp src/server/game/Quests/QuestDef.cpp src/server/game/Server/Protocol/Opcodes.cpp src/server/game/Server/WorldSocket.cpp src/server/game/Spells/Spell.cpp src/server/game/Spells/SpellEffects.cpp src/server/game/Spells/SpellInfo.cpp src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp src/server/scripts/Spells/spell_quest.cpp src/server/shared/Logging/Log.h src/server/worldserver/worldserver.conf.dist src/tools/vmap3_extractor/model.h src/tools/vmap4_extractor/CMakeLists.txt src/tools/vmap4_extractor/dbcfile.cpp src/tools/vmap4_extractor/dbcfile.h src/tools/vmap4_extractor/loadlib/loadlib.h
Diffstat (limited to 'src/server/authserver')
-rwxr-xr-xsrc/server/authserver/Server/AuthSocket.cpp18
-rwxr-xr-xsrc/server/authserver/Server/AuthSocket.h1
-rwxr-xr-xsrc/server/authserver/Server/RealmSocket.cpp2
-rwxr-xr-xsrc/server/authserver/Server/RealmSocket.h3
4 files changed, 21 insertions, 3 deletions
diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp
index e6da5eeb996..2698c3e30e1 100755
--- a/src/server/authserver/Server/AuthSocket.cpp
+++ b/src/server/authserver/Server/AuthSocket.cpp
@@ -16,6 +16,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <algorithm>
#include <openssl/md5.h>
#include "Common.h"
@@ -342,6 +343,13 @@ bool AuthSocket::_HandleLogonChallenge()
_login = (const char*)ch->I;
_build = ch->build;
+ _os = (const char*)ch->os;
+
+ if (_os.size() > 4)
+ return false;
+
+ // Restore string order as its byte order is reversed
+ std::reverse(_os.begin(), _os.end());
pkt << uint8(AUTH_LOGON_CHALLENGE);
pkt << uint8(0x00);
@@ -596,7 +604,8 @@ bool AuthSocket::_HandleLogonProof()
stmt->setString(0, K_hex);
stmt->setString(1, socket().getRemoteAddress().c_str());
stmt->setUInt32(2, GetLocaleByName(_localizationName));
- stmt->setString(3, _login);
+ stmt->setString(3, _os);
+ stmt->setString(4, _login);
LoginDatabase.Execute(stmt);
OPENSSL_free((void*)K_hex);
@@ -722,6 +731,13 @@ bool AuthSocket::_HandleReconnectChallenge()
// Reinitialize build, expansion and the account securitylevel
_build = ch->build;
+ _os = (const char*)ch->os;
+
+ if (_os.size() > 4)
+ return false;
+
+ // Restore string order as its byte order is reversed
+ std::reverse(_os.begin(), _os.end());
Field* fields = result->Fetch();
uint8 secLevel = fields[2].GetUInt8();
diff --git a/src/server/authserver/Server/AuthSocket.h b/src/server/authserver/Server/AuthSocket.h
index 116412e2315..0b04c8d015d 100755
--- a/src/server/authserver/Server/AuthSocket.h
+++ b/src/server/authserver/Server/AuthSocket.h
@@ -81,6 +81,7 @@ private:
// Since GetLocaleByName() is _NOT_ bijective, we have to store the locale as a string. Otherwise we can't differ
// between enUS and enGB, which is important for the patch system
std::string _localizationName;
+ std::string _os;
uint16 _build;
AccountTypes _accountSecurityLevel;
};
diff --git a/src/server/authserver/Server/RealmSocket.cpp b/src/server/authserver/Server/RealmSocket.cpp
index 72c36fc6646..e839457d1c9 100755
--- a/src/server/authserver/Server/RealmSocket.cpp
+++ b/src/server/authserver/Server/RealmSocket.cpp
@@ -95,7 +95,7 @@ const std::string& RealmSocket::getRemoteAddress(void) const
return _remoteAddress;
}
-const uint16 RealmSocket::getRemotePort(void) const
+uint16 RealmSocket::getRemotePort(void) const
{
return _remotePort;
}
diff --git a/src/server/authserver/Server/RealmSocket.h b/src/server/authserver/Server/RealmSocket.h
index 9682b5e4559..c03a0e3ad1e 100755
--- a/src/server/authserver/Server/RealmSocket.h
+++ b/src/server/authserver/Server/RealmSocket.h
@@ -24,6 +24,7 @@
#include <ace/SOCK_Stream.h>
#include <ace/Message_Block.h>
#include <ace/Basic_Types.h>
+#include "Common.h"
class RealmSocket : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
{
@@ -54,7 +55,7 @@ public:
const std::string& getRemoteAddress(void) const;
- const uint16 getRemotePort(void) const;
+ uint16 getRemotePort(void) const;
virtual int open(void *);