]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Prevent interacting with items out of the hotbar (#10359)
authorLejo <Lejo_1@web.de>
Fri, 4 Sep 2020 18:50:33 +0000 (20:50 +0200)
committerGitHub <noreply@github.com>
Fri, 4 Sep 2020 18:50:33 +0000 (20:50 +0200)
src/network/serverpackethandler.cpp

index d133b4ff987c138868e16a41f0357372643eea38..fe70d376eb8ec75ef41baaddc4fd890334c37ffa 100644 (file)
@@ -636,7 +636,7 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt)
                                return;
                        from_inv_is_current_player = true;
                }
-               
+
                bool to_inv_is_current_player = false;
                if (ma->to_inv.type == InventoryLocation::PLAYER) {
                        if (ma->to_inv.name != player->getName())
@@ -869,6 +869,15 @@ void Server::handleCommand_PlayerItem(NetworkPacket* pkt)
 
        *pkt >> item;
 
+       if (item >= player->getHotbarItemcount()) {
+               actionstream << "Player: " << player->getName()
+                       << " tried to access item=" << item
+                       << " out of hotbar_itemcount="
+                       << player->getHotbarItemcount()
+                       << "; ignoring." << std::endl;
+               return;
+       }
+
        playersao->getPlayer()->setWieldIndex(item);
 }
 
@@ -984,6 +993,16 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
        v3f player_pos = playersao->getLastGoodPosition();
 
        // Update wielded item
+
+       if (item_i >= player->getHotbarItemcount()) {
+               actionstream << "Player: " << player->getName()
+                       << " tried to access item=" << item_i
+                       << " out of hotbar_itemcount="
+                       << player->getHotbarItemcount()
+                       << "; ignoring." << std::endl;
+               return;
+       }
+
        playersao->getPlayer()->setWieldIndex(item_i);
 
        // Get pointed to object (NULL if not POINTEDTYPE_OBJECT)