Bug with the zip fs provider (7u72, 8u25), am able to create a corrupted zip...
Xueming Shen
xueming.shen at oracle.com
Fri Jan 16 18:07:12 UTC 2015
Thanks Francis, I will take a look. It appears we have a bug somewhere, the entry
has the size field set to zero.
sherman at sherman-linux:~/Workspace/test$ java jdk.nio.zipfs.ZipInfo /tmp/t.zip
----------------#1--------------------
[Central Directory Header]
Signature : 0x02014b50
VerMadeby : 0x14 [0, 2.0]
VerExtract : 0x14 [2.0]
Flag : 0x800
Method : 0x8
LastMTime : 0x46304f28 [Fri Jan 16 09:57:16 PST 2015]
CRC : 0x3610a686
CSize : 0x2
Size : 0x0
NameLen : 0x3 [foo]
ExtraLen : 0x9
[tag=0x5455, sz=5, data= 07 fc 50 b9 54 ]
->Info-ZIP Extended Timestamp: flag=7
*Fri Jan 16 09:57:16 PST 2015
CommentLen : 0x0
DiskStart : 0x0
Attrs : 0x0
AttrsEx : 0x0
LocOff : 0x0
[Local File Header]
Signature : 0x04034b50
Version : 0x14 [2.0]
Flag : 0x800
Method : 0x8
LastMTime : 0x46304f28 [Fri Jan 16 09:57:16 PST 2015]
CRC : 0x3610a686
CSize : 0x2
Size : 0x0
NameLength : 0x3 [foo]
ExtraLength : 0x11
[tag=0x5455, sz=13, data= 07 fc 50 b9 54 fc 50 b9 54 fc 50 b9 54 ]
->Info-ZIP Extended Timestamp: flag=7
*Fri Jan 16 09:57:16 PST 2015
*Fri Jan 16 09:57:16 PST 2015
*Fri Jan 16 09:57:16 PST 2015
On 01/16/2015 09:15 AM, Francis Galiegue wrote:
> (sorry for the flurry of emails, I should really not press the send
> button so quickly...)
>
> System info: Ubuntu 14.10; can reproduce with both 1.7u72 and 1.8u25.
>
> On Fri, Jan 16, 2015 at 6:10 PM, Francis Galiegue<fgaliegue at gmail.com> wrote:
>> OK, I have a more simple reproducer:
>>
>> public final class Jsr203ZipBug
>> {
>> public static void main(final String... args)
>> throws IOException
>> {
>> final Path zipPath
>> = Paths.get(System.getProperty("java.io.tmpdir"), "t.zip");
>> Files.deleteIfExists(zipPath);
>>
>> final URI uri = URI.create("jar:" + zipPath.toUri());
>>
>> final Map<String, ?> env = Collections.singletonMap("create", "true");
>>
>> try (
>> final FileSystem zipfs = FileSystems.newFileSystem(uri, env);
>> final OutputStream out
>> = Files.newOutputStream(zipfs.getPath("/foo"));
>> ) {
>> out.write("hello".getBytes());
>> out.close();
>> }
>> }
>> }
>>
>> Note that it doesn't matter whether I also .flush() before I close.
>>
>> --
>> Francis Galiegue, fgaliegue at gmail.com, https://github.com/fge
>> JSON Schema in Java: http://json-schema-validator.herokuapp.com
>> Parsers in pure Java: https://github.com/parboiled1/grappa (redde
>> Caesaris: https://github.com/sirthias)
>
>
More information about the nio-dev
mailing list