< prev index next >

src/java.base/share/classes/java/util/zip/ZipInputStream.java

Print this page


   1 /*
   2  * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 304             throw new ZipException("encrypted ZIP entry not supported");
 305         }
 306         e.method = get16(tmpbuf, LOCHOW);
 307         e.xdostime = get32(tmpbuf, LOCTIM);
 308         if ((flag & 8) == 8) {
 309             /* "Data Descriptor" present */
 310             if (e.method != DEFLATED) {
 311                 throw new ZipException(
 312                         "only DEFLATED entries can have EXT descriptor");
 313             }
 314         } else {
 315             e.crc = get32(tmpbuf, LOCCRC);
 316             e.csize = get32(tmpbuf, LOCSIZ);
 317             e.size = get32(tmpbuf, LOCLEN);
 318         }
 319         len = get16(tmpbuf, LOCEXT);
 320         if (len > 0) {
 321             byte[] extra = new byte[len];
 322             readFully(extra, 0, len);
 323             e.setExtra0(extra,
 324                         e.csize == ZIP64_MAGICVAL || e.size == ZIP64_MAGICVAL);
 325         }
 326         return e;
 327     }
 328 
 329     /**
 330      * Creates a new <code>ZipEntry</code> object for the specified
 331      * entry name.
 332      *
 333      * @param name the ZIP file entry name
 334      * @return the ZipEntry just created
 335      */
 336     protected ZipEntry createZipEntry(String name) {
 337         return new ZipEntry(name);
 338     }
 339 
 340     /**
 341      * Reads end of deflated entry as well as EXT descriptor if present.
 342      *
 343      * Local headers for DEFLATED entries may optionally be followed by a
 344      * data descriptor, and that data descriptor may optionally contain a


   1 /*
   2  * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 304             throw new ZipException("encrypted ZIP entry not supported");
 305         }
 306         e.method = get16(tmpbuf, LOCHOW);
 307         e.xdostime = get32(tmpbuf, LOCTIM);
 308         if ((flag & 8) == 8) {
 309             /* "Data Descriptor" present */
 310             if (e.method != DEFLATED) {
 311                 throw new ZipException(
 312                         "only DEFLATED entries can have EXT descriptor");
 313             }
 314         } else {
 315             e.crc = get32(tmpbuf, LOCCRC);
 316             e.csize = get32(tmpbuf, LOCSIZ);
 317             e.size = get32(tmpbuf, LOCLEN);
 318         }
 319         len = get16(tmpbuf, LOCEXT);
 320         if (len > 0) {
 321             byte[] extra = new byte[len];
 322             readFully(extra, 0, len);
 323             e.setExtra0(extra,
 324                         e.csize == ZIP64_MAGICVAL || e.size == ZIP64_MAGICVAL, true);
 325         }
 326         return e;
 327     }
 328 
 329     /**
 330      * Creates a new <code>ZipEntry</code> object for the specified
 331      * entry name.
 332      *
 333      * @param name the ZIP file entry name
 334      * @return the ZipEntry just created
 335      */
 336     protected ZipEntry createZipEntry(String name) {
 337         return new ZipEntry(name);
 338     }
 339 
 340     /**
 341      * Reads end of deflated entry as well as EXT descriptor if present.
 342      *
 343      * Local headers for DEFLATED entries may optionally be followed by a
 344      * data descriptor, and that data descriptor may optionally contain a


< prev index next >