7034532: (fs) AssertionError when working directory is UNC

Mike Duigou mike.duigou at oracle.com
Fri Apr 8 09:13:59 PDT 2011


The patch looks good to me. 

The direct throwing of AssertionError is a bit odd. InternalError instead perhaps?

Mike

On Apr 8 2011, at 07:30 , Alan Bateman wrote:

> 
> Someone testing jdk7 in NetBeans reported the following stack trace when attempting to run their JUnit tests:
> 
> Exception in thread "main" java.lang.AssertionError: Default directory must be absolute/non-UNC
>       at sun.nio.fs.WindowsFileSystem.<init>(WindowsFileSystem.java:60)
>       at sun.nio.fs.WindowsFileSystemProvider.<init>(WindowsFileSystemProvider.java:52)
>       at sun.nio.fs.DefaultFileSystemProvider.create(DefaultFileSystemProvider.java:36)
>       :
>       at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)
> 
> The bug is that the code assumes that the process working directory cannot be an UNC. You can't "cd" to a UNC but you can launch a process with a UNC path as the working directory and that seems to be the case here.
> 
> The fix is trivial and just allows the default directory to be a UNC:
> 
> diff --git a/src/windows/classes/sun/nio/fs/WindowsFileSystem.java b/src/windows/classes/sun/nio/fs/WindowsFileSystem.java
> --- a/src/windows/classes/sun/nio/fs/WindowsFileSystem.java
> +++ b/src/windows/classes/sun/nio/fs/WindowsFileSystem.java
> @@ -56,8 +56,9 @@ class WindowsFileSystem
>        // parse default directory and check it is absolute
>        WindowsPathParser.Result result = WindowsPathParser.parse(dir);
> -        if (result.type() != WindowsPathType.ABSOLUTE)
> -            throw new AssertionError("Default directory must be absolute/non-UNC");
> +        if ((result.type() != WindowsPathType.ABSOLUTE) &&
> +            (result.type() != WindowsPathType.UNC))
> +            throw new AssertionError("Default directory is not an absolute path");
>        this.defaultDirectory = result.path();
>        this.defaultRoot = result.root();
> 
> I don't propose to include a regression test for this.
> 
> Thanks,
> 
> -Alan.



More information about the nio-dev mailing list