Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-2436

[classlib][archive] Reading from a closed Jar file is allowed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • Classlib
    • None
    • Patch Available

    Description

      Reading from InputStream which was opened on some JarFile
      is allowed even if this JarFile was closed .

      java.util.jar.JarFile inherits close() method from java.util.zip.ZipFile and
      specification of this method ensure that if JarFile is closed all InputStreams that were obtained
      via getInputStream() method will be closed. But JarFile behaves in a different manner.

      Code to reproduce this problem:

      import java.util.jar.*;
      import java.io.*;
      public class TestJarFileClose{

      public static void main(String[] args) {
      byte[] b = new byte[1024];
      try

      { JarFile jf = new JarFile("hello_world.jar"); InputStream is = jf.getInputStream(jf.getEntry("hello_world/HelloWorld.class")); jf.close(); int r = is.read(b, 0, 1024); System.out.println("Test failed, readed from closed JAR file: "+r); is.close(); }

      catch (Exception e)

      { System.out.println("Test passed: "+e); }


      }
      }

      Output on RI:
      Test passed: java.lang.IllegalStateException: zip file closed

      Output on Harmony:
      Test failed, readed from closed JAR file: 427

      Attachments

        1. harmony-2436.diff
          5 kB
          Tony Wu
        2. harmony-2436-2.diff
          5 kB
          Tony Wu
        3. hello_world.jar
          0.9 kB
          Alexey Ivanov

        Issue Links

          Activity

            People

              zakha Alexei Zakharov
              aivanov Alexey Ivanov
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: