You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Davanum Srinivas (JIRA)" <ax...@ws.apache.org> on 2005/07/27 05:23:25 UTC

[jira] Commented: (AXIS-2134) ManagedMemoryDataSource does not correctly handle large attachments

    [ http://issues.apache.org/jira/browse/AXIS-2134?page=comments#action_12316838 ] 

Davanum Srinivas commented on AXIS-2134:
----------------------------------------

Is this patch ok? i fixed it in CVS like this. thanks, dims


Index: ManagedMemoryDataSource.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/attachments/ManagedMemoryDataSource.java,v
retrieving revision 1.36
diff -u -r1.36 ManagedMemoryDataSource.java
--- ManagedMemoryDataSource.java        1 Nov 2004 14:25:31 -0000       1.36
+++ ManagedMemoryDataSource.java        27 Jul 2005 03:16:25 -0000
@@ -487,7 +487,7 @@
     private class Instream extends java.io.InputStream {

         /** bytes read. */
-        protected int bread = 0;
+        protected long bread = 0;

         /** The real stream. */
         java.io.FileInputStream fin = null;
@@ -540,8 +540,8 @@
                 throw new java.io.IOException(
                         Messages.getMessage("streamClosed"));
             }
-            // Will return neg. value when totalsz > 2Gb
-            int ret = new Long(totalsz - bread).intValue();
+
+            int ret = new Long(Math.min(Integer.MAX_VALUE, totalsz - bread)).intValue();

             if (debugEnabled) {
                 is_log.debug("available() = " + ret + ".");




> ManagedMemoryDataSource does not correctly handle large attachments
> -------------------------------------------------------------------
>
>          Key: AXIS-2134
>          URL: http://issues.apache.org/jira/browse/AXIS-2134
>      Project: Apache Axis
>         Type: Bug
>   Components: Serialization/Deserialization
>     Versions: 1.2.1
>  Environment: Not platform dependent
>     Reporter: Rodrigo Ruiz

>
> When trying to send an attachment larger than 2Gbytes, I get IndexOutOfBound exceptions.
> I think the problem is in the ManagedMemoryDataSource.InStream class implementation. I do not have access to the source CVS, so it's difficult to me to provide a correct patch, but I can describe it:
> - The bread field should be a "long", instead of an "int"
> - The available() method should return Math.min(Integer.MAX_VALUE, totalsz - bread), to ensure an integer is returned

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira