Commit 5c199cbffd6d1aba2df85819d5255032a61d41fa
1 parent
d25ab603
Allow correct plugin channel name length of 20, fixes #35
Showing
3 changed files
with
27 additions
and
3 deletions
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<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 | } | ... | ... |