File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -340,6 +340,9 @@ static void tradeConfirmCancel(CNSocket* sock, CNPacketData* data) {
340340static void tradeRegisterItem (CNSocket* sock, CNPacketData* data) {
341341 sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER * pacdat = (sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER *)data->buf ;
342342
343+ if (pacdat->Item .iInvenNum < 0 || pacdat->Item .iInvenNum >= AINVEN_COUNT )
344+ return ; // inventory bounds check
345+
343346 if (pacdat->Item .iSlotNum < 0 || pacdat->Item .iSlotNum > 4 )
344347 return ; // sanity check, there are only 5 trade slots
345348
@@ -353,7 +356,13 @@ static void tradeRegisterItem(CNSocket* sock, CNPacketData* data) {
353356 return ;
354357
355358 Player* plr = PlayerManager::getPlayer (sock);
359+ if (!plr->isTrading )
360+ return ;
361+
356362 Player* plr2 = PlayerManager::getPlayer (otherSock);
363+ if (!plr2->isTrading )
364+ return ;
365+
357366 plr->Trade [pacdat->Item .iSlotNum ] = pacdat->Item ;
358367 plr->isTradeConfirm = false ;
359368 plr2->isTradeConfirm = false ;
@@ -397,7 +406,13 @@ static void tradeUnregisterItem(CNSocket* sock, CNPacketData* data) {
397406 return ;
398407
399408 Player* plr = PlayerManager::getPlayer (sock);
409+ if (!plr->isTrading )
410+ return ;
411+
400412 Player* plr2 = PlayerManager::getPlayer (otherSock);
413+ if (!plr2->isTrading )
414+ return ;
415+
401416 plr->isTradeConfirm = false ;
402417 plr2->isTradeConfirm = false ;
403418
You can’t perform that action at this time.
0 commit comments