From 8293c71a4c88779e5412afa5ff29b8ff0b7a3fca Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Thu, 27 Sep 2012 05:26:02 +0200 Subject: [PATCH] Make sure the packet IDs are actually valid. --- .../protocol/injector/PacketFilterManager.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java index f86723f3..05fcee54 100644 --- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java +++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java @@ -180,10 +180,12 @@ public final class PacketFilterManager implements ProtocolManager { if (hasSending || hasReceiving) { // Add listeners and hooks if (hasSending) { + verifyWhitelist(listener, sending); sendingListeners.addListener(listener, sending); enablePacketFilters(ConnectionSide.SERVER_SIDE, sending.getWhitelist()); } if (hasReceiving) { + verifyWhitelist(listener, receiving); recievedListeners.addListener(listener, receiving); enablePacketFilters(ConnectionSide.CLIENT_SIDE, receiving.getWhitelist()); @@ -196,6 +198,20 @@ public final class PacketFilterManager implements ProtocolManager { } } + /** + * Determine if the packet IDs in a whitelist is valid. + * @param whitelist - whitelist of packet IDs. + */ + private void verifyWhitelist(PacketListener listener, ListeningWhitelist whitelist) { + for (Integer id : whitelist.getWhitelist()) { + if (id >= 256 || id < 0) { + throw new IllegalArgumentException(String.format("Invalid packet id %s in listener %s.", + id, PacketAdapter.getPluginName(listener)) + ); + } + } + } + /** * Determine if a listener is valid or not. * @param listener - listener to check.