You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by vi...@apache.org on 2014/09/03 17:00:43 UTC
svn commit: r1622277 - in /tomcat/tc7.0.x/trunk: ./
java/org/apache/catalina/core/DefaultInstanceManager.java
java/org/apache/catalina/startup/ContextConfig.java
webapps/docs/changelog.xml
Author: violetagg
Date: Wed Sep 3 15:00:43 2014
New Revision: 1622277
URL: http://svn.apache.org/r1622277
Log:
Merged revisions 1621725, 1621726, 1621727 from tomcat/trunk:
Partial fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=56900
Fix resource leaks reading property files
Based on a patch by Felix Schumacher
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1621725-1621727
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=1622277&r1=1622276&r2=1622277&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Wed Sep 3 15:00:43 2014
@@ -50,6 +50,7 @@ import org.apache.catalina.ContainerServ
import org.apache.catalina.Globals;
import org.apache.catalina.security.SecurityUtil;
import org.apache.catalina.util.Introspection;
+import org.apache.juli.logging.Log;
import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.res.StringManager;
@@ -72,9 +73,9 @@ public class DefaultInstanceManager impl
protected final ClassLoader containerClassLoader;
protected boolean privileged;
protected boolean ignoreAnnotations;
- private final Properties restrictedFilters = new Properties();
- private final Properties restrictedListeners = new Properties();
- private final Properties restrictedServlets = new Properties();
+ private final Properties restrictedFilters;
+ private final Properties restrictedListeners;
+ private final Properties restrictedServlets;
private final Map<Class<?>, AnnotationCacheEntry[]> annotationCache =
new WeakHashMap<Class<?>, AnnotationCacheEntry[]>();
private final Map<String, String> postConstructMethods;
@@ -86,43 +87,18 @@ public class DefaultInstanceManager impl
this.containerClassLoader = containerClassLoader;
ignoreAnnotations = catalinaContext.getIgnoreAnnotations();
StringManager sm = StringManager.getManager(Constants.Package);
- try {
- InputStream is =
- this.getClass().getClassLoader().getResourceAsStream
- ("org/apache/catalina/core/RestrictedServlets.properties");
- if (is != null) {
- restrictedServlets.load(is);
- } else {
- catalinaContext.getLogger().error(sm.getString("defaultInstanceManager.restrictedServletsResource"));
- }
- } catch (IOException e) {
- catalinaContext.getLogger().error(sm.getString("defaultInstanceManager.restrictedServletsResource"), e);
- }
-
- try {
- InputStream is =
- this.getClass().getClassLoader().getResourceAsStream
- ("org/apache/catalina/core/RestrictedListeners.properties");
- if (is != null) {
- restrictedListeners.load(is);
- } else {
- catalinaContext.getLogger().error(sm.getString("defaultInstanceManager.restrictedListenersResources"));
- }
- } catch (IOException e) {
- catalinaContext.getLogger().error(sm.getString("defaultInstanceManager.restrictedListenersResources"), e);
- }
- try {
- InputStream is =
- this.getClass().getClassLoader().getResourceAsStream
- ("org/apache/catalina/core/RestrictedFilters.properties");
- if (is != null) {
- restrictedFilters.load(is);
- } else {
- catalinaContext.getLogger().error(sm.getString("defaultInstanceManager.restrictedFiltersResource"));
- }
- } catch (IOException e) {
- catalinaContext.getLogger().error(sm.getString("defaultInstanceManager.restrictedServletsResources"), e);
- }
+ restrictedServlets = loadProperties(
+ "org/apache/catalina/core/RestrictedServlets.properties",
+ sm.getString("defaultInstanceManager.restrictedServletsResource"),
+ catalinaContext.getLogger());
+ restrictedListeners = loadProperties(
+ "org/apache/catalina/core/RestrictedListeners.properties",
+ "defaultInstanceManager.restrictedListenersResources",
+ catalinaContext.getLogger());
+ restrictedFilters = loadProperties(
+ "org/apache/catalina/core/RestrictedFilters.properties",
+ "defaultInstanceManager.restrictedFiltersResource",
+ catalinaContext.getLogger());
this.context = context;
this.injectionMap = injectionMap;
this.postConstructMethods = catalinaContext.findPostConstructMethods();
@@ -641,6 +617,30 @@ public class DefaultInstanceManager impl
return Introspector.decapitalize(setter.getName().substring(3));
}
+ private static Properties loadProperties(String resourceName, String errorString, Log log) {
+ Properties result = new Properties();
+ ClassLoader cl = DefaultInstanceManager.class.getClassLoader();
+ InputStream is = null;
+ try {
+ is = cl.getResourceAsStream(resourceName);
+ if (is ==null) {
+ log.error(errorString);
+ } else {
+ result.load(is);
+ }
+ } catch (IOException ioe) {
+ log.error(errorString, ioe);
+ } finally {
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException e) {
+ }
+ }
+ }
+ return result;
+ }
+
private static String normalize(String jndiName){
if(jndiName != null && jndiName.startsWith("java:comp/env/")){
return jndiName.substring(14);
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1622277&r1=1622276&r2=1622277&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java Wed Sep 3 15:00:43 2014
@@ -143,20 +143,25 @@ public class ContextConfig implements Li
static {
// Load our mapping properties for the standard authenticators
- InputStream is =
- ContextConfig.class.getClassLoader().getResourceAsStream(
+ Properties props = new Properties();
+ InputStream is = null;
+ try {
+ is = ContextConfig.class.getClassLoader().getResourceAsStream(
"org/apache/catalina/startup/Authenticators.properties");
- Properties props = null;
- props = new Properties();
- if (is != null) {
- try {
+ if (is != null) {
props.load(is);
- } catch (IOException e) {
- props = null;
+ }
+ } catch (IOException ioe) {
+ props = null;
+ } finally {
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException e) {
+ }
}
}
authenticators = props;
-
// Load the list of JARS to skip
addJarsToSkip(Constants.DEFAULT_JARS_TO_SKIP);
addJarsToSkip(Constants.PLUGGABILITY_JARS_TO_SKIP);
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1622277&r1=1622276&r2=1622277&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed Sep 3 15:00:43 2014
@@ -107,6 +107,11 @@
when Context have been reloaded. (kkolinko)
</scode>
<fix>
+ <bug>56900</bug>: Fix some potential resource leaks when reading
+ property files reported by Coverity Scan. Based on patches provided by
+ Felix Schumacher. (markt)
+ </fix>
+ <fix>
<bug>56902</bug>: Fix a potential resource leak in the Default Servlet
reported by Coverity Scan. Based on a patch provided by Felix
Schumacher. (markt)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org