Author: simonetripodi
Date: Mon Mar 11 07:57:18 2013
New Revision: 1455031

URL: http://svn.apache.org/r1455031
Log:
[FILEUPLOAD-212] - Insecure request size checking - fix provided by (and 
credited to) Thomas Neidhart

Modified:
    commons/proper/fileupload/trunk/RELEASE-NOTES.txt
    commons/proper/fileupload/trunk/src/changes/changes.xml
    
commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java

Modified: commons/proper/fileupload/trunk/RELEASE-NOTES.txt
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/RELEASE-NOTES.txt?rev=1455031&r1=1455030&r2=1455031&view=diff
==============================================================================
--- commons/proper/fileupload/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/fileupload/trunk/RELEASE-NOTES.txt Mon Mar 11 07:57:18 2013
@@ -63,6 +63,7 @@ Bug
  * [FILEUPLOAD-195] - Error reading the file size larger than 2 gb
  * [FILEUPLOAD-197] - ServletFileUpload isMultipartContent method does not 
support HTTP PUT
  * [FILEUPLOAD-204] - FileItem.getHeaders() returns always null.
+ * [FILEUPLOAD-212] - Insecure request size checking
  * [FILEUPLOAD-214] - ServletFileUpload only accepts POST requests
 
 Improvement

Modified: commons/proper/fileupload/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/changes/changes.xml?rev=1455031&r1=1455030&r2=1455031&view=diff
==============================================================================
--- commons/proper/fileupload/trunk/src/changes/changes.xml (original)
+++ commons/proper/fileupload/trunk/src/changes/changes.xml Mon Mar 11 07:57:18 
2013
@@ -97,6 +97,9 @@ The <action> type attribute can be add,u
       <action issue="FILEUPLOAD-204" dev="jochen" type="fix" due-to="Hakju Oh">
         FileItem.getHeaders() returns always null.
       </action>
+      <action issue="FILEUPLOAD-204" dev="tn" type="fix" due-to="Damian 
Kolasa">
+        Insecure request size checking
+      </action>
       <action issue="FILEUPLOAD-214" dev="simonetripodi" type="fix" 
due-to="Matthew Runo">
         ServletFileUpload only accepts POST requests
       </action>

Modified: 
commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java?rev=1455031&r1=1455030&r2=1455031&view=diff
==============================================================================
--- 
commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java
 (original)
+++ 
commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java
 Mon Mar 11 07:57:18 2013
@@ -919,26 +919,25 @@ public abstract class FileUploadBase {
 
             if (sizeMax >= 0) {
                 long requestSize = ctx.contentLength();
-                if (requestSize == -1) {
-                    input = new LimitedInputStream(input, sizeMax) {
-                        @Override
-                        protected void raiseError(long pSizeMax, long pCount)
-                                throws IOException {
-                            FileUploadException ex = new 
SizeLimitExceededException(
-                            format("the request was rejected because its size 
(%s) exceeds the configured maximum (%s)",
-                                   pCount, pSizeMax),
-                                   pCount, pSizeMax);
-                            throw new FileUploadIOException(ex);
-                        }
-                    };
-                } else {
-                    if (sizeMax >= 0 && requestSize > sizeMax) {
+                if (requestSize != -1) {
+                    if (requestSize > sizeMax) {
                         throw new SizeLimitExceededException(
                             format("the request was rejected because its size 
(%s) exceeds the configured maximum (%s)",
                                    requestSize, sizeMax),
                                    requestSize, sizeMax);
                     }
                 }
+                input = new LimitedInputStream(input, sizeMax) {
+                    @Override
+                    protected void raiseError(long pSizeMax, long pCount)
+                            throws IOException {
+                        FileUploadException ex = new 
SizeLimitExceededException(
+                        format("the request was rejected because its size (%s) 
exceeds the configured maximum (%s)",
+                               pCount, pSizeMax),
+                               pCount, pSizeMax);
+                        throw new FileUploadIOException(ex);
+                    }
+                };
             }
 
             String charEncoding = headerEncoding;


Reply via email to