diff options
author | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-09-21 05:22:13 +0000 |
---|---|---|
committer | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-09-21 05:22:13 +0000 |
commit | 8e2d7056fb461b04d20c868ffeed73468c6e1f3e (patch) | |
tree | f58c7d8b32d4ba5fcaa38f08fd5e7b03e88f499b /src/login_sql | |
parent | 1285deb746735dd189c859b2090b580fddc2672e (diff) | |
download | hercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.tar.gz hercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.tar.bz2 hercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.tar.xz hercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.zip |
* Makefile deleting .svn in save folder.
* Limited the number of packets parsed per cycle to 3. (packet spammers create less lag)
* Fixed sql login throwing an out-of-place debug message and escaping too much of the name string when creating a new login with _M/F.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11253 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/login_sql')
-rw-r--r-- | src/login_sql/login.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/login_sql/login.c b/src/login_sql/login.c index d3200893b..d1b06547d 100644 --- a/src/login_sql/login.c +++ b/src/login_sql/login.c @@ -411,6 +411,7 @@ int mmo_auth_new(struct mmo_account* account, char sex) unsigned int tick = gettick(); char md5buf[32+1]; SqlStmt* stmt; + int result = 0; //Account Registration Flood Protection by [Kevin] if( DIFF_TICK(tick, new_reg_tick) < 0 && num_regs >= allowed_regs ) @@ -421,17 +422,19 @@ int mmo_auth_new(struct mmo_account* account, char sex) // check if the account doesn't exist already stmt = SqlStmt_Malloc(sql_handle); - if ( SQL_SUCCESS != SqlStmt_Prepare(stmt, "SELECT `%s` FROM `%s` WHERE `userid` = ?", login_db_userid, login_db) - || SQL_SUCCESS != SqlStmt_BindParam(stmt, 0, SQLDT_STRING, account->userid, strnlen(account->userid, NAME_LENGTH)) - || SQL_SUCCESS != SqlStmt_Execute(stmt) - || SqlStmt_NumRows(stmt) > 0 ) + if( SQL_SUCCESS != SqlStmt_Prepare(stmt, "SELECT `%s` FROM `%s` WHERE `userid` = ?", login_db_userid, login_db) + || SQL_SUCCESS != SqlStmt_BindParam(stmt, 0, SQLDT_STRING, account->userid, strnlen(account->userid, NAME_LENGTH)) + || SQL_SUCCESS != SqlStmt_Execute(stmt) ) { SqlStmt_ShowDebug(stmt); - SqlStmt_Free(stmt); - return 1; // incorrect user/pass + result = 1;// error } + else if( SqlStmt_NumRows(stmt) > 0 ) + result = 1;// incorrect user/pass SqlStmt_Free(stmt); - + if( result ) + return result;// error or incorrect user/pass + // insert new entry into db //TODO: error checking stmt = SqlStmt_Malloc(sql_handle); @@ -515,8 +518,12 @@ int mmo_auth(struct mmo_account* account, int fd) account->userid[len-2] == '_' && memchr("FfMm", (unsigned char)account->userid[len-1], 4) ) // _M/_F suffix { int result; - account->userid[len-2] = '\0';// terminate the name. - result = mmo_auth_new(account, account->userid[len-1]); + char sex; + + len -= 2; + account->userid[len] = '\0';// nul-terminate the name. + sex = account->userid[len+1]; + result = mmo_auth_new(account, sex); if( result ) return result;// Failed to make account. [Skotlex]. } |