You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Konstantin Kasatkin (Created) (JIRA)" <ji...@apache.org> on 2012/01/16 09:14:38 UTC

[jira] [Created] (VFS-399) Custom VFSes over ZIP crashes with Null pointer Exception

Custom VFSes over ZIP crashes with Null pointer Exception
---------------------------------------------------------

                 Key: VFS-399
                 URL: https://issues.apache.org/jira/browse/VFS-399
             Project: Commons VFS
          Issue Type: Bug
    Affects Versions: 2.0
         Environment: Windows XP x64
Oracle JDK 1.6.0.27
            Reporter: Konstantin Kasatkin
            Priority: Blocker


When I implement any intermediate VFS provider and try to connect it to ZIP VFS provider like jar:myprovider:///myurl/myclasses.jar I get Null Pointer Exception due to wrong implementation of ZIP provider. Because it initializes NULL zip entry and tries to get last modification time of this entry without checking for null value.

I suggest the solution for this issue in two steps.

1. For elimination of issue in class org.apache.commons.vfs2.provider.zip.ZipFileObject.java in method doGetLastModifiedTime() {color:red}line 149{color} 
change code: [{color:red} return entry.getTime();{color}]
to code [{color:red}return entry==null ? 0 : entry.getTime();{color}]

2. For correct passing of last modification tate from parent VFS to ZIP VFS in class org.apache.commons.vfs2.provider.zip.ZipFileSystem.java method init() {color:red}line 115{color}
change code [{color:red}parent = createZipFileObject(parentName, null);{color}]
to code [{color:red}
ZipEntry parentEntry = new ZipEntry(getParentLayer().getFileSystem().getRoot().getName().getPath());
parentEntry.setSize(0);
try {
     parentEntry.setTime(getParentLayer().getFileSystem().getRoot().getContent().getLastModifiedTime());
} catch (Exception e) { }

parent = createZipFileObject(parentName, entry);{color}
]


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (VFS-399) Custom VFSes over ZIP crashes with Null pointer Exception

Posted by "Gary D. Gregory (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/VFS-399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13187180#comment-13187180 ] 

Gary D. Gregory commented on VFS-399:
-------------------------------------

The test {{org.apache.commons.vfs2.provider.zip.test.NestedZipTestCase}} works in trunk. I am guessing it worked when 2.0 was released. 

Can you provide a test case patch that shows the problem? Perhaps using other VFS file providers?

Thank you.
                
> Custom VFSes over ZIP crashes with Null pointer Exception
> ---------------------------------------------------------
>
>                 Key: VFS-399
>                 URL: https://issues.apache.org/jira/browse/VFS-399
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Windows XP x64
> Oracle JDK 1.6.0.27
>            Reporter: Konstantin Kasatkin
>            Priority: Blocker
>   Original Estimate: 5m
>  Remaining Estimate: 5m
>
> When I implement any intermediate VFS provider and try to connect it to ZIP VFS provider like jar:myprovider:///myurl/myclasses.jar I get Null Pointer Exception due to wrong implementation of ZIP provider. Because it initializes NULL zip entry and tries to get last modification time of this entry without checking for null value.
> I suggest the solution for this issue in two steps.
> 1. For elimination of issue in class org.apache.commons.vfs2.provider.zip.ZipFileObject.java in method doGetLastModifiedTime() {color:red}line 149{color} 
> change code: [{color:red} return entry.getTime();{color}]
> to code [{color:red}return entry==null ? 0 : entry.getTime();{color}]
> 2. For correct passing of last modification tate from parent VFS to ZIP VFS in class org.apache.commons.vfs2.provider.zip.ZipFileSystem.java method init() {color:red}line 115{color}
> change code [{color:red}parent = createZipFileObject(parentName, null);{color}]
> to code [{color:red}
> ZipEntry parentEntry = new ZipEntry(getParentLayer().getFileSystem().getRoot().getName().getPath());
> parentEntry.setSize(0);
> try {
>      parentEntry.setTime(getParentLayer().getFileSystem().getRoot().getContent().getLastModifiedTime());
> } catch (Exception e) { }
> parent = createZipFileObject(parentName, entry);{color}
> ]

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (VFS-399) Custom VFSes over ZIP crashes with Null pointer Exception

Posted by "Konstantin Kasatkin (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/VFS-399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Konstantin Kasatkin updated VFS-399:
------------------------------------

    Attachment: test.zip

I've attached complete example based on org.apache.commons.vfs2.example.ShowProperties class. There are two run scripts: first - with original 2.0 VFS, second - with patched zip provider.
                
> Custom VFSes over ZIP crashes with Null pointer Exception
> ---------------------------------------------------------
>
>                 Key: VFS-399
>                 URL: https://issues.apache.org/jira/browse/VFS-399
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Windows XP x64
> Oracle JDK 1.6.0.27
>            Reporter: Konstantin Kasatkin
>            Priority: Blocker
>         Attachments: test.zip
>
>   Original Estimate: 5m
>  Remaining Estimate: 5m
>
> When I implement any intermediate VFS provider and try to connect it to ZIP VFS provider like jar:myprovider:///myurl/myclasses.jar I get Null Pointer Exception due to wrong implementation of ZIP provider. Because it initializes NULL zip entry and tries to get last modification time of this entry without checking for null value.
> I suggest the solution for this issue in two steps.
> 1. For elimination of issue in class org.apache.commons.vfs2.provider.zip.ZipFileObject.java in method doGetLastModifiedTime() {color:red}line 149{color} 
> change code: [{color:red} return entry.getTime();{color}]
> to code [{color:red}return entry==null ? 0 : entry.getTime();{color}]
> 2. For correct passing of last modification tate from parent VFS to ZIP VFS in class org.apache.commons.vfs2.provider.zip.ZipFileSystem.java method init() {color:red}line 115{color}
> change code [{color:red}parent = createZipFileObject(parentName, null);{color}]
> to code [{color:red}
> ZipEntry parentEntry = new ZipEntry(getParentLayer().getFileSystem().getRoot().getName().getPath());
> parentEntry.setSize(0);
> try {
>      parentEntry.setTime(getParentLayer().getFileSystem().getRoot().getContent().getLastModifiedTime());
> } catch (Exception e) { }
> parent = createZipFileObject(parentName, entry);{color}
> ]

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira