Fix checks for trade item register/unregister

This commit is contained in:
2026-05-23 14:52:50 -07:00
parent b2aa43b467
commit ecc3e7731c

View File

@@ -340,6 +340,9 @@ static void tradeConfirmCancel(CNSocket* sock, CNPacketData* data) {
static void tradeRegisterItem(CNSocket* sock, CNPacketData* data) { static void tradeRegisterItem(CNSocket* sock, CNPacketData* data) {
sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER* pacdat = (sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER*)data->buf; sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER* pacdat = (sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER*)data->buf;
if (pacdat->Item.iInvenNum < 0 || pacdat->Item.iInvenNum >= AINVEN_COUNT)
return; // inventory bounds check
if (pacdat->Item.iSlotNum < 0 || pacdat->Item.iSlotNum > 4) if (pacdat->Item.iSlotNum < 0 || pacdat->Item.iSlotNum > 4)
return; // sanity check, there are only 5 trade slots return; // sanity check, there are only 5 trade slots
@@ -353,7 +356,13 @@ static void tradeRegisterItem(CNSocket* sock, CNPacketData* data) {
return; return;
Player* plr = PlayerManager::getPlayer(sock); Player* plr = PlayerManager::getPlayer(sock);
if (!plr->isTrading)
return;
Player* plr2 = PlayerManager::getPlayer(otherSock); Player* plr2 = PlayerManager::getPlayer(otherSock);
if (!plr2->isTrading)
return;
plr->Trade[pacdat->Item.iSlotNum] = pacdat->Item; plr->Trade[pacdat->Item.iSlotNum] = pacdat->Item;
plr->isTradeConfirm = false; plr->isTradeConfirm = false;
plr2->isTradeConfirm = false; plr2->isTradeConfirm = false;
@@ -397,7 +406,13 @@ static void tradeUnregisterItem(CNSocket* sock, CNPacketData* data) {
return; return;
Player* plr = PlayerManager::getPlayer(sock); Player* plr = PlayerManager::getPlayer(sock);
if (!plr->isTrading)
return;
Player* plr2 = PlayerManager::getPlayer(otherSock); Player* plr2 = PlayerManager::getPlayer(otherSock);
if (!plr2->isTrading)
return;
plr->isTradeConfirm = false; plr->isTradeConfirm = false;
plr2->isTradeConfirm = false; plr2->isTradeConfirm = false;