diff --git a/src/main/java/net/server/channel/handlers/PetExcludeItemsHandler.java b/src/main/java/net/server/channel/handlers/PetExcludeItemsHandler.java index b0619ac4fe..0b0fb48c44 100644 --- a/src/main/java/net/server/channel/handlers/PetExcludeItemsHandler.java +++ b/src/main/java/net/server/channel/handlers/PetExcludeItemsHandler.java @@ -21,37 +21,43 @@ */ package net.server.channel.handlers; -import client.MapleClient; import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; import client.inventory.MaplePet; import net.AbstractMaplePacketHandler; import tools.data.input.SeekableLittleEndianAccessor; -//import tools.MaplePacketCreator; /** * @author BubblesDev * @author Ronan */ public final class PetExcludeItemsHandler extends AbstractMaplePacketHandler { - + @Override public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { final int petId = slea.readInt(); - slea.skip(4); - + slea.skip(4); // timestamp + MapleCharacter chr = c.getPlayer(); - byte petIndex = (byte)chr.getPetIndex(petId); + byte petIndex = chr.getPetIndex(petId); if (petIndex < 0) return; - + final MaplePet pet = chr.getPet(petIndex); if (pet == null) { return; } - + chr.resetExcluded(petId); byte amount = slea.readByte(); for (int i = 0; i < amount; i++) { - chr.addExcluded(petId, slea.readInt()); + int itemId = slea.readInt(); + if (itemId >= 0) { + chr.addExcluded(petId, itemId); + } else { + AutobanFactory.PACKET_EDIT.alert(chr, "negative item id value in PetExcludeItemsHandler (" + itemId + ")"); + return; + } } chr.commitExcludedItems(); }