pmmp / PocketMine-MP

A server software for Minecraft: Bedrock Edition in PHP
https://pmmp.io
GNU Lesser General Public License v3.0
3.27k stars 1.54k forks source link

Crash on invalid slots in InventoryTransactionPacket #5723

Closed ItzxDwi closed 1 year ago

ItzxDwi commented 1 year ago

Issue description

Steps to reproduce the issue

  1. Put arrows in offhand inventory
  2. Start shooting using a bow in survival mode

OS and versions

Crashdump, backtrace or other files


File: pmsrc/src/inventory/SimpleInventory
Line: 52
Type: RuntimeException
Backtrace:
#0 pmsrc/src/network/mcpe/InventoryManager(416): pocketmine\inventory\SimpleInventory->getItem(int 1)
#1 pmsrc/src/network/mcpe/handler/InGamePacketHandler(363): pocketmine\network\mcpe\InventoryManager->onSlotChange(object pocketmine\inventory\PlayerOffHandInventory#26307, int 1)
#2 pmsrc/vendor/pocketmine/bedrock-protocol/src/InventoryTransactionPacket(94): pocketmine\network\mcpe\handler\InGamePacketHandler->handleInventoryTransaction(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket#150197)
#3 pmsrc/src/network/mcpe/NetworkSession(433): pocketmine\network\mcpe\protocol\InventoryTransactionPacket->handle(object pocketmine\network\mcpe\handler\InGamePacketHandler#127660)
#4 pmsrc/src/network/mcpe/NetworkSession(377): pocketmine\network\mcpe\NetworkSession->handleDataPacket(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket#150197, string[136] ..."...........................Damage..............................Damage.......)
#5 pmsrc/src/network/mcpe/raklib/RakLibInterface(198): pocketmine\network\mcpe\NetworkSession->handleEncoded(string[122] .`..fRbd.e.`ad`..."..d..g.b``fcpI.MLOec@.8..#.a. .$A.\.".n'............ ..x.....)
#6 pmsrc/vendor/pocketmine/raklib-ipc/src/RakLibToUserThreadMessageReceiver(42): pocketmine\network\mcpe\raklib\RakLibInterface->onPacketReceive(int 0, string[131] ..|&..I..)..BG."<..j+Z.I@.V.Ju..Y.l.{..R.....R7.wh2.'..F5M.,...-N}.r......d...qS)
#7 pmsrc/src/network/mcpe/raklib/RakLibInterface(122): raklib\server\ipc\RakLibToUserThreadMessageReceiver->handle(object pocketmine\network\mcpe\raklib\RakLibInterface#25752)
#8 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\raklib\RakLibInterface->pocketmine\network\mcpe\raklib\{closure}()
#9 pmsrc/src/TimeTrackingSleeperHandler(58): pocketmine\snooze\SleeperHandler->processNotifications()
#10 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(82): pocketmine\TimeTrackingSleeperHandler->processNotifications()
#11 pmsrc/src/Server(1681): pocketmine\snooze\SleeperHandler->sleepUntil(float 1682580765.1625)
#12 pmsrc/src/Server(1061): pocketmine\Server->tickProcessor()
#13 pmsrc/src/PocketMine(339): pocketmine\Server->__construct(object BaseClassLoader#5, object pocketmine\utils\MainLogger#3, string[38] /data/data/com.termux/files/home/test/, string[46] /data/data/com.termux/files/home/test/plugins/)
#14 pmsrc/src/PocketMine(362): pocketmine\server()
#15 pmsrc(11): require(string[82] phar:///data/data/com.termux/files/home/test/PocketMine-MP.phar/src/PocketMine.p)```
dktapps commented 1 year ago

Related to #5667