From 276b55d0e573057577e6ce20c4577f4de8809d2f Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 10 Feb 2010 23:47:11 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48726 Prevent OOME when uploading large files with the deployer Patch provided by 'adam' git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@908759 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/ant/AbstractCatalinaTask.java | 2 ++ java/org/apache/catalina/ant/DeployTask.java | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/java/org/apache/catalina/ant/AbstractCatalinaTask.java b/java/org/apache/catalina/ant/AbstractCatalinaTask.java index 19541875a..d4c89980c 100644 --- a/java/org/apache/catalina/ant/AbstractCatalinaTask.java +++ b/java/org/apache/catalina/ant/AbstractCatalinaTask.java @@ -186,6 +186,8 @@ public abstract class AbstractCatalinaTask extends BaseRedirectorHelperTask { if (contentLength >= 0) { hconn.setRequestProperty("Content-Length", "" + contentLength); + + hconn.setFixedLengthStreamingMode(contentLength); } } else { hconn.setDoOutput(false); diff --git a/java/org/apache/catalina/ant/DeployTask.java b/java/org/apache/catalina/ant/DeployTask.java index ec1e99b53..4231e6232 100644 --- a/java/org/apache/catalina/ant/DeployTask.java +++ b/java/org/apache/catalina/ant/DeployTask.java @@ -167,8 +167,17 @@ public class DeployTask extends AbstractCatalinaTask { } } else { try { - stream = new BufferedInputStream - (new FileInputStream(war), 1024); + FileInputStream fsInput = new FileInputStream(war); + long size = fsInput.getChannel().size(); + + if (size > Integer.MAX_VALUE) + throw new UnsupportedOperationException( + "DeployTask does not support WAR files " + + "greater than 2 Gb"); + contentLength = (int) size; + + stream = new BufferedInputStream(fsInput, 1024); + } catch (IOException e) { throw new BuildException(e); } -- 2.11.0