diff options
author | malufett <malufett.eat.my.binaries@gmail.com> | 2013-03-30 16:50:02 +0800 |
---|---|---|
committer | malufett <malufett.eat.my.binaries@gmail.com> | 2013-03-30 16:50:02 +0800 |
commit | e66463494c02b61b38dd256827f796640acfce6d (patch) | |
tree | 7107650922bbec4ec2550a18cac52dd0e51c9c4e /src/char/pincode.c | |
parent | a89d501fc60b12a997a262429cb4515af9dad69e (diff) | |
download | hercules-e66463494c02b61b38dd256827f796640acfce6d.tar.gz hercules-e66463494c02b61b38dd256827f796640acfce6d.tar.bz2 hercules-e66463494c02b61b38dd256827f796640acfce6d.tar.xz hercules-e66463494c02b61b38dd256827f796640acfce6d.zip |
Fixed Bug #7139
-Follow up for the Pincode Feature.
Signed-off-by: malufett <malufett.eat.my.binaries@gmail.com>
Diffstat (limited to 'src/char/pincode.c')
-rw-r--r-- | src/char/pincode.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/char/pincode.c b/src/char/pincode.c index b68c4e38a..4135c0c1c 100644 --- a/src/char/pincode.c +++ b/src/char/pincode.c @@ -28,7 +28,7 @@ void pincode_handle ( int fd, struct char_session_data* sd ) { return; } - if( strlen(sd->pincode) ){ + if( strlen(sd->pincode) == 4 ){ if( *pincode->changetime && time(NULL) > (sd->pincode_change+*pincode->changetime) ){ // User hasnt changed his PIN code for a long time pincode->sendstate( fd, sd, PINCODE_EXPIRED ); } else { // Ask user for his PIN code @@ -69,33 +69,27 @@ int pincode_compare(int fd, struct char_session_data* sd, char* pin) { void pincode_change(int fd, struct char_session_data* sd) { char oldpin[5] = "\0\0\0\0", newpin[5] = "\0\0\0\0"; - struct online_char_data* character; - strncpy(oldpin, (char*)RFIFOP(fd,6), 4+1); + strncpy(oldpin, (char*)RFIFOP(fd,6), sizeof(oldpin)); pincode->decrypt(sd->pincode_seed,oldpin); if( !pincode->compare( fd, sd, oldpin ) ) return; - strncpy(newpin, (char*)RFIFOP(fd,10), 3+1); + strncpy(newpin, (char*)RFIFOP(fd,10), sizeof(newpin)); pincode->decrypt(sd->pincode_seed,newpin); pincode->update( sd->account_id, newpin ); - if( (character = (struct online_char_data*)idb_get(online_char_db, sd->account_id)) ) - character->pincode_enable = *pincode->charselect * 2; - pincode->sendstate( fd, sd, PINCODE_OK ); + strncpy(sd->pincode, newpin, sizeof(sd->pincode)); + pincode->sendstate( fd, sd, PINCODE_ASK ); } void pincode_setnew(int fd, struct char_session_data* sd) { char newpin[5] = "\0\0\0\0"; - struct online_char_data* character; - strncpy(newpin, (char*)RFIFOP(fd,6), 4+1); + strncpy(newpin, (char*)RFIFOP(fd,6), sizeof(newpin)); pincode->decrypt(sd->pincode_seed,newpin); - pincode->update( sd->account_id, newpin ); - - pincode->sendstate( fd, sd, PINCODE_OK ); - if( (character = (struct online_char_data*)idb_get(online_char_db, sd->account_id)) ) - character->pincode_enable = *pincode->charselect * 2; + strncpy(sd->pincode, newpin, sizeof(sd->pincode)); + pincode->sendstate( fd, sd, PINCODE_ASK ); } // 0 = pin is correct |