[jcifs] URLHandler Bug

Thomas Krammer TKrammer at nxn-software.com
Thu Sep 26 11:47:21 EST 2002


Hi everyone,

I'm writing an application which supports various file transfer protocols.
The file's location is represented by an URL. First I parse the URL using
java.net.URL and then trigger protocol specific behavior. Using this
application I found a bug in jcifs.smb.Handler.
The jcifs.smb.Handler class stores a SmbFile object used to parse the URL.
If any error occrs during the URL parsing that object isn't overwritten. So
when a incorrect SMB URL (e.g. containing an invalid host name) is used to
create an URL object the last valid parsing result is used.
The example code below demonstrates this problem.


  Thomas


======================================================
Code
======================================================

import java.io.*;
import java.net.*;

import jcifs.smb.*;

public class URLTest
{
    public URLTest()
    {
    }

    public static void main(String args[])
    {
        try {
            Class.forName("jcifs.Config");

            // This host exists            
            URL correctURL = new URL("smb://mellotron");

            // This host doesn't exist
            URL wrongURL = new URL("smb://a_non_existing_machine");
            
            System.out.println("Correct URL "+correctURL.toString());
            System.out.println("Wrong URL "+wrongURL.toString());
        }
        catch(Exception e) {
            System.out.println("EXCEPTION");
        }
    }
}

===================================================
Output
===================================================

Sep 26 03:11:11.852 - smb URLStreamHandler exception
java.net.UnknownHostException: a_non_existing_machine
        at jcifs.UniAddress.getByName(UniAddress.java:268)
        at jcifs.smb.SmbURL.parseSmbURL(SmbURL.java:80)
        at jcifs.smb.SmbFile.<init>(SmbFile.java:413)
        at jcifs.smb.Handler.parseURL(Handler.java:35)
        at java.net.URL.<init>(URL.java:608)
        at java.net.URL.<init>(URL.java:476)
        at java.net.URL.<init>(URL.java:425)
        at performance.URLTest.main(URLTest.java:27)
Correct URL smb://mellotron
Wrong URL smb://mellotron
 
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the jcifs mailing list