summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-04-16 13:46:55 -0700
committerBen Longbons <b.r.longbons@gmail.com>2014-04-16 13:46:55 -0700
commita8ec74c0aaccf90920e33c8cfa0088359c853cfa (patch)
tree6bf11326d0dcf50b7dcc870bc6b9ea580d82bc5f
parentf7e6cb9d26dded3f33e8da18a7b16a7e64cefd5b (diff)
downloadtmwa-a8ec74c0aaccf90920e33c8cfa0088359c853cfa.tar.gz
tmwa-a8ec74c0aaccf90920e33c8cfa0088359c853cfa.tar.bz2
tmwa-a8ec74c0aaccf90920e33c8cfa0088359c853cfa.tar.xz
tmwa-a8ec74c0aaccf90920e33c8cfa0088359c853cfa.zip
Fix array out-of-bounds in trades
-rw-r--r--src/map/trade.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/map/trade.cpp b/src/map/trade.cpp
index f358d90..c877d00 100644
--- a/src/map/trade.cpp
+++ b/src/map/trade.cpp
@@ -260,8 +260,11 @@ void trade_tradeok(dumb_ptr<map_session_data> sd)
for (trade_i = 0; trade_i < TRADE_MAX; trade_i++)
{
+ int index = sd->deal_item_index[trade_i];
+ if (index < 2 || index >= MAX_INVENTORY + 2)
+ continue;
if (sd->deal_item_amount[trade_i] >
- sd->status.inventory[sd->deal_item_index[trade_i] - 2].amount
+ sd->status.inventory[index - 2].amount
|| sd->deal_item_amount[trade_i] < 0)
{
trade_tradecancel(sd);