summaryrefslogtreecommitdiff
path: root/src/elogin/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/elogin/parse.c')
-rw-r--r--src/elogin/parse.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/elogin/parse.c b/src/elogin/parse.c
index 73e1ab1..2eb71f5 100644
--- a/src/elogin/parse.c
+++ b/src/elogin/parse.c
@@ -185,15 +185,15 @@ enum parsefunc_rcode elogin_parse_ping_pre(int *fd __attribute__ ((unused)),
void elogin_parse_change_paassword(int fd)
{
- char actual_pass[24], new_pass[24];
+ char actual_pass[65], new_pass[65];
int status = 0;
struct mmo_account acc;
const int accountId = RFIFOL (fd, 2);
- memcpy (actual_pass, RFIFOP (fd, 6), 24);
- actual_pass[23] = '\0';
- memcpy (new_pass, RFIFOP (fd, 30), 24);
- new_pass[23] = '\0';
+ memcpy (actual_pass, RFIFOP (fd, 6), 65);
+ actual_pass[64] = '\0';
+ memcpy (new_pass, RFIFOP (fd, 30), 65);
+ new_pass[64] = '\0';
if (!login->accounts->load_num(login->accounts, &acc, accountId))
{
@@ -202,12 +202,15 @@ void elogin_parse_change_paassword(int fd)
return;
}
- if (!strcmp(actual_pass, acc.pass) || pass_ok(actual_pass, acc.pass))
+ if (!strcmp(actual_pass, acc.pass) ||
+ pass_ok(actual_pass, acc.pass) ||
+ pass_sha256(actual_pass, acc.pass))
{
// changed ok
status = 1;
// Hash password
- safestrncpy(acc.pass, MD5_saltcrypt(new_pass, make_salt()), sizeof(acc.pass));
+ //safestrncpy(acc.pass, MD5_saltcrypt(new_pass, make_salt()), sizeof(acc.pass));
+ safestrncpy(acc.pass, SHA256_CRYPT(new_pass), sizeof(acc.pass));
login->accounts->save(login->accounts, &acc);
}
else