diff options
author | Lars Müller <34514239+appgurueu@users.noreply.github.com> | 2020-08-29 17:41:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-29 16:41:03 +0100 |
commit | 3693b6871eba268ecc79b3f52d00d3cefe761131 (patch) | |
tree | 6190f0b057fd8a0259c372fb15f9643e9e546c27 /src/network | |
parent | d28f1b01707dfa15e770096a26495452513bc56f (diff) | |
download | minetest-3693b6871eba268ecc79b3f52d00d3cefe761131.tar.gz minetest-3693b6871eba268ecc79b3f52d00d3cefe761131.tar.bz2 minetest-3693b6871eba268ecc79b3f52d00d3cefe761131.zip |
Prevent players accessing inventories of other players (#10341)
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/serverpackethandler.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index dcbb114bf..abd9deff0 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -630,13 +630,19 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt) if (ma->from_inv != ma->to_inv) m_inventory_mgr->setInventoryModified(ma->to_inv); - bool from_inv_is_current_player = - (ma->from_inv.type == InventoryLocation::PLAYER) && - (ma->from_inv.name == player->getName()); - - bool to_inv_is_current_player = - (ma->to_inv.type == InventoryLocation::PLAYER) && - (ma->to_inv.name == player->getName()); + bool from_inv_is_current_player = false; + if (ma->from_inv.type == InventoryLocation::PLAYER) { + if (ma->from_inv.name != player->getName()) + 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()) + return; + to_inv_is_current_player = true; + } InventoryLocation *remote = from_inv_is_current_player ? &ma->to_inv : &ma->from_inv; |