summaryrefslogtreecommitdiff
path: root/src/char/pincode.c
diff options
context:
space:
mode:
authormalufett <malufett.eat.my.binaries@gmail.com>2013-03-30 16:50:02 +0800
committermalufett <malufett.eat.my.binaries@gmail.com>2013-03-30 16:50:02 +0800
commite66463494c02b61b38dd256827f796640acfce6d (patch)
tree7107650922bbec4ec2550a18cac52dd0e51c9c4e /src/char/pincode.c
parenta89d501fc60b12a997a262429cb4515af9dad69e (diff)
downloadhercules-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.c22
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