summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgepard1984 <gepard1984@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-01-25 20:35:49 +0000
committergepard1984 <gepard1984@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-01-25 20:35:49 +0000
commit35712069f3401965c6e26233d01a1a893e0ca326 (patch)
tree07283908ef6fa57eb330572bce10f7ee4f20638c
parent996e110eed6376fca158fb0136c55aea5ac819be (diff)
downloadhercules-35712069f3401965c6e26233d01a1a893e0ca326.tar.gz
hercules-35712069f3401965c6e26233d01a1a893e0ca326.tar.bz2
hercules-35712069f3401965c6e26233d01a1a893e0ca326.tar.xz
hercules-35712069f3401965c6e26233d01a1a893e0ca326.zip
* Fixed zeny duplication exploit in mail system, introduced in r15310.
* Added proper mail zeny loss prevention (bugreport:2919, follow-up to r15310). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15520 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/clif.c5
-rw-r--r--src/map/mail.c3
2 files changed, 5 insertions, 3 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index e688ac467..b2cc2881a 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -13687,8 +13687,11 @@ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
if( sd->mail.inbox.msg[i].zeny < 1 && (sd->mail.inbox.msg[i].item.nameid < 1 || sd->mail.inbox.msg[i].item.amount < 1) )
return;
- if( ( sd->mail.inbox.msg[i].zeny + sd->mail.inbox.msg[i].zeny ) > MAX_ZENY )
+ if( sd->mail.inbox.msg[i].zeny + sd->status.zeny > MAX_ZENY )
+ {
+ clif_Mail_getattachment(fd, 1);
return;
+ }
if( sd->mail.inbox.msg[i].item.nameid > 0 )
{
diff --git a/src/map/mail.c b/src/map/mail.c
index bb1063fbf..249f93abc 100644
--- a/src/map/mail.c
+++ b/src/map/mail.c
@@ -46,8 +46,7 @@ int mail_removeitem(struct map_session_data *sd, short flag)
int mail_removezeny(struct map_session_data *sd, short flag)
{
nullpo_ret(sd);
- if( ( sd->status.zeny + sd->mail.zeny ) > MAX_ZENY )
- return 1;
+
if (flag && sd->mail.zeny > 0)
{ //Zeny send
log_zeny(sd, LOG_TYPE_MAIL, sd, -sd->mail.zeny);