diff options
-rw-r--r-- | Changelog-Trunk.txt | 3 | ||||
-rw-r--r-- | src/char/char.c | 2 | ||||
-rw-r--r-- | src/char_sql/char.c | 2 | ||||
-rw-r--r-- | src/login/admin.c | 2 | ||||
-rw-r--r-- | src/login/login.c | 6 |
5 files changed, 7 insertions, 8 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 0ca19ac69..97d9f8ef4 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -1,6 +1,9 @@ Date Added 2010/12/28 + * Fixed char-server making assumptions about RFIFO data length in character deletion packet (since r10909). [Ai4rei] + * Fixed login-server discarding RFIFO data, when the length is 1 byte; minimum packet size is 2 bytes (since r5027). + - Fixed login-server not skipping packet 0x2728's data on failure (since r12043). * Removed unmaintained and broken 'adduser' tool (topic:262284). [Ai4rei] 2010/12/27 * Fixed skill_can_produce_mix not checking, whether or not the produced goods can actually be stored (bugreport:4674). [Ai4rei] diff --git a/src/char/char.c b/src/char/char.c index 6dd131976..314bfcdac 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -3550,7 +3550,7 @@ int parse_char(int fd) ShowInfo(CL_RED"Request Char Deletion: "CL_GREEN"%d (%d)"CL_RESET"\n", sd->account_id, cid); memcpy(email, RFIFOP(fd,6), 40); - RFIFOSKIP(fd,RFIFOREST(fd)); // hack to make the other deletion packet work + RFIFOSKIP(fd,( cmd == 0x68 ) ? 46 : 56); if (e_mail_check(email) == 0) safestrncpy(email, "a@a.com", sizeof(email)); // default e-mail diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 46b645ce6..1c190c72e 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -3256,7 +3256,7 @@ int parse_char(int fd) ShowInfo(CL_RED"Request Char Deletion: "CL_GREEN"%d (%d)"CL_RESET"\n", sd->account_id, cid); memcpy(email, RFIFOP(fd,6), 40); - RFIFOSKIP(fd,RFIFOREST(fd)); // hack to make the other deletion packet work + RFIFOSKIP(fd,( cmd == 0x68) ? 46 : 56); // Check if e-mail is correct if(strcmpi(email, sd->email) && //email does not matches and diff --git a/src/login/admin.c b/src/login/admin.c index d5175dca5..1e2e851ac 100644 --- a/src/login/admin.c +++ b/src/login/admin.c @@ -852,6 +852,6 @@ int parse_admin(int fd) return 0; } } - RFIFOSKIP(fd,RFIFOREST(fd)); + return 0; } diff --git a/src/login/login.c b/src/login/login.c index 6b3a1bcaf..158ba5150 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -524,8 +524,6 @@ int parse_fromchar(int fd) break; case 0x2719: // ping request from charserver - if( RFIFOREST(fd) < 2 ) - return 0; RFIFOSKIP(fd,2); WFIFOHEAD(fd,2); @@ -733,8 +731,8 @@ int parse_fromchar(int fd) // Sending information towards the other char-servers. RFIFOW(fd,0) = 0x2729;// reusing read buffer charif_sendallwos(fd, RFIFOP(fd,0), RFIFOW(fd,2)); - RFIFOSKIP(fd,RFIFOW(fd,2)); } + RFIFOSKIP(fd,RFIFOW(fd,2)); } break; @@ -854,7 +852,6 @@ int parse_fromchar(int fd) } // switch } // while - RFIFOSKIP(fd,RFIFOREST(fd)); return 0; } @@ -1465,7 +1462,6 @@ int parse_login(int fd) } } - RFIFOSKIP(fd,RFIFOREST(fd)); return 0; } |