Fix exploit for negative itemId's in PetExcludeItemsHandler
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user