https://issues.apache.org/bugzilla/show_bug.cgi?id=52719

             Bug #: 52719
           Summary: An incomplete fix for the resource leak bug in
                    WebappClassLoader.java
           Product: Tomcat 6
           Version: unspecified
          Platform: PC
            Status: NEW
          Severity: critical
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: liangg...@sei.pku.edu.cn
    Classification: Unclassified


The fix revision 423920 was aimed to remove an resource leak bug on the 
JarFile "jarFile "  in the method "validateJarFile" of the file
"/tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java"
, but it is incomplete. 

When the statements at lines 3226-3245 throw any eception, the object "jarFile
" can not be closed as expected. The best way to close such resource object is
putting such close operations in the finaly block of a try-catch-finally
structure.

The buggy code is copies as bellows: 


3220 protected boolean validateJarFile(File jarfile)
        throws IOException {

        if (triggers == null)
            return (true);
3225        JarFile jarFile = new JarFile(jarfile);
3226        for (int i = 0; i < triggers.length; i++) {
            Class clazz = null;
            try {
                if (parent != null) {
                    clazz = parent.loadClass(triggers[i]);
                } else {
                    clazz = Class.forName(triggers[i]);
                }
            } catch (Throwable t) {
                clazz = null;
            }
            if (clazz == null)
                continue;
            String name = triggers[i].replace('.', '/') + ".class";
            if (log.isDebugEnabled())
                log.debug(" Checking for " + name);
            JarEntry jarEntry = jarFile.getJarEntry(name);
            if (jarEntry != null) {
                log.info("validateJarFile(" + jarfile + 
                    ") - jar not loaded. See Servlet Spec 2.3, "
                    + "section 9.7.2. Offending class: " + name);
3246                jarFile.close();
                return (false);
            }
        }
        jarFile.close();
        return (true);

    }

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to