[8445] Fixed redundant calculation of v and s on every login Author: arrai

The SRP-6 specifications clearly say, that v and s are only to be
    calculated on registering a user and changing his password; calculating
    them on every login is plain waste.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-09-02 16:22:32 -05:00
parent 0c0a7b6b0e
commit 790c5348a3
7 changed files with 47 additions and 60 deletions
+2 -1
View File
@@ -145,7 +145,8 @@ AccountOpResult AccountMgr::ChangePassword(uint32 accid, std::string new_passwd)
normalizeString(new_passwd);
loginDatabase.escape_string(new_passwd);
if(!loginDatabase.PExecute("UPDATE account SET sha_pass_hash=SHA1(CONCAT(username,':','%s')) WHERE id='%d'", new_passwd.c_str(), accid))
// also reset s and v to force update at next realmd login
if(!loginDatabase.PExecute("UPDATE account SET v='0', s='0', sha_pass_hash=SHA1("_CONCAT3_("username","':'","'%s'")") WHERE id='%d'", new_passwd.c_str(), accid))
return AOR_DB_INTERNAL_ERROR; // unexpected error
return AOR_OK;