[jcifs] there is a mistake in jcifs-1.2.9.jar about SmbFile constructor

Michael B Allen mba2000 at ioplex.com
Wed Dec 13 17:23:34 GMT 2006


Ahh, nice job. This is totally a bug. I should have paid more attention
(esp. considering I wrote that code!).

Ok, I'll add this to The List.

Thanks,
Mike

On Wed, 13 Dec 2006 06:55:02 -0500
"Eric Glass" <eric.glass at gmail.com> wrote:

> > The bottom line is:
> >
> > 1) SmbFile passes URLs directly to java.net.URL. So whatever the case is,
> > it's a problem with java.net.URL. You can see the exceptions are being
> > thrown from within java.net.URL. We could probably work around it but ...
> >
> 
> The problem is that our jcifs.smb.Handler class (which interprets the
> raw URL string on behalf of java.net.URL) unescapes the userinfo
> during parsing, which is inconsistent with "normal" URLStreamHandler
> implementations:
> 
> 
> import java.net.*;
> 
> public class testurl {
> 
>     public static void main(String[] args) throws Exception {
>         URL url = new URL("http://test:test%25n1234@example.com/");
>         System.out.println(url.getUserInfo()); // prints "test:test%25n1234"
>         System.setProperty("java.protocol.handler.pkgs", "jcifs");
>         url = new URL("smb://test:test%25n1234@example.com/");
>         System.out.println(url.getUserInfo()); // prints "test:test%n1234"
>     }
> 
> }
> 
> 
> The issue arises when the SmbFile(SmbFile, String) constructor is
> called and the base SmbFile was created as above; the underlying base
> URL now holds the userinfo in an unescaped representation (i.e.
> "test%n1234"), and creating a relative SMB URL tries to unescape it a
> second time.
> 
> The solution is to move the unescape code from the Handler class into
> the NtlmPasswordAuthentication(String) constructor (patch attached).
> I don't think this would have any impact outside of this constructor
> (which is only there to support the Handler anyway) but your mileage
> may vary...
> 
> 
> Eric
> 


-- 
Michael B Allen
PHP Active Directory SSO
http://www.ioplex.com/


More information about the jcifs mailing list