Add protection for out-of-bounds inventory management

This commit is contained in:
Camotoy 2021-03-08 18:13:26 -05:00
parent ad4196f5a0
commit ffae69471d
No known key found for this signature in database
GPG key ID: 7EEFB66FE798081F

View file

@ -30,6 +30,7 @@ import com.nukkitx.math.vector.Vector3i;
import lombok.Getter; import lombok.Getter;
import lombok.NonNull; import lombok.NonNull;
import lombok.Setter; import lombok.Setter;
import org.geysermc.connector.GeyserConnector;
import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.network.session.GeyserSession;
import java.util.Arrays; import java.util.Arrays;
@ -86,10 +87,18 @@ public class Inventory {
} }
public GeyserItemStack getItem(int slot) { public GeyserItemStack getItem(int slot) {
if (slot > this.size) {
GeyserConnector.getInstance().getLogger().debug("Tried to get an item out of bounds! " + this.toString());
return GeyserItemStack.EMPTY;
}
return items[slot]; return items[slot];
} }
public void setItem(int slot, @NonNull GeyserItemStack newItem, GeyserSession session) { public void setItem(int slot, @NonNull GeyserItemStack newItem, GeyserSession session) {
if (slot > this.size) {
session.getConnector().getLogger().debug("Tried to set an item out of bounds! " + this.toString());
return;
}
GeyserItemStack oldItem = items[slot]; GeyserItemStack oldItem = items[slot];
updateItemNetId(oldItem, newItem, session); updateItemNetId(oldItem, newItem, session);
items[slot] = newItem; items[slot] = newItem;