You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2012/09/18 18:27:22 UTC

svn commit: r1387235 - in /santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security: signature/XMLSignatureInput.java utils/UnsyncByteArrayOutputStream.java

Author: coheigea
Date: Tue Sep 18 16:27:21 2012
New Revision: 1387235

URL: http://svn.apache.org/viewvc?rev=1387235&view=rev
Log:
[SANTUARIO-344] - Close the internal InputStream of XMLSignatureInput on an Exception


Conflicts:

	src/main/java/org/apache/xml/security/stax/impl/transformer/TransformIdentity.java

Modified:
    santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java
    santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java?rev=1387235&r1=1387234&r2=1387235&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/signature/XMLSignatureInput.java Tue Sep 18 16:27:21 2012
@@ -487,8 +487,13 @@ public class XMLSignatureInput {
         } else {
             byte[] buffer = new byte[4 * 1024];
             int bytesread = 0;
-            while ((bytesread = inputOctetStreamProxy.read(buffer)) != -1) {
-                diOs.write(buffer, 0, bytesread);
+            try {
+                while ((bytesread = inputOctetStreamProxy.read(buffer)) != -1) {
+                    diOs.write(buffer, 0, bytesread);
+                }
+            } catch (IOException ex) {
+                inputOctetStreamProxy.close();
+                throw ex;
             }
         }
     }
@@ -507,8 +512,11 @@ public class XMLSignatureInput {
         if (inputOctetStreamProxy == null) {
             return null;
         }
-        bytes = JavaUtils.getBytesFromStream(inputOctetStreamProxy);
-        inputOctetStreamProxy.close();
+        try {
+            bytes = JavaUtils.getBytesFromStream(inputOctetStreamProxy);
+        } finally {
+            inputOctetStreamProxy.close();
+        }
         return bytes;
     }
         
@@ -568,9 +576,13 @@ public class XMLSignatureInput {
             byte result[] = baos.toByteArray();
             Document document = db.parse(new ByteArrayInputStream(result));
             this.subNode = document.getDocumentElement().getFirstChild().getFirstChild();				
+        } finally {
+            if (this.inputOctetStreamProxy != null) {
+                this.inputOctetStreamProxy.close();
+            }
+            this.inputOctetStreamProxy = null;
+            this.bytes = null;
         }
-        this.inputOctetStreamProxy = null;
-        this.bytes = null;
     }
     
 }

Modified: santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java?rev=1387235&r1=1387234&r2=1387235&view=diff
==============================================================================
--- santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java (original)
+++ santuario/xml-security-java/branches/1.5.x-fixes/src/main/java/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java Tue Sep 18 16:27:21 2012
@@ -93,6 +93,7 @@ public class UnsyncByteArrayOutputStream
     @Override
     public void close() throws IOException {
         bufCache.remove();
+        buf = null;
     }
 
     private void expandSize(int newPos) {