summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-12-29 01:55:05 +0000
committerai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-12-29 01:55:05 +0000
commitb5633db9744bff512eef665054a2622780a7ab6c (patch)
treeed32034ecfcdc3d7f69a39a152738222c11f19aa /src
parent296cc8b832aeed7932327017c4489874725f82f1 (diff)
downloadhercules-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.c2
-rw-r--r--src/char_sql/char.c2
-rw-r--r--src/login/admin.c2
-rw-r--r--src/login/login.c6
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;
}