Author: fschumacher Date: Sat Jul 30 10:17:17 2016 New Revision: 1754613 URL: http://svn.apache.org/viewvc?rev=1754613&view=rev Log: Fix resource leak in WebDAV servlet. Based on patch by Coty Sutherland.
Fixes https://bz.apache.org/bugzilla/show_bug.cgi?id=59859 Modified: tomcat/trunk/java/org/apache/catalina/servlets/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/servlets/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/LocalStrings.properties?rev=1754613&r1=1754612&r2=1754613&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/LocalStrings.properties Sat Jul 30 10:17:17 2016 @@ -20,6 +20,7 @@ defaultServlet.missingResource=The reque defaultservlet.skipfail=Only skipped [{0}] bytes when [{1}] were requested webdavservlet.jaxpfailed=JAXP initialization failed webdavservlet.enternalEntityIgnored=The request included a reference to an external entity with PublicID {0} and SystemID {1} which was ignored +webdavservlet.inputstreamclosefail=Failed to close the inputStream of [{0}] directory.filename=Filename directory.lastModified=Last Modified directory.parent=Up To {0} Modified: tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java?rev=1754613&r1=1754612&r2=1754613&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java Sat Jul 30 10:17:17 2016 @@ -17,6 +17,7 @@ package org.apache.catalina.servlets; import java.io.IOException; +import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; @@ -1709,11 +1710,15 @@ public class WebdavServlet } } } - if (!resources.write(dest, sourceResource.getInputStream(), - false)) { - errorList.put(source, - Integer.valueOf(WebdavStatus.SC_INTERNAL_SERVER_ERROR)); - return false; + try (InputStream is = sourceResource.getInputStream()) { + if (!resources.write(dest, is, + false)) { + errorList.put(source, + Integer.valueOf(WebdavStatus.SC_INTERNAL_SERVER_ERROR)); + return false; + } + } catch (IOException e) { + log(sm.getString("webdavservlet.inputstreamclosefail", source), e); } } else { errorList.put(source, Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1754613&r1=1754612&r2=1754613&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Sat Jul 30 10:17:17 2016 @@ -84,6 +84,10 @@ When retrieving an object via a <code>ResourceLink</code>, ensure that the object obtained is of the expected type. (markt) </add> + <fix> + <bug>59859</bug>: Fix resource leak in WebDAV servlet. Based on patch by + Coty Sutherland. (fschumacher) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org