Make sure the packet IDs are actually valid.

This commit is contained in:
Kristian S. Stangeland 2012-09-27 05:26:02 +02:00
parent eb8abd4635
commit 8293c71a4c

View File

@ -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.