Commit 5c199cbffd6d1aba2df85819d5255032a61d41fa

Authored by Mumfrey
1 parent d25ab603

Allow correct plugin channel name length of 20, fixes #35

src/client/java/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java
... ... @@ -7,6 +7,7 @@ package com.mumfrey.liteloader.client;
7 7  
8 8 import com.mumfrey.liteloader.client.ducks.IClientNetLoginHandler;
9 9 import com.mumfrey.liteloader.core.ClientPluginChannels;
  10 +import com.mumfrey.liteloader.core.PluginChannels;
10 11 import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException;
11 12  
12 13 import net.minecraft.client.Minecraft;
... ... @@ -89,7 +90,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
89 90 @Override
90 91 protected boolean send(String channel, PacketBuffer data, ChannelPolicy policy)
91 92 {
92   - if (channel == null || channel.length() > 16 || CHANNEL_REGISTER.equals(channel) || CHANNEL_UNREGISTER.equals(channel))
  93 + if (!PluginChannels.isValidChannelName(channel))
93 94 {
94 95 throw new RuntimeException("Invalid channel name specified");
95 96 }
... ...
src/main/java/com/mumfrey/liteloader/core/PluginChannels.java
... ... @@ -32,6 +32,12 @@ public abstract class PluginChannels<L extends CommonPluginChannelListener> impl
32 32 // reserved channel consts
33 33 protected static final String CHANNEL_REGISTER = "REGISTER";
34 34 protected static final String CHANNEL_UNREGISTER = "UNREGISTER";
  35 +
  36 + /**
  37 + * Maximum allowable length of a channel name, previously 16 but increased
  38 + * to 20 at some point.
  39 + */
  40 + private static final int MAX_CHANNEL_NAME_LENGTH = 20;
35 41  
36 42 /**
37 43 * Number of faults for a specific listener before a warning is generated
... ... @@ -180,7 +186,7 @@ public abstract class PluginChannels<L extends CommonPluginChannelListener> impl
180 186 {
181 187 for (String channel : channels)
182 188 {
183   - if (channel.length() > 16 || channel.toUpperCase().equals(CHANNEL_REGISTER) || channel.toUpperCase().equals(CHANNEL_UNREGISTER))
  189 + if (!PluginChannels.isValidChannelName(channel))
184 190 {
185 191 continue;
186 192 }
... ... @@ -194,6 +200,23 @@ public abstract class PluginChannels<L extends CommonPluginChannelListener> impl
194 200 }
195 201 }
196 202 }
  203 +
  204 + /**
  205 + * Check whether the supplied channel name is valid. Valid channel names
  206 + * must be between 1 and 20 characters long, and must not use the reserved
  207 + * channel names <tt>REGISTER</tt> and <tt>UNREGISTER</tt>
  208 + *
  209 + * @param channel channel name to validate
  210 + * @return true if the channel name is valid
  211 + */
  212 + public static boolean isValidChannelName(String channel)
  213 + {
  214 + return channel != null
  215 + && channel.length() > 0
  216 + && channel.length() <= PluginChannels.MAX_CHANNEL_NAME_LENGTH
  217 + && !channel.toUpperCase().equals(PluginChannels.CHANNEL_REGISTER)
  218 + && !channel.toUpperCase().equals(PluginChannels.CHANNEL_UNREGISTER);
  219 + }
197 220  
198 221 /**
199 222 * Policy for dispatching plugin channel packets
... ...
src/main/java/com/mumfrey/liteloader/core/ServerPluginChannels.java
... ... @@ -230,7 +230,7 @@ public class ServerPluginChannels extends PluginChannels&lt;ServerPluginChannelList
230 230 {
231 231 if (recipient == null) return false;
232 232  
233   - if (channel == null || channel.length() > 16 || CHANNEL_REGISTER.equals(channel) || CHANNEL_UNREGISTER.equals(channel))
  233 + if (!PluginChannels.isValidChannelName(channel))
234 234 {
235 235 throw new RuntimeException("Invalid channel name specified");
236 236 }
... ...