You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by ni...@apache.org on 2005/02/15 19:56:52 UTC
cvs commit: logging-log4net/src/Util/TypeConverters IPAddressConverter.cs
nicko 2005/02/15 10:56:52
Modified: src/Util/TypeConverters IPAddressConverter.cs
Log:
Only attempt to IPAddress.Parse if the string contains valid IP address characters
Revision Changes Path
1.3 +22 -11 logging-log4net/src/Util/TypeConverters/IPAddressConverter.cs
Index: IPAddressConverter.cs
===================================================================
RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/IPAddressConverter.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IPAddressConverter.cs 7 Feb 2005 04:05:20 -0000 1.2
+++ IPAddressConverter.cs 15 Feb 2005 18:56:52 -0000 1.3
@@ -2,15 +2,15 @@
//
// Copyright 2001-2005 The Apache Software Foundation
//
-// Licensed under the Apache License, Version 2.0 (the "License");
+// Licensed under the Apache License',' Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// Unless required by applicable law or agreed to in writing',' software
+// distributed under the License is distributed on an "AS IS" BASIS','
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND',' either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
@@ -72,19 +72,25 @@
public object ConvertFrom(object source)
{
string str = source as string;
- if (str != null)
+ if (str != null && str.Length > 0)
{
try
{
- try
+ // Check if the string only contains IP address valid chars
+ if (str.Trim(validIpAddressChars).Length == 0)
{
- return IPAddress.Parse(str);
- }
- catch(FormatException)
- {
- // Ignore a FormatException, try to resolve via DNS
+ try
+ {
+ // try to parse the string as an IP address
+ return IPAddress.Parse(str);
+ }
+ catch(FormatException)
+ {
+ // Ignore a FormatException, try to resolve via DNS
+ }
}
+ // Try to resolve via DNS. This is a blocking call.
IPHostEntry host = Dns.GetHostByName(str);
if (host != null &&
host.AddressList != null &&
@@ -103,5 +109,10 @@
}
#endregion
+
+ /// <summary>
+ /// Valid characters in an IPv4 or IPv6 address string. (Does not support subnets)
+ /// </summary>
+ private static readonly char[] validIpAddressChars = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','A','B','C','D','E','F','x','X','.',':','%'};
}
}