From 482782d74c61e226ed1ce81700708244565291f5 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 25 Jun 2015 23:58:16 +0300 Subject: Add missing checks into net directory. --- src/net/ea/inventoryitem.h | 2 ++ src/net/eathena/auctionhandler.cpp | 2 ++ src/net/eathena/beinghandler.cpp | 33 ++------------------------------- src/net/eathena/beinghandler.h | 6 +----- src/net/eathena/buyingstorehandler.cpp | 2 +- src/net/eathena/inventoryhandler.cpp | 4 ++++ src/net/tmwa/beinghandler.cpp | 6 ++++++ src/net/tmwa/beinghandler.h | 2 +- 8 files changed, 19 insertions(+), 38 deletions(-) diff --git a/src/net/ea/inventoryitem.h b/src/net/ea/inventoryitem.h index dd6f64b10..b318b2f23 100644 --- a/src/net/ea/inventoryitem.h +++ b/src/net/ea/inventoryitem.h @@ -79,6 +79,8 @@ class InventoryItem final favorite(favorite0), equip(equip0) { + if (!cards0) + return; for (int f = 0; f < 4; f ++) cards[f] = cards0[f]; } diff --git a/src/net/eathena/auctionhandler.cpp b/src/net/eathena/auctionhandler.cpp index 586e276b8..7522ec491 100644 --- a/src/net/eathena/auctionhandler.cpp +++ b/src/net/eathena/auctionhandler.cpp @@ -139,6 +139,8 @@ void AuctionHandler::cancelReg() const void AuctionHandler::setItem(const Item *const item, const int amount) const { + if (!item) + return; createOutPacket(CMSG_AUCTION_SET_ITEM); outMsg.writeInt16(static_cast( item->getInvIndex() + INVENTORY_OFFSET), "index"); diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp index 10161d922..26e78cd84 100644 --- a/src/net/eathena/beinghandler.cpp +++ b/src/net/eathena/beinghandler.cpp @@ -479,6 +479,8 @@ Being *BeingHandler::createBeing2(Net::MessageIn &msg, void BeingHandler::undress(Being *const being) const { + if (!being) + return; being->setSprite(SPRITE_WEAPON, 0); being->setSprite(SPRITE_HEAD_BOTTOM, 0); being->setSprite(SPRITE_CLOTHES_COLOR, 0); @@ -1507,37 +1509,6 @@ void BeingHandler::processBeingSoundEffect(Net::MessageIn &msg) msg.readInt32("source being id"); } -void BeingHandler::applyPlayerAction(Net::MessageIn &msg, - Being *const being, - const uint8_t type) -{ - switch (type) - { - case 0: - being->setAction(BeingAction::STAND, 0); - localPlayer->imitateAction(being, BeingAction::STAND); - break; - - case 1: - if (being->getCurrentAction() != BeingAction::DEAD) - { - being->setAction(BeingAction::DEAD, 0); - being->recalcSpritesOrder(); - } - break; - - case 2: - being->setAction(BeingAction::SIT, 0); - localPlayer->imitateAction(being, BeingAction::SIT); - break; - - default: - // need set stand state? - UNIMPLIMENTEDPACKET; - break; - } -} - void BeingHandler::viewPlayerEquipment(const Being *const being) { if (!being) diff --git a/src/net/eathena/beinghandler.h b/src/net/eathena/beinghandler.h index ba8cf5ce7..cb8707218 100644 --- a/src/net/eathena/beinghandler.h +++ b/src/net/eathena/beinghandler.h @@ -86,7 +86,7 @@ class BeingHandler final : public MessageHandler, public Ea::BeingHandler Being *const dstBeing, const uint8_t type, const int id, - const int id2); + const int id2) A_NONNULL(2); static void processBeingSpecialEffect(Net::MessageIn &msg); @@ -94,10 +94,6 @@ class BeingHandler final : public MessageHandler, public Ea::BeingHandler static void processBeingSoundEffect(Net::MessageIn &msg); - static void applyPlayerAction(Net::MessageIn &msg, - Being *const being, - const uint8_t type); - void viewPlayerEquipment(const Being *const being); static void processSkillGroundNoDamage(Net::MessageIn &msg); diff --git a/src/net/eathena/buyingstorehandler.cpp b/src/net/eathena/buyingstorehandler.cpp index 9a9bfe728..f317cd712 100644 --- a/src/net/eathena/buyingstorehandler.cpp +++ b/src/net/eathena/buyingstorehandler.cpp @@ -327,7 +327,7 @@ void BuyingStoreHandler::sell(const Being *const being, const Item *const item, const int amount) const { - if (!being) + if (!being || !item) return; createOutPacket(CMSG_BUYINGSTORE_SELL); diff --git a/src/net/eathena/inventoryhandler.cpp b/src/net/eathena/inventoryhandler.cpp index 8406575bd..0e90235f6 100644 --- a/src/net/eathena/inventoryhandler.cpp +++ b/src/net/eathena/inventoryhandler.cpp @@ -406,6 +406,8 @@ void InventoryHandler::insertCard(const int cardIndex, void InventoryHandler::favoriteItem(const Item *const item, const bool favorite) const { + if (!item) + return; createOutPacket(CMSG_PLAYER_FAVORITE_ITEM); outMsg.writeInt16(static_cast(item->getInvIndex() + INVENTORY_OFFSET), @@ -802,6 +804,8 @@ void InventoryHandler::processPlayerInsertCard(Net::MessageIn &msg) void InventoryHandler::selectEgg(const Item *const item) const { + if (!item) + return; createOutPacket(CMSG_PET_SELECT_EGG); outMsg.writeInt16(static_cast( item->getInvIndex() + INVENTORY_OFFSET), "index"); diff --git a/src/net/tmwa/beinghandler.cpp b/src/net/tmwa/beinghandler.cpp index 28c91fd28..8092a519f 100644 --- a/src/net/tmwa/beinghandler.cpp +++ b/src/net/tmwa/beinghandler.cpp @@ -238,6 +238,8 @@ void BeingHandler::handleMessage(Net::MessageIn &msg) void BeingHandler::undress(Being *const being) const { + if (!being) + return; being->setSprite(SPRITE_WEAPON, 0); being->setSprite(SPRITE_HEAD_BOTTOM, 0); being->setSprite(SPRITE_CLOTHES_COLOR, 0); @@ -1355,6 +1357,8 @@ void BeingHandler::processBeingChangeDirection(Net::MessageIn &msg) void BeingHandler::setServerGender(Being *const being, const uint8_t gender) { + if (!being) + return; switch (gender) { case 2: @@ -1376,6 +1380,8 @@ void BeingHandler::applyPlayerAction(Net::MessageIn &msg, Being *const being, const uint8_t type) { + if (!being) + return; switch (type) { case 0: diff --git a/src/net/tmwa/beinghandler.h b/src/net/tmwa/beinghandler.h index 7d78b5d33..1b722415d 100644 --- a/src/net/tmwa/beinghandler.h +++ b/src/net/tmwa/beinghandler.h @@ -78,7 +78,7 @@ class BeingHandler final : public MessageHandler, public Ea::BeingHandler Being *const dstBeing, const uint8_t type, const int id, - const int id2); + const int id2) A_NONNULL(2); static void processPlaterStatusChange(Net::MessageIn &msg); -- cgit v1.2.3-60-g2f50