From 541f74494e4d9fa8a0f052af374b5167aa31c8f9 Mon Sep 17 00:00:00 2001 From: ultramage Date: Sun, 8 Mar 2009 00:10:39 +0000 Subject: [PATCH] Added several mail id checks to prevent a map server crash (bugreport:2837). git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13571 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 2 ++ src/map/clif.c | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 64a8929368..a4002a5239 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,8 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2009/03/08 + * Added several mail id checks to prevent a map server crash (bugreport:2837) 2009/03/02 * Blade Stop status no longer prevents item use and equip changing. * Against non-players, Blade Stop skill will now only activate if the attacker is at most 2 cells away (1 if barehanded). diff --git a/src/map/clif.c b/src/map/clif.c index 02d47ad0b2..b8127054ed 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -11774,6 +11774,10 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id) void clif_parse_Mail_read(int fd, struct map_session_data *sd) { + int mail_id = RFIFOL(fd,2); + + if( mail_id <= 0 ) + return; if( mail_invalid_operation(sd) ) return; @@ -11785,9 +11789,12 @@ void clif_parse_Mail_read(int fd, struct map_session_data *sd) *------------------------------------------*/ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd) { - int i, mail_id = RFIFOL(fd,2); + int mail_id = RFIFOL(fd,2); + int i; bool fail = false; + if( mail_id <= 0 ) + return; if( mail_invalid_operation(sd) ) return; @@ -11841,8 +11848,11 @@ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd) *------------------------------------------*/ void clif_parse_Mail_delete(int fd, struct map_session_data *sd) { - int i, mail_id = RFIFOL(fd,2); + int mail_id = RFIFOL(fd,2); + int i; + if( mail_id <= 0 ) + return; if( mail_invalid_operation(sd) ) return; @@ -11866,8 +11876,11 @@ void clif_parse_Mail_delete(int fd, struct map_session_data *sd) *------------------------------------------*/ void clif_parse_Mail_return(int fd, struct map_session_data *sd) { - int i, mail_id = RFIFOL(fd,2); + int mail_id = RFIFOL(fd,2); + int i; + if( mail_id <= 0 ) + return; if( mail_invalid_operation(sd) ) return;