diff options
author | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-08-31 10:02:36 +0000 |
---|---|---|
committer | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-08-31 10:02:36 +0000 |
commit | 60f60de8aefeebd1de0bf6c940558902226d7747 (patch) | |
tree | ed3a5b3f9f721d559d29f872073bc293a66a99d0 /src/account-server/accounthandler.cpp | |
parent | e681c0024c1db3f93c501a0a9600371440986674 (diff) | |
download | manaserv-60f60de8aefeebd1de0bf6c940558902226d7747.tar.gz manaserv-60f60de8aefeebd1de0bf6c940558902226d7747.tar.bz2 manaserv-60f60de8aefeebd1de0bf6c940558902226d7747.tar.xz manaserv-60f60de8aefeebd1de0bf6c940558902226d7747.zip |
Plugged several account leaks on error. Prevented banned players from logging in.
Diffstat (limited to 'src/account-server/accounthandler.cpp')
-rw-r--r-- | src/account-server/accounthandler.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/account-server/accounthandler.cpp b/src/account-server/accounthandler.cpp index 8c69b066..e7fc2ceb 100644 --- a/src/account-server/accounthandler.cpp +++ b/src/account-server/accounthandler.cpp @@ -180,7 +180,7 @@ AccountHandler::handleLoginMessage(AccountClient &computer, MessageIn &msg) return; } - unsigned long clientVersion = msg.readLong(); + int clientVersion = msg.readLong(); if (clientVersion < config.getValue("clientVersion", 0)) { @@ -213,6 +213,15 @@ AccountHandler::handleLoginMessage(AccountClient &computer, MessageIn &msg) { reply.writeByte(ERRMSG_INVALID_ARGUMENT); computer.send(reply); + delete acc; + return; + } + + if (acc->getLevel() == AL_BANNED) + { + reply.writeByte(LOGIN_BANNED); + computer.send(reply); + delete acc; return; } @@ -231,7 +240,6 @@ AccountHandler::handleLoginMessage(AccountClient &computer, MessageIn &msg) { sendCharacterData(computer, i, *chars[i]); } - return; } void @@ -320,7 +328,7 @@ AccountHandler::handleRegisterMessage(AccountClient &computer, MessageIn &msg) reply.writeByte(ERRMSG_INVALID_ARGUMENT); } // Check whether the account already exists. - else if (storage->getAccount(username)) + else if (storage->doesUserNameExist(username)) { reply.writeByte(REGISTER_EXISTS_USERNAME); } @@ -379,6 +387,7 @@ AccountHandler::handleUnregisterMessage(AccountClient &computer, { reply.writeByte(ERRMSG_INVALID_ARGUMENT); computer.send(reply); + delete acc; return; } |