[jcifs] Problem with jcifs.UniAddress.isValidDnsName(String)

Spierenburg, Peter peter.spierenburg at abridean.com
Fri Oct 7 16:57:54 GMT 2005


It turns out that my regex is wrong at about a hundred different levels
(check out RFC3696). For one thing, DNS names are not restricted to
alphanumerics and the hyphen. In fact the dot is permitted as part of a
label (properly escaped of course).

I'm wondering if the method actually serves any purpose except to be
broken. Its only reference is:

    if( isValidDnsName( hostname ) == false ) {
        throw new UnknownHostException( hostname );
    addr = InetAddress.getByName( hostname );

Consider that InetAddress.getByName(hostname) throws the same
UnknownHostException as the 'if' statement, and is more effective at
detecting invalid hostnames than any method call or regex. Could the
method and call be removed entirely?


-----Original Message-----
From: jcifs-bounces+peter.spierenburg=abridean.com at lists.samba.org
[mailto:jcifs-bounces+peter.spierenburg=abridean.com at lists.samba.org] On
Behalf Of Tapperson Kevin
Sent: Friday, October 07, 2005 11:26 AM
To: jcifs at lists.samba.org
Subject: RE: [jcifs] Problem with

I think the issue with java.util.regex.* here is that it was introduced
in Java 1.4.

I would venture to guess that there are still many users that run jcifs
on the Java 1.3.x platform.  (I know we do.)

-----Original Message-----
From: jcifs-bounces+kevin.tapperson=hcahealthcare.com at lists.samba.org
[mailto:jcifs-bounces+kevin.tapperson=hcahealthcare.com at lists.samba.org]
On Behalf Of Spierenburg, Peter
Sent: Friday, October 07, 2005 8:26 AM
To: Michael B Allen
Cc: jcifs at lists.samba.org
Subject: RE: [jcifs] Problem with


Forgive me for being obtuse, but I'm not exactly sure what overkill and
unique mean in this context. Would you mind clarifying?


-----Original Message-----
From: Michael B Allen [mailto:mba2000 at ioplex.com]
Sent: Thursday, October 06, 2005 9:09 PM
To: Spierenburg, Peter
Cc: jcifs at lists.samba.org
Subject: Re: [jcifs] Problem with

Overkill and java.util.regex looks a little unique. Come up with
something lightweight and I'll add patch it.

On Thu, 6 Oct 2005 14:40:32 -0600
"Spierenburg, Peter" <peter.spierenburg at abridean.com> wrote:

> Greetings,
> There appears to be a bug in the
> jcifs.UniAddress.isValidDnsName(String)
> method. As it stands in the 1.2.5 release, this method rejects dns 
> names which begin with a digit. This is unfortunate since digits are 
> permitted first characters in dns names. As a result, I propose 
> changing the method to use a regular expression:
> import java.util.regex.Pattern;
> static boolean isValidDnsName( String hostname ) {
>     Pattern p =
> Pattern.compile("[a-zA-Z0-9][a-zA-Z0-9\\055]*([\\056][a-zA-Z0-9][a-zA-
> Z0
> -9\055]*)*");
>     return p.matcher(hostname).matches(); }
> which I believe more accurately expresses the nature of dns names.
> Does this seem reasonable?
> Peter-Frank Spierenburg.

More information about the jcifs mailing list