You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by mu...@apache.org on 2009/09/24 19:53:45 UTC
svn commit: r818570 -
/xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
Author: mullan
Date: Thu Sep 24 17:53:44 2009
New Revision: 818570
URL: http://svn.apache.org/viewvc?rev=818570&view=rev
Log:
Fixed bug 36526 : Out of memory error when signing or verifying big files
Modified:
xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
Modified: xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java?rev=818570&r1=818569&r2=818570&view=diff
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java Thu Sep 24 17:53:44 2009
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2009 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -37,117 +37,114 @@
ResolverLocalFilesystem.class.getName());
public boolean engineIsThreadSafe() {
- return true;
- }
- /**
- * @inheritDoc
- */
- public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+ return true;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
throws ResourceResolverException {
- try {
- URI uriNew = getNewURI(uri.getNodeValue(), BaseURI);
+ try {
+ URI uriNew = getNewURI(uri.getNodeValue(), BaseURI);
- // if the URI contains a fragment, ignore it
- URI uriNewNoFrag = new URI(uriNew);
+ // if the URI contains a fragment, ignore it
+ URI uriNewNoFrag = new URI(uriNew);
- uriNewNoFrag.setFragment(null);
+ uriNewNoFrag.setFragment(null);
- String fileName =
- ResolverLocalFilesystem
- .translateUriToFilename(uriNewNoFrag.toString());
- FileInputStream inputStream = new FileInputStream(fileName);
- XMLSignatureInput result = new XMLSignatureInput(inputStream);
+ String fileName =
+ ResolverLocalFilesystem
+ .translateUriToFilename(uriNewNoFrag.toString());
+ FileInputStream inputStream = new FileInputStream(fileName);
+ XMLSignatureInput result = new XMLSignatureInput(inputStream);
- result.setSourceURI(uriNew.toString());
+ result.setSourceURI(uriNew.toString());
- return result;
- } catch (Exception e) {
- throw new ResourceResolverException("generic.EmptyMessage", e, uri,
+ return result;
+ } catch (Exception e) {
+ throw new ResourceResolverException("generic.EmptyMessage", e, uri,
BaseURI);
- }
- }
+ }
+ }
- private static int FILE_URI_LENGTH="file:/".length();
- /**
- * Method translateUriToFilename
- *
- * @param uri
- * @return the string of the filename
- */
- private static String translateUriToFilename(String uri) {
-
- String subStr = uri.substring(FILE_URI_LENGTH);
-
- if (subStr.indexOf("%20") > -1)
- {
- int offset = 0;
- int index = 0;
- StringBuffer temp = new StringBuffer(subStr.length());
- do
- {
- index = subStr.indexOf("%20",offset);
- if (index == -1) temp.append(subStr.substring(offset));
- else
- {
- temp.append(subStr.substring(offset,index));
- temp.append(' ');
- offset = index+3;
- }
- }
- while(index != -1);
- subStr = temp.toString();
- }
-
- if (subStr.charAt(1) == ':') {
- // we're running M$ Windows, so this works fine
- return subStr;
- }
- // we're running some UNIX, so we have to prepend a slash
- return "/" + subStr;
- }
-
- /**
- * @inheritDoc
- */
- public boolean engineCanResolve(Attr uri, String BaseURI) {
-
- if (uri == null) {
- return false;
- }
-
- String uriNodeValue = uri.getNodeValue();
-
- if (uriNodeValue.equals("") || (uriNodeValue.charAt(0)=='#') ||
- uriNodeValue.startsWith("http:")) {
- return false;
- }
-
- try {
- //URI uriNew = new URI(new URI(BaseURI), uri.getNodeValue());
- if (log.isDebugEnabled())
- log.debug("I was asked whether I can resolve " + uriNodeValue/*uriNew.toString()*/);
-
- if ( uriNodeValue.startsWith("file:") ||
- BaseURI.startsWith("file:")/*uriNew.getScheme().equals("file")*/) {
- if (log.isDebugEnabled())
- log.debug("I state that I can resolve " + uriNodeValue/*uriNew.toString()*/);
-
- return true;
- }
- } catch (Exception e) {}
+ private static int FILE_URI_LENGTH="file:/".length();
+ /**
+ * Method translateUriToFilename
+ *
+ * @param uri
+ * @return the string of the filename
+ */
+ private static String translateUriToFilename(String uri) {
+
+ String subStr = uri.substring(FILE_URI_LENGTH);
+
+ if (subStr.indexOf("%20") > -1) {
+ int offset = 0;
+ int index = 0;
+ StringBuffer temp = new StringBuffer(subStr.length());
+ do {
+ index = subStr.indexOf("%20",offset);
+ if (index == -1) {
+ temp.append(subStr.substring(offset));
+ } else {
+ temp.append(subStr.substring(offset, index));
+ temp.append(' ');
+ offset = index + 3;
+ }
+ } while(index != -1);
+ subStr = temp.toString();
+ }
- log.debug("But I can't");
+ if (subStr.charAt(1) == ':') {
+ // we're running M$ Windows, so this works fine
+ return subStr;
+ }
+ // we're running some UNIX, so we have to prepend a slash
+ return "/" + subStr;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public boolean engineCanResolve(Attr uri, String BaseURI) {
+ if (uri == null) {
+ return false;
+ }
- return false;
- }
+ String uriNodeValue = uri.getNodeValue();
- private static URI getNewURI(String uri, String BaseURI)
+ if (uriNodeValue.equals("") || (uriNodeValue.charAt(0)=='#') ||
+ uriNodeValue.startsWith("http:")) {
+ return false;
+ }
+
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("I was asked whether I can resolve " + uriNodeValue);
+ }
+
+ if (uriNodeValue.startsWith("file:") ||
+ BaseURI.startsWith("file:")) {
+ if (log.isDebugEnabled()) {
+ log.debug("I state that I can resolve " + uriNodeValue);
+ }
+ return true;
+ }
+ } catch (Exception e) {}
+
+ log.debug("But I can't");
+
+ return false;
+ }
+
+ private static URI getNewURI(String uri, String BaseURI)
throws URI.MalformedURIException {
- if ((BaseURI == null) || "".equals(BaseURI)) {
- return new URI(uri);
- }
- return new URI(new URI(BaseURI), uri);
- }
+ if (BaseURI == null || "".equals(BaseURI)) {
+ return new URI(uri);
+ }
+ return new URI(new URI(BaseURI), uri);
+ }
}