summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-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
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;
}