diff options
author | ai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2010-12-29 01:55:05 +0000 |
---|---|---|
committer | ai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2010-12-29 01:55:05 +0000 |
commit | b5633db9744bff512eef665054a2622780a7ab6c (patch) | |
tree | ed32034ecfcdc3d7f69a39a152738222c11f19aa /src | |
parent | 296cc8b832aeed7932327017c4489874725f82f1 (diff) | |
download | hercules-b5633db9744bff512eef665054a2622780a7ab6c.tar.gz hercules-b5633db9744bff512eef665054a2622780a7ab6c.tar.bz2 hercules-b5633db9744bff512eef665054a2622780a7ab6c.tar.xz hercules-b5633db9744bff512eef665054a2622780a7ab6c.zip |
* Fixed char-server making assumptions about RFIFO data length in character deletion packet (since r10909).
* 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).
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14637 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-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 |
4 files changed, 4 insertions, 8 deletions
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; } |