summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Greig <rgreig@apache.org>2007-04-20 12:50:54 +0000
committerRobert Greig <rgreig@apache.org>2007-04-20 12:50:54 +0000
commite835c67d8a1c40c1068a7bac89fcd0a45eb738bb (patch)
tree204413f07fa5d8e73b788b9961389a9f2e9039de /java
parent6cfd8a3db4ff30fe28d7f4909e7f1ff236ef1b8a (diff)
downloadqpid-python-e835c67d8a1c40c1068a7bac89fcd0a45eb738bb.tar.gz
Copied fix for invalid IP bytes greater than 127 from trunk.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@530777 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/Main.java35
1 files changed, 20 insertions, 15 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/Main.java b/java/broker/src/main/java/org/apache/qpid/server/Main.java
index d5c532c656..14aa919356 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/Main.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/Main.java
@@ -71,6 +71,9 @@ public class Main
private static final String DEFAULT_LOG_CONFIG_FILENAME = "log4j.xml";
public static final String QPID_HOME = "QPID_HOME";
+ private static final int IPV4_ADDRESS_LENGTH = 4;
+
+ private static final char IPV4_LITERAL_SEPARATOR = '.';
protected static class InitException extends Exception
{
@@ -395,28 +398,30 @@ public class Main
private byte[] parseIP(String address) throws Exception
{
- StringTokenizer tokenizer = new StringTokenizer(address, ".");
- byte[] ip = new byte[4];
- int index = 0;
- while (tokenizer.hasMoreTokens())
+ char[] literalBuffer = address.toCharArray();
+ int byteCount = 0;
+ int currByte = 0;
+ byte[] ip = new byte[IPV4_ADDRESS_LENGTH];
+ for (int i = 0 ; i < literalBuffer.length ; i++)
{
- String token = tokenizer.nextToken();
- try
+ char currChar = literalBuffer[i];
+ if ((currChar >= '0') && (currChar <= '9'))
{
- ip[index++] = Byte.parseByte(token);
- }
- catch (NumberFormatException e)
+ currByte = (currByte * 10) + (Character.digit(currChar, 10) & 0xFF);
+ }
+
+ if (currChar == IPV4_LITERAL_SEPARATOR || (i + 1 == literalBuffer.length))
{
- throw new Exception("Error parsing IP address: " + address, e);
- }
+ ip[byteCount++] = (byte)currByte;
+ currByte = 0;
+ }
}
- if (index != 4)
+ if (byteCount != 4)
{
throw new Exception("Invalid IP address: " + address);
- }
-
- return ip;
+ }
+ return ip;
}
private void configureLogging(File logConfigFile, String logWatchConfig)