You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by sc...@apache.org on 2010/06/23 15:31:57 UTC

svn commit: r957190 - in /xml/security/trunk/c/src: dsig/ enc/ framework/ samples/ tools/c14n/ tools/checksig/ tools/cipher/ tools/xklient/ utils/ utils/unixutils/ utils/winutils/ xenc/impl/ xkms/ xkms/impl/

Author: scantor
Date: Wed Jun 23 13:31:56 2010
New Revision: 957190

URL: http://svn.apache.org/viewvc?rev=957190&view=rev
Log:
https://issues.apache.org/bugzilla/show_bug.cgi?id=49264

Modified:
    xml/security/trunk/c/src/dsig/DSIGKeyInfoName.cpp
    xml/security/trunk/c/src/dsig/DSIGKeyInfoX509.cpp
    xml/security/trunk/c/src/enc/XSECCryptoUtils.cpp
    xml/security/trunk/c/src/framework/XSECDefs.hpp
    xml/security/trunk/c/src/samples/IOStreamOutputter.cpp
    xml/security/trunk/c/src/tools/c14n/c14n.cpp
    xml/security/trunk/c/src/tools/checksig/InteropResolver.cpp
    xml/security/trunk/c/src/tools/checksig/checksig.cpp
    xml/security/trunk/c/src/tools/cipher/cipher.cpp
    xml/security/trunk/c/src/tools/xklient/xklient.cpp
    xml/security/trunk/c/src/utils/XSECAutoPtr.hpp
    xml/security/trunk/c/src/utils/XSECDOMUtils.cpp
    xml/security/trunk/c/src/utils/XSECSOAPRequestorSimple.cpp
    xml/security/trunk/c/src/utils/XSECSafeBuffer.cpp
    xml/security/trunk/c/src/utils/unixutils/XSECBinHTTPURIInputStream.cpp
    xml/security/trunk/c/src/utils/unixutils/XSECSOAPRequestorSimpleUnix.cpp
    xml/security/trunk/c/src/utils/unixutils/XSECURIResolverGenericUnix.cpp
    xml/security/trunk/c/src/utils/winutils/XSECBinHTTPURIInputStream.cpp
    xml/security/trunk/c/src/utils/winutils/XSECSOAPRequestorSimpleWin32.cpp
    xml/security/trunk/c/src/utils/winutils/XSECURIResolverGenericWin32.cpp
    xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp
    xml/security/trunk/c/src/xenc/impl/XENCCipherImpl.cpp
    xml/security/trunk/c/src/xenc/impl/XENCEncryptedTypeImpl.cpp
    xml/security/trunk/c/src/xkms/XKMSConstants.cpp
    xml/security/trunk/c/src/xkms/impl/XKMSKeyBindingAbstractTypeImpl.cpp
    xml/security/trunk/c/src/xkms/impl/XKMSMessageAbstractTypeImpl.cpp

Modified: xml/security/trunk/c/src/dsig/DSIGKeyInfoName.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/dsig/DSIGKeyInfoName.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/dsig/DSIGKeyInfoName.cpp (original)
+++ xml/security/trunk/c/src/dsig/DSIGKeyInfoName.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -32,8 +32,6 @@
 #include <xsec/dsig/DSIGSignature.hpp>
 #include <xsec/framework/XSECEnv.hpp>
 
-#include <xercesc/util/Janitor.hpp>
-
 XERCES_CPP_NAMESPACE_USE
 
 // --------------------------------------------------------------------------------
@@ -152,10 +150,8 @@ DOMElement * DSIGKeyInfoName::createBlan
 
 		mp_decodedDName = XMLString::replicate(name);
 		XMLCh * encodedName = encodeDName(name);
-		ArrayJanitor<XMLCh> j_encodedName(encodedName);
-
 		mp_keyNameTextNode = doc->createTextNode(encodedName);
-
+		XSEC_RELEASE_XMLCH(encodedName);
 	}
 
 	else
@@ -193,10 +189,8 @@ void DSIGKeyInfoName::setKeyName(const X
 
 		mp_decodedDName = XMLString::replicate(name);
 		XMLCh * encodedName = encodeDName(name);
-		ArrayJanitor<XMLCh> j_encodedName(encodedName);
-
 		mp_keyNameTextNode->setNodeValue(encodedName);
-
+		XSEC_RELEASE_XMLCH(encodedName);
 	}
 
 	else {

Modified: xml/security/trunk/c/src/dsig/DSIGKeyInfoX509.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/dsig/DSIGKeyInfoX509.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/dsig/DSIGKeyInfoX509.cpp (original)
+++ xml/security/trunk/c/src/dsig/DSIGKeyInfoX509.cpp Wed Jun 23 13:31:56 2010
@@ -479,7 +479,7 @@ void DSIGKeyInfoX509::setX509SubjectName
 		mp_X509SubjectNameTextNode->setNodeValue(encodedName);
 
 	}
-	XMLString::release(&encodedName);
+	XSEC_RELEASE_XMLCH(encodedName);
 }
 
 void DSIGKeyInfoX509::setX509IssuerSerial(const XMLCh * name, const XMLCh * serial) {
@@ -539,7 +539,7 @@ void DSIGKeyInfoX509::setX509IssuerSeria
 
 	}
 
-	XMLString::release(&encodedName);
+	XSEC_RELEASE_XMLCH(encodedName);
 }
 
 void DSIGKeyInfoX509::setRawRetrievalURI(const XMLCh * uri) {

Modified: xml/security/trunk/c/src/enc/XSECCryptoUtils.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/enc/XSECCryptoUtils.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/enc/XSECCryptoUtils.cpp (original)
+++ xml/security/trunk/c/src/enc/XSECCryptoUtils.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -36,6 +36,8 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
+#include "../utils/XSECAutoPtr.hpp"
+
 XERCES_CPP_NAMESPACE_USE
 
 // --------------------------------------------------------------------------------
@@ -73,16 +75,14 @@ int SASLCleanXKMSPassPhrase(unsigned cha
 	// Currently we only check for prohibited unput for chars < 0xFFFF and drop any
 	// chars over 0xFFFF
 
-	XMLCh * uinput, *uoutput;
 	unsigned char * inp = new unsigned char[inputLen + 1];
 	ArrayJanitor<unsigned char> j_inp(inp);
 	memcpy(inp, input, inputLen);
 	inp[inputLen] = '\0';
 
-	uinput = XMLString::transcode((char *) inp);
-	xsecsize_t l = XMLString::stringLen(uinput);
-	uoutput = new XMLCh[l + 1];
-	ArrayJanitor<XMLCh> j_uinput(uinput);
+	XSECAutoPtrXMLCh uinput((char *) inp);
+	xsecsize_t l = XMLString::stringLen(uinput.get());
+	XMLCh* uoutput = new XMLCh[l + 1];
 	ArrayJanitor<XMLCh> j_uoutput(uoutput);
 
 	xsecsize_t i, j;
@@ -92,7 +92,7 @@ int SASLCleanXKMSPassPhrase(unsigned cha
 
 	for (i = 0; i < l; ++i) {
 		
-		ch1 = uinput[i];
+		ch1 = uinput.get()[i];
 		// Case one - char is < 0x10000
 		if (ch1 < 0xD800 || ch1 > 0xDFFF) {
 
@@ -237,11 +237,11 @@ int SASLCleanXKMSPassPhrase(unsigned cha
 
 	// Now transcode
 	char * utf8output= transcodeToUTF8(uoutput);
-	ArrayJanitor<char> j_utf8output(utf8output);
 	output.sbStrcpyIn(utf8output);
 
-	return (int) strlen(utf8output);
-
+	int ret = (int)strlen(utf8output);
+	XSEC_RELEASE_XMLCH(utf8output);
+	return ret;
 }
 
 int DSIG_EXPORT CalculateXKMSAuthenticationKey(unsigned char * input, int inputLen, unsigned char * output, int maxOutputLen) {
@@ -392,11 +392,10 @@ unsigned int DSIG_EXPORT DecodeFromBase6
 	XSECCryptoBase64 * b64 = XSECPlatformUtils::g_cryptoProvider->base64();
 	Janitor<XSECCryptoBase64> j_b64(b64);
 
-	char * tinput = XMLString::transcode(input);
-	ArrayJanitor<char> j_tinput(tinput);
+	XSECAutoPtrChar tinput(input);
 
 	b64->decodeInit();
-	unsigned int j = b64->decode((unsigned char *) tinput, (unsigned int) strlen(tinput), output, maxOutputLen - 1);
+	unsigned int j = b64->decode((unsigned char *) tinput.get(), (unsigned int) strlen(tinput.get()), output, maxOutputLen - 1);
 	j += b64->decodeFinish(&output[j], maxOutputLen - j - 1);
 
 	return j;

Modified: xml/security/trunk/c/src/framework/XSECDefs.hpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/framework/XSECDefs.hpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/framework/XSECDefs.hpp (original)
+++ xml/security/trunk/c/src/framework/XSECDefs.hpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -86,9 +86,9 @@
 #endif
 
 #if defined (XSEC_XERCES_XMLSTRING_HAS_RELEASE)
-#    define XSEC_RELEASE_XMLCH(x) XMLString::release(&x)
+#    define XSEC_RELEASE_XMLCH(x) XMLString::release(&(x))
 #else
-#    define XSEC_RELEASE_XMLCH(x) delete[] x;
+#    define XSEC_RELEASE_XMLCH(x) delete[] (x);
 #endif
 
 // --------------------------------------------------------------------------------

Modified: xml/security/trunk/c/src/samples/IOStreamOutputter.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/samples/IOStreamOutputter.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/samples/IOStreamOutputter.cpp (original)
+++ xml/security/trunk/c/src/samples/IOStreamOutputter.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 The Apache Software Foundation.
+ * Copyright 2003-2010 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.
@@ -876,7 +876,7 @@ ostream& operator<< (ostream& target, co
 {
     char *p = s.transcode();
     target << p;
-    XMLString::release(&p);
+    XSEC_RELEASE_XMLCH(p);
     return target;
 }
 

Modified: xml/security/trunk/c/src/tools/c14n/c14n.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/tools/c14n/c14n.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/tools/c14n/c14n.cpp (original)
+++ xml/security/trunk/c/src/tools/c14n/c14n.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2009 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -168,7 +168,7 @@ int main(int argc, char **argv) {
     if (id) {
         XMLCh* temp = XMLString::transcode(id);
         subtree = theDOM->getElementById(temp);
-        XMLString::release(&temp);
+        XSEC_RELEASE_XMLCH(temp);
         if (!subtree) {
             cerr << "ID reference did not resolve" << endl;
             exit(1);

Modified: xml/security/trunk/c/src/tools/checksig/InteropResolver.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/tools/checksig/InteropResolver.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/tools/checksig/InteropResolver.cpp (original)
+++ xml/security/trunk/c/src/tools/checksig/InteropResolver.cpp Wed Jun 23 13:31:56 2010
@@ -344,7 +344,6 @@ bool InteropResolver::checkMatch(DSIGKey
 				char * cski = XMLString::transcode(ski);
 				int clen = (int) strlen(cski);
 				unsigned char * xski = new unsigned char[clen];
-				ArrayJanitor<char> j_cski(cski);
 				ArrayJanitor <unsigned char> j_xski(xski);
 
 				// Decode
@@ -353,6 +352,7 @@ bool InteropResolver::checkMatch(DSIGKey
 				b64.decodeInit();
 				int xlen = b64.decode((unsigned char *) cski, clen, xski, clen);
 				xlen += b64.decodeFinish(&xski[xlen], clen - xlen);
+                XSEC_RELEASE_XMLCH(cski);
 
 				if (xlen != 0) {
 
@@ -433,10 +433,10 @@ XSECCryptoKey * InteropResolver::openCer
 
 	safeBuffer fname;
 	char * u = XMLString::transcode(uri);
-	ArrayJanitor<char> j_u(u);
 	fname.sbTranscodeIn(mp_baseURI);
 	fname.sbStrcatIn("/");
 	fname.sbStrcatIn(u);
+	XSEC_RELEASE_XMLCH(u);
 
 #if defined(_WIN32)
 	reverseSlash(fname);
@@ -544,7 +544,6 @@ XSECCryptoKey * InteropResolver::resolve
 		OpenSSLCryptoBase64 b64;
 		char * transb64cert = XMLString::transcode(b64cert);
 		unsigned char * x509buf = new unsigned char[strlen(transb64cert)];
-		ArrayJanitor<char> j_transb64cert(transb64cert);
 		ArrayJanitor<unsigned char> j_x509buf(x509buf);
 
 		int x509bufLen;
@@ -554,6 +553,7 @@ XSECCryptoKey * InteropResolver::resolve
 		b64.decodeInit();
 		x509bufLen = b64.decode((unsigned char *) transb64cert, (unsigned int) strlen(transb64cert), x509buf, (unsigned int) strlen(transb64cert));
 		x509bufLen += b64.decodeFinish(&x509buf[x509bufLen], (unsigned int) strlen(transb64cert) - x509bufLen);
+		XSEC_RELEASE_XMLCH(transb64cert);
 
 		if (x509bufLen > 0) {
 #if defined(XSEC_OPENSSL_D2IX509_CONST_BUFFER)
@@ -572,7 +572,6 @@ XSECCryptoKey * InteropResolver::resolve
 		// Now the CRL
 		char * transb64crl = XMLString::transcode(b64crl);
 		unsigned char * crlbuf = new unsigned char[strlen(transb64crl)];
-		ArrayJanitor<char> j_transb64crl(transb64crl);
 		ArrayJanitor<unsigned char> j_crlbuf(crlbuf);
 
 		int crlbufLen;
@@ -582,6 +581,7 @@ XSECCryptoKey * InteropResolver::resolve
 		b64.decodeInit();
 		crlbufLen = b64.decode((unsigned char*) transb64crl, (unsigned int) strlen(transb64crl), crlbuf, (unsigned int) strlen(transb64crl));
 		crlbufLen += b64.decodeFinish(&crlbuf[crlbufLen], (unsigned int) strlen(transb64crl) - crlbufLen);
+		XSEC_RELEASE_XMLCH(transb64crl);
 
 		if (crlbufLen > 0) {
 #if defined(XSEC_OPENSSL_D2IX509_CONST_BUFFER)

Modified: xml/security/trunk/c/src/tools/checksig/checksig.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/tools/checksig/checksig.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/tools/checksig/checksig.cpp (original)
+++ xml/security/trunk/c/src/tools/checksig/checksig.cpp Wed Jun 23 13:31:56 2010
@@ -451,7 +451,6 @@ int evaluate(int argc, char ** argv) {
 		// The last "\\" must prefix the filename
 		baseURI[lastSlash + 1] = '\0';
 		XMLCh * baseURIXMLCh = XMLString::transcode(baseURI);
-		ArrayJanitor<XMLCh> j_baseURIXMLCh(baseURIXMLCh);
 
 		XMLUri uri(MAKE_UNICODE_STRING(baseURI));
 
@@ -473,6 +472,7 @@ int evaluate(int argc, char ** argv) {
 
 		}
 #endif
+		XSEC_RELEASE_XMLCH(baseURIXMLCh);
 
 	}
 

Modified: xml/security/trunk/c/src/tools/cipher/cipher.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/tools/cipher/cipher.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/tools/cipher/cipher.cpp (original)
+++ xml/security/trunk/c/src/tools/cipher/cipher.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 The Apache Software Foundation.
+ * Copyright 2003-2010 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.
@@ -656,9 +656,9 @@ int evaluate(int argc, char ** argv) {
 				baseURI[lastSlash + 1] = '\0';
 
 				XMLCh * uriT = XMLString::transcode(baseURI);
-				ArrayJanitor<XMLCh> j_uriT(uriT);
 
 				XencInteropResolver ires(doc, &(uriT[8]));
+				XSEC_RELEASE_XMLCH(uriT);
 				cipher->setKeyInfoResolver(&ires);
 
 			}

Modified: xml/security/trunk/c/src/tools/xklient/xklient.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/tools/xklient/xklient.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/tools/xklient/xklient.cpp (original)
+++ xml/security/trunk/c/src/tools/xklient/xklient.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -4255,9 +4255,9 @@ int doRequest(int argc, char ** argv, in
 				request->setNonce(r->getNonce());
 				request->setOriginalRequestId(request->getId());
 				XMLCh * myId = generateId();
-				ArrayJanitor<XMLCh> j_myId(myId);
 
 				request->setId(myId);
+				XSEC_RELEASE_XMLCH(myId);
 
 				responseDoc->release();
 				responseDoc = req.doRequest(doc);

Modified: xml/security/trunk/c/src/utils/XSECAutoPtr.hpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/XSECAutoPtr.hpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/XSECAutoPtr.hpp (original)
+++ xml/security/trunk/c/src/utils/XSECAutoPtr.hpp Wed Jun 23 13:31:56 2010
@@ -61,7 +61,7 @@ public:
     }
 
     ~XSECAutoPtrChar() {
-        xercesc::XMLString::release(&m_buf);
+        XSEC_RELEASE_XMLCH(m_buf);
     }
 
     const char* get() const {
@@ -98,7 +98,7 @@ public:
     }
 
     ~XSECAutoPtrXMLCh() {
-        xercesc::XMLString::release(&m_buf);
+        XSEC_RELEASE_XMLCH(m_buf);
     }
 
     const XMLCh* get() const {

Modified: xml/security/trunk/c/src/utils/XSECDOMUtils.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/XSECDOMUtils.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/XSECDOMUtils.cpp (original)
+++ xml/security/trunk/c/src/utils/XSECDOMUtils.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -711,7 +711,6 @@ XMLCh * cleanURIEscapes(const XMLCh * st
 	// Taken from Xerces XMLURI.cpp
 
 	XMLCh * retPath = XMLString::replicate(str);
-	ArrayJanitor<XMLCh> j_retPath(retPath);
 
 	xsecsize_t len = XMLString::stringLen(retPath);
 	int percentIndex = XMLString::indexOf(retPath, chPercent, 0);
@@ -721,7 +720,7 @@ XMLCh * cleanURIEscapes(const XMLCh * st
 		if (percentIndex+2 >= len ||
 			!isHexDigit(retPath[percentIndex+1]) ||
 			!isHexDigit(retPath[percentIndex+2]))
-
+		    XSEC_RELEASE_XMLCH(retPath);
 			throw XSECException(XSECException::ErrorOpeningURI,
 					"Bad escape sequence in URI");
 
@@ -739,7 +738,6 @@ XMLCh * cleanURIEscapes(const XMLCh * st
 
 	}
 
-	j_retPath.release();
 	return retPath;
 
 }

Modified: xml/security/trunk/c/src/utils/XSECSOAPRequestorSimple.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/XSECSOAPRequestorSimple.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/XSECSOAPRequestorSimple.cpp (original)
+++ xml/security/trunk/c/src/utils/XSECSOAPRequestorSimple.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 The Apache Software Foundation.
+ * Copyright 2004-2010 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.
@@ -31,6 +31,8 @@
 #include <xsec/utils/XSECSOAPRequestorSimple.hpp>
 #include <xsec/xkms/XKMSConstants.hpp>
 
+#include "../utils/XSECAutoPtr.hpp"
+
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -308,11 +310,10 @@ DOMDocument * XSECSOAPRequestorSimple::p
 
 		retDoc->release();
 
-		char * msg = XMLString::transcode(sb.rawXMLChBuffer());
-		ArrayJanitor<char> j_msg(msg);
+		XSECAutoPtrChar msg(sb.rawXMLChBuffer());
 
 		throw XSECException(XSECException::HTTPURIInputStreamError,
-							msg);
+							msg.get());
 	}
 
 

Modified: xml/security/trunk/c/src/utils/XSECSafeBuffer.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/XSECSafeBuffer.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/XSECSafeBuffer.cpp (original)
+++ xml/security/trunk/c/src/utils/XSECSafeBuffer.cpp Wed Jun 23 13:31:56 2010
@@ -33,10 +33,8 @@
 #include <xsec/transformers/TXFMBase.hpp>
 
 #include <xercesc/util/XMLUniDefs.hpp>
-#include <xercesc/util/Janitor.hpp>
 
 XSEC_USING_XERCES(XMLString);
-XSEC_USING_XERCES(ArrayJanitor);
 
 // Standard includes
 
@@ -653,8 +651,8 @@ void safeBuffer::sbXMLChCat8(const char 
 	checkBufferType(BUFFER_UNICODE);
 
 	XMLCh * toAdd = transcodeFromUTF8((const unsigned char *) str);
-	ArrayJanitor<XMLCh> j_toAdd(toAdd);
 	sbXMLChCat(toAdd);
+	XSEC_RELEASE_XMLCH(toAdd);
 
 }
 

Modified: xml/security/trunk/c/src/utils/unixutils/XSECBinHTTPURIInputStream.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/unixutils/XSECBinHTTPURIInputStream.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/unixutils/XSECBinHTTPURIInputStream.cpp (original)
+++ xml/security/trunk/c/src/utils/unixutils/XSECBinHTTPURIInputStream.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -71,6 +71,8 @@
 #include <xsec/framework/XSECError.hpp>
 #include <xsec/utils/unixutils/XSECBinHTTPURIInputStream.hpp>
 
+#include "../../utils/XSECAutoPtr.hpp"
+
 #include <xercesc/util/XMLNetAccessor.hpp>
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLExceptMsgs.hpp>
@@ -86,24 +88,16 @@ int XSECBinHTTPURIInputStream::getSocket
     //   and transcode them back to ASCII.
     //
     const XMLCh*        hostName = urlSource.getHost();
-    char*               hostNameAsCharStar = XMLString::transcode(hostName);
-    ArrayJanitor<char>  janBuf1(hostNameAsCharStar);
+    XSECAutoPtrChar     hostNameAsCharStar(hostName);
 
     const XMLCh*        path = urlSource.getPath();
-    char*               pathAsCharStar = XMLString::transcode(path);
-    ArrayJanitor<char>  janBuf2(pathAsCharStar);
+    XSECAutoPtrChar     pathAsCharStar(path);
 
     const XMLCh*        fragment = urlSource.getFragment();
-    char*               fragmentAsCharStar = 0;
-    if (fragment)
-        fragmentAsCharStar = XMLString::transcode(fragment);
-    ArrayJanitor<char>  janBuf3(fragmentAsCharStar);
+    XSECAutoPtrChar     fragmentAsCharStar(fragment);
 
     const XMLCh*        query = urlSource.getQueryString();
-    char*               queryAsCharStar = 0;
-    if (query)
-        queryAsCharStar = XMLString::transcode(query);
-    ArrayJanitor<char>  janBuf4(queryAsCharStar);
+    XSECAutoPtrChar     queryAsCharStar(query);
 
     unsigned short      portNumber = (unsigned short) urlSource.getPort();
 	if (portNumber == USHRT_MAX)
@@ -116,9 +110,9 @@ int XSECBinHTTPURIInputStream::getSocket
     struct sockaddr_in  sa;
 
 
-    if ((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL)
+    if ((hostEntPtr = gethostbyname(hostNameAsCharStar.get())) == NULL)
     {
-        unsigned long  numAddress = inet_addr(hostNameAsCharStar);
+        unsigned long  numAddress = inet_addr(hostNameAsCharStar.get());
         if (numAddress == 0)
         {
             ThrowXML(NetAccessorException,
@@ -157,25 +151,25 @@ int XSECBinHTTPURIInputStream::getSocket
     // To do:  We should really support http 1.1.  This implementation
     //         is weak.
     strcpy(fBuffer, "GET ");
-    strcat(fBuffer, pathAsCharStar);
+    strcat(fBuffer, pathAsCharStar.get());
 
-    if (queryAsCharStar != 0)
+    if (queryAsCharStar.get() != 0)
     {
         size_t n = strlen(fBuffer);
         fBuffer[n] = XERCES_CPP_NAMESPACE_QUALIFIER chQuestion;
         fBuffer[n+1] = XERCES_CPP_NAMESPACE_QUALIFIER chNull;
-        strcat(fBuffer, queryAsCharStar);
+        strcat(fBuffer, queryAsCharStar.get());
     }
 
-    if (fragmentAsCharStar != 0)
+    if (fragmentAsCharStar.get() != 0)
     {
-        strcat(fBuffer, fragmentAsCharStar);
+        strcat(fBuffer, fragmentAsCharStar.get());
     }
     strcat(fBuffer, " HTTP/1.0\r\n");
 
 
     strcat(fBuffer, "Host: ");
-    strcat(fBuffer, hostNameAsCharStar);
+    strcat(fBuffer, hostNameAsCharStar.get());
     if (portNumber != 80)
     {
         int i = strlen(fBuffer);
@@ -273,10 +267,9 @@ int XSECBinHTTPURIInputStream::getSocket
 		redirectBuf[q] = '\0';
 
 		// Try to find this location
-		XMLCh * redirectBufTrans = XMLString::transcode(redirectBuf);
-		ArrayJanitor<XMLCh> j_redirectBufTrans(redirectBufTrans);
+        XSECAutoPtrXMLCh redirectBufTrans(redirectBuf);
 
-		return getSocketHandle(XMLUri(redirectBufTrans));
+		return getSocketHandle(XMLUri(redirectBufTrans.get()));
 	}
 
     else if (httpResponse != 200)

Modified: xml/security/trunk/c/src/utils/unixutils/XSECSOAPRequestorSimpleUnix.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/unixutils/XSECSOAPRequestorSimpleUnix.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/unixutils/XSECSOAPRequestorSimpleUnix.cpp (original)
+++ xml/security/trunk/c/src/utils/unixutils/XSECSOAPRequestorSimpleUnix.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 The Apache Software Foundation.
+ * Copyright 2004-2010 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.
@@ -41,6 +41,8 @@
 #include <xsec/utils/XSECSafeBuffer.hpp>
 #include <xsec/framework/XSECError.hpp>
 
+#include "../../utils/XSECAutoPtr.hpp"
+
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/util/XMLNetAccessor.hpp>
 #include <xercesc/util/XMLString.hpp>
@@ -81,24 +83,16 @@ DOMDocument * XSECSOAPRequestorSimple::d
     //   and transcode them back to ASCII.
     //
     const XMLCh*        hostName = m_uri.getHost();
-    char*               hostNameAsCharStar = XMLString::transcode(hostName);
-    ArrayJanitor<char>  janBuf1(hostNameAsCharStar);
+    XSECAutoPtrChar     hostNameAsCharStar(hostName);
 
     const XMLCh*        path = m_uri.getPath();
-    char*               pathAsCharStar = XMLString::transcode(path);
-    ArrayJanitor<char>  janBuf2(pathAsCharStar);
+    XSECAutoPtrChar     pathAsCharStar(path);
 
     const XMLCh*        fragment = m_uri.getFragment();
-    char*               fragmentAsCharStar = 0;
-    if (fragment)
-        fragmentAsCharStar = XMLString::transcode(fragment);
-    ArrayJanitor<char>  janBuf3(fragmentAsCharStar);
+    XSECAutoPtrChar     fragmentAsCharStar(fragment);
 
     const XMLCh*        query = m_uri.getQueryString();
-    char*               queryAsCharStar = 0;
-    if (query)
-        queryAsCharStar = XMLString::transcode(query);
-    ArrayJanitor<char>  janBuf4(queryAsCharStar);		
+    XSECAutoPtrChar     queryAsCharStar(query);
 
     unsigned short      portNumber = (unsigned short) m_uri.getPort();
 
@@ -113,9 +107,9 @@ DOMDocument * XSECSOAPRequestorSimple::d
     struct sockaddr_in  sa;
 
 
-    if ((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL)
+    if ((hostEntPtr = gethostbyname(hostNameAsCharStar.get())) == NULL)
     {
-        unsigned long  numAddress = inet_addr(hostNameAsCharStar);
+        unsigned long  numAddress = inet_addr(hostNameAsCharStar.get());
         if (numAddress == 0)
         {
             ThrowXML(NetAccessorException,
@@ -157,18 +151,18 @@ DOMDocument * XSECSOAPRequestorSimple::d
     memset(fBuffer, 0, sizeof(fBuffer));
 
     strcpy(fBuffer, "POST ");
-    strcat(fBuffer, pathAsCharStar);
+    strcat(fBuffer, pathAsCharStar.get());
 
-    if (queryAsCharStar != 0)
+    if (queryAsCharStar.get() != 0)
     {
         // Tack on a ? before the fragment
         strcat(fBuffer,"?");
-        strcat(fBuffer, queryAsCharStar);
+        strcat(fBuffer, queryAsCharStar.get());
     }
 
-    if (fragmentAsCharStar != 0)
+    if (fragmentAsCharStar.get() != 0)
     {
-        strcat(fBuffer, fragmentAsCharStar);
+        strcat(fBuffer, fragmentAsCharStar.get());
     }
     strcat(fBuffer, " HTTP/1.0\r\n");
 
@@ -176,7 +170,7 @@ DOMDocument * XSECSOAPRequestorSimple::d
 
 
     strcat(fBuffer, "Host: ");
-    strcat(fBuffer, hostNameAsCharStar);
+    strcat(fBuffer, hostNameAsCharStar.get());
     if (portNumber != 80)
     {
         int i = strlen(fBuffer);
@@ -310,9 +304,9 @@ DOMDocument * XSECSOAPRequestorSimple::d
 		return doRequest(request);
 #endif
 		XMLCh * recString = XMLString::transcode(redirectBuf);
-		ArrayJanitor<XMLCh> j_recString(recString);
 
 		XSECSOAPRequestorSimple recurse(recString);
+		XSEC_RELEASE_XMLCH(recString);
 		return recurse.doRequest(request);
 
 	}

Modified: xml/security/trunk/c/src/utils/unixutils/XSECURIResolverGenericUnix.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/unixutils/XSECURIResolverGenericUnix.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/unixutils/XSECURIResolverGenericUnix.cpp (original)
+++ xml/security/trunk/c/src/utils/unixutils/XSECURIResolverGenericUnix.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -79,6 +79,8 @@ XERCES_CPP_NAMESPACE_USE
 #include <xsec/utils/XSECDOMUtils.hpp>
 #include <xsec/utils/unixutils/XSECBinHTTPURIInputStream.hpp>
 
+#include "../../utils/XSECAutoPtr.hpp"
+
 static const XMLCh gFileScheme[] = {
 
 	XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f,
@@ -155,27 +157,25 @@ BinInputStream * XSECURIResolverGenericU
 #if XERCES_VERSION_MAJOR == 2 && XERCES_VERSION_MINOR < 3
 
 		// XMLUri relative paths are broken, so we need to strip out ".."
-		XMLCh * b = XMLString::replicate(mp_baseURI);
-		ArrayJanitor<XMLCh> j_b(b);
-		XMLCh * r = XMLString::replicate(uri);
-		ArrayJanitor<XMLCh> j_r(r);
+        XSECAutoPtrXMLCh b(mp_baseURI);
+        XSECAutoPtrXMLCh r(uri);
 
 		int index = 0;
-		while (XMLString::startsWith(&(r[index]), DOTDOT_SLASH)) {
+		while (XMLString::startsWith(&(r.get()[index]), DOTDOT_SLASH)) {
 
 			// Strip the last segment of the base
 
-			int lastIndex = XMLString::lastIndexOf(b, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash);
+			int lastIndex = XMLString::lastIndexOf(b.get(), XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash);
 			if (lastIndex > 0)
-				b[lastIndex] = 0;
+			    const_cast<XMLCh*>(b.get())[lastIndex] = 0;
 
 			index += 3;
 
 		}
 
-		XSECnew(turi, XMLUri(b));
+		XSECnew(turi, XMLUri(b.get()));
 		Janitor<XMLUri> j_turi(turi);
-		XSECnew(xmluri, XMLUri(turi, &(r[index])));
+		XSECnew(xmluri, XMLUri(turi, &(r.get()[index])));
 
 #else
 		XSECnew(turi, XMLUri(mp_baseURI));
@@ -203,11 +203,12 @@ BinInputStream * XSECURIResolverGenericU
 
 			// Clean hex escapes
 			XMLCh * realPath = cleanURIEscapes(xmluri->getPath());
-			ArrayJanitor<XMLCh> j_realPath(realPath);
 
 			// Localhost
 
             BinFileInputStream* retStrm = new BinFileInputStream(realPath);
+            XSEC_RELEASE_XMLCH(realPath);
+
             if (!retStrm->getIsOpen())
             {
                 delete retStrm;

Modified: xml/security/trunk/c/src/utils/winutils/XSECBinHTTPURIInputStream.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/winutils/XSECBinHTTPURIInputStream.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/winutils/XSECBinHTTPURIInputStream.cpp (original)
+++ xml/security/trunk/c/src/utils/winutils/XSECBinHTTPURIInputStream.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -47,7 +47,6 @@
 #include <xercesc/util/XMLNetAccessor.hpp>
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLExceptMsgs.hpp>
-#include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
 XERCES_CPP_NAMESPACE_USE
@@ -55,6 +54,8 @@ XERCES_CPP_NAMESPACE_USE
 #include <xsec/utils/winutils/XSECBinHTTPURIInputStream.hpp>
 #include <xsec/framework/XSECError.hpp>
 
+#include "../../utils/XSECAutoPtr.hpp"
+
 static HMODULE gWinsockLib = NULL;
 static LPFN_GETHOSTBYNAME gWSgethostbyname = NULL;
 static LPFN_INET_ADDR gWSinet_addr = NULL;
@@ -227,24 +228,16 @@ unsigned int XSECBinHTTPURIInputStream::
     //   and transcode them back to ASCII.
     //
     const XMLCh*        hostName = urlSource.getHost();
-    char*               hostNameAsCharStar = XMLString::transcode(hostName);
-    ArrayJanitor<char>  janBuf1(hostNameAsCharStar);
+    XSECAutoPtrChar     hostNameAsCharStar(hostName);
 
     const XMLCh*        path = urlSource.getPath();
-    char*               pathAsCharStar = XMLString::transcode(path);
-    ArrayJanitor<char>  janBuf2(pathAsCharStar);
+    XSECAutoPtrChar     pathAsCharStar(path);
 
     const XMLCh*        fragment = urlSource.getFragment();
-    char*               fragmentAsCharStar = 0;
-    if (fragment)
-        fragmentAsCharStar = XMLString::transcode(fragment);
-    ArrayJanitor<char>  janBuf3(fragmentAsCharStar);
+    XSECAutoPtrChar     fragmentAsCharStar(fragment);
 
     const XMLCh*        query = urlSource.getQueryString();
-    char*               queryAsCharStar = 0;
-    if (query)
-        queryAsCharStar = XMLString::transcode(query);
-    ArrayJanitor<char>  janBuf4(queryAsCharStar);
+    XSECAutoPtrChar     queryAsCharStar(query);
 
     unsigned short      portNumber = (unsigned short) urlSource.getPort();
 
@@ -259,9 +252,9 @@ unsigned int XSECBinHTTPURIInputStream::
     struct sockaddr_in  sa;
 
 
-    if ((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL)
+    if ((hostEntPtr = gethostbyname(hostNameAsCharStar.get())) == NULL)
     {
-        unsigned long  numAddress = inet_addr(hostNameAsCharStar);
+        unsigned long  numAddress = inet_addr(hostNameAsCharStar.get());
         if (numAddress == INADDR_NONE)
         {
             // Call WSAGetLastError() to get the error number.
@@ -310,24 +303,24 @@ unsigned int XSECBinHTTPURIInputStream::
     memset(fBuffer, 0, sizeof(fBuffer));
 
     strcpy(fBuffer, "GET ");
-    strcat(fBuffer, pathAsCharStar);
+    strcat(fBuffer, pathAsCharStar.get());
 
-    if (queryAsCharStar != 0)
+    if (queryAsCharStar.get() != 0)
     {
         // Tack on a ? before the fragment
         strcat(fBuffer,"?");
-        strcat(fBuffer, queryAsCharStar);
+        strcat(fBuffer, queryAsCharStar.get());
     }
 
-    if (fragmentAsCharStar != 0)
+    if (fragmentAsCharStar.get() != 0)
     {
-        strcat(fBuffer, fragmentAsCharStar);
+        strcat(fBuffer, fragmentAsCharStar.get());
     }
     strcat(fBuffer, " HTTP/1.0\r\n");
 
 
     strcat(fBuffer, "Host: ");
-    strcat(fBuffer, hostNameAsCharStar);
+    strcat(fBuffer, hostNameAsCharStar.get());
     if (portNumber != 80)
     {
         strcat(fBuffer, ":");
@@ -447,10 +440,9 @@ unsigned int XSECBinHTTPURIInputStream::
 		redirectBuf[q] = '\0';
 
 		// Try to find this location
-		XMLCh * redirectBufTrans = XMLString::transcode(redirectBuf);
-		ArrayJanitor<XMLCh> j_redirectBuf(redirectBufTrans);
+		XSECAutoPtrXMLCh redirectBufTrans(redirectBuf);
 
-		return getSocketHandle(XMLUri(redirectBufTrans));
+		return getSocketHandle(XMLUri(redirectBufTrans.get()));
 	}
     else if (httpResponse != 200)
     {

Modified: xml/security/trunk/c/src/utils/winutils/XSECSOAPRequestorSimpleWin32.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/winutils/XSECSOAPRequestorSimpleWin32.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/winutils/XSECSOAPRequestorSimpleWin32.cpp (original)
+++ xml/security/trunk/c/src/utils/winutils/XSECSOAPRequestorSimpleWin32.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 The Apache Software Foundation.
+ * Copyright 2004-2010 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.
@@ -33,6 +33,8 @@
 #include <xsec/utils/XSECDOMUtils.hpp>
 #include <xsec/xkms/XKMSConstants.hpp>
 
+#include "../../utils/XSECAutoPtr.hpp"
+
 #define _WINSOCKAPI_
 
 #define INCL_WINSOCK_API_TYPEDEFS 1
@@ -52,7 +54,6 @@
 #include <xercesc/util/XMLNetAccessor.hpp>
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLExceptMsgs.hpp>
-#include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
 XERCES_CPP_NAMESPACE_USE
@@ -79,7 +80,6 @@ DOMDocument * XSECSOAPRequestorSimple::d
 
 
 	char * content = wrapAndSerialise(request);
-	ArrayJanitor<char> janContent(content);
 
 	// First we need to serialise
 
@@ -92,24 +92,16 @@ DOMDocument * XSECSOAPRequestorSimple::d
     //   and transcode them back to ASCII.
     //
     const XMLCh*        hostName = m_uri.getHost();
-    char*               hostNameAsCharStar = XMLString::transcode(hostName);
-    ArrayJanitor<char>  janBuf1(hostNameAsCharStar);
+    XSECAutoPtrChar     hostNameAsCharStar(hostName);
 
     const XMLCh*        path = m_uri.getPath();
-    char*               pathAsCharStar = XMLString::transcode(path);
-    ArrayJanitor<char>  janBuf2(pathAsCharStar);
+    XSECAutoPtrChar     pathAsCharStar(path);
 
     const XMLCh*        fragment = m_uri.getFragment();
-    char*               fragmentAsCharStar = 0;
-    if (fragment)
-        fragmentAsCharStar = XMLString::transcode(fragment);
-    ArrayJanitor<char>  janBuf3(fragmentAsCharStar);
+    XSECAutoPtrChar     fragmentAsCharStar(fragment);
 
     const XMLCh*        query = m_uri.getQueryString();
-    char*               queryAsCharStar = 0;
-    if (query)
-        queryAsCharStar = XMLString::transcode(query);
-    ArrayJanitor<char>  janBuf4(queryAsCharStar);		
+    XSECAutoPtrChar     queryAsCharStar(query);
 
     unsigned short      portNumber = (unsigned short) m_uri.getPort();
 
@@ -124,11 +116,12 @@ DOMDocument * XSECSOAPRequestorSimple::d
     struct sockaddr_in  sa;
 
 
-    if ((hostEntPtr = XSECBinHTTPURIInputStream::gethostbyname(hostNameAsCharStar)) == NULL)
+    if ((hostEntPtr = XSECBinHTTPURIInputStream::gethostbyname(hostNameAsCharStar.get())) == NULL)
     {
-        unsigned long  numAddress = XSECBinHTTPURIInputStream::inet_addr(hostNameAsCharStar);
+        unsigned long  numAddress = XSECBinHTTPURIInputStream::inet_addr(hostNameAsCharStar.get());
         if (numAddress == INADDR_NONE)
         {
+            XSEC_RELEASE_XMLCH(content);
             // Call WSAGetLastError() to get the error number.
 	        throw XSECException(XSECException::HTTPURIInputStreamError,
 							"Error reported resolving IP address");
@@ -137,6 +130,7 @@ DOMDocument * XSECSOAPRequestorSimple::d
                 XSECBinHTTPURIInputStream::gethostbyaddr((const char *) &numAddress,
                               sizeof(unsigned long), AF_INET)) == NULL)
         {
+            XSEC_RELEASE_XMLCH(content);
             // Call WSAGetLastError() to get the error number.
 	        throw XSECException(XSECException::HTTPURIInputStreamError,
 							"Error reported resolving IP address");
@@ -151,6 +145,7 @@ DOMDocument * XSECSOAPRequestorSimple::d
     SOCKET s = XSECBinHTTPURIInputStream::socket(hostEntPtr->h_addrtype, SOCK_STREAM, 0);
     if (s == INVALID_SOCKET)
     {
+        XSEC_RELEASE_XMLCH(content);
         // Call WSAGetLastError() to get the error number.
         throw XSECException(XSECException::HTTPURIInputStreamError,
 							"Error reported creating socket");
@@ -159,6 +154,7 @@ DOMDocument * XSECSOAPRequestorSimple::d
     if (XSECBinHTTPURIInputStream::connect((unsigned short) s, 
 		(struct sockaddr *) &sa, sizeof(sa)) == SOCKET_ERROR)
     {
+        XSEC_RELEASE_XMLCH(content);
         // Call WSAGetLastError() to get the error number.
         throw XSECException(XSECException::HTTPURIInputStreamError,
 							"Error reported connecting to socket");
@@ -176,18 +172,18 @@ DOMDocument * XSECSOAPRequestorSimple::d
     memset(fBuffer, 0, sizeof(fBuffer));
 
     strcpy(fBuffer, "POST ");
-    strcat(fBuffer, pathAsCharStar);
+    strcat(fBuffer, pathAsCharStar.get());
 
-    if (queryAsCharStar != 0)
+    if (queryAsCharStar.get() != 0)
     {
         // Tack on a ? before the fragment
         strcat(fBuffer,"?");
-        strcat(fBuffer, queryAsCharStar);
+        strcat(fBuffer, queryAsCharStar.get());
     }
 
-    if (fragmentAsCharStar != 0)
+    if (fragmentAsCharStar.get() != 0)
     {
-        strcat(fBuffer, fragmentAsCharStar);
+        strcat(fBuffer, fragmentAsCharStar.get());
     }
     strcat(fBuffer, " HTTP/1.0\r\n");
 
@@ -195,7 +191,7 @@ DOMDocument * XSECSOAPRequestorSimple::d
 
 
     strcat(fBuffer, "Host: ");
-    strcat(fBuffer, hostNameAsCharStar);
+    strcat(fBuffer, hostNameAsCharStar.get());
     if (portNumber != 80)
     {
         strcat(fBuffer, ":");
@@ -223,6 +219,7 @@ DOMDocument * XSECSOAPRequestorSimple::d
     if ((aLent = XSECBinHTTPURIInputStream::send((unsigned short) s, 
 		fBuffer, lent, 0)) != lent)
     {
+        XSEC_RELEASE_XMLCH(content);
         // Call WSAGetLastError() to get the error number.
         throw XSECException(XSECException::HTTPURIInputStreamError,
 							"Error reported writing to socket");
@@ -234,10 +231,12 @@ DOMDocument * XSECSOAPRequestorSimple::d
     if ((aLent = XSECBinHTTPURIInputStream::send((unsigned short) s, 
 		content, lent, 0)) != lent)
     {
+        XSEC_RELEASE_XMLCH(content);
         // Call WSAGetLastError() to get the error number.
         throw XSECException(XSECException::HTTPURIInputStreamError,
 							"Error reported writing to socket");
     }
+    XSEC_RELEASE_XMLCH(content);
 
     //
     // get the response, check the http header for errors from the server.
@@ -339,7 +338,6 @@ DOMDocument * XSECSOAPRequestorSimple::d
 		redirectBuf[q] = '\0';
 		
 		// Try to find this location
-		m_uri;
 		m_uri = XMLUri(XMLString::transcode(redirectBuf));
 
 		return doRequest(request);

Modified: xml/security/trunk/c/src/utils/winutils/XSECURIResolverGenericWin32.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/utils/winutils/XSECURIResolverGenericWin32.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/utils/winutils/XSECURIResolverGenericWin32.cpp (original)
+++ xml/security/trunk/c/src/utils/winutils/XSECURIResolverGenericWin32.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -82,6 +82,8 @@ XERCES_CPP_NAMESPACE_USE
 #include <xsec/utils/winutils/XSECBinHTTPURIInputStream.hpp>
 #include <xsec/utils/XSECDOMUtils.hpp>
 
+#include "../../utils/XSECAutoPtr.hpp"
+
 static const XMLCh gFileScheme[] = {
 
 	chLatin_f,
@@ -125,7 +127,7 @@ mp_baseURI(NULL) {
 XSECURIResolverGenericWin32::~XSECURIResolverGenericWin32() {
 
 	if (mp_baseURI != NULL)
-		XMLString::release(&mp_baseURI);
+	    XSEC_RELEASE_XMLCH(mp_baseURI);
 
 }
 
@@ -157,27 +159,25 @@ BinInputStream * XSECURIResolverGenericW
 		// XMLUri relative paths are broken, so we need to strip out ".."
 		// Doesn't fix the whole problem, but gets us somewhere
 
-		XMLCh * b = XMLString::replicate(mp_baseURI);
-		ArrayJanitor<XMLCh> j_b(b);
-		XMLCh * r = XMLString::replicate(uri);
-		ArrayJanitor<XMLCh> j_r(r);
+		XSECAutoPtrXMLCh b(mp_baseURI);
+		XSECAutoPtrXMLCh r(uri);
 
 		int index = 0;
-		while (XMLString::startsWith(&(r[index]), DOTDOT_SLASH)) {
+		while (XMLString::startsWith(&(r.get()[index]), DOTDOT_SLASH)) {
 
 			// Strip the last segment of the base
 
-			int lastIndex = XMLString::lastIndexOf(b, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash);
+			int lastIndex = XMLString::lastIndexOf(b.get(), XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash);
 			if (lastIndex > 0)
-				b[lastIndex] = 0;
+				const_cast<XMLCh*>(b.get())[lastIndex] = 0;
 
 			index += 3;
 
 		}
 
-		XSECnew(turi, XMLUri(b));
+		XSECnew(turi, XMLUri(b.get()));
 		Janitor<XMLUri> j_turi(turi);
-		XSECnew(xmluri, XMLUri(turi, &(r[index])));
+		XSECnew(xmluri, XMLUri(turi, &(r.get()[index])));
 
 #else
 		turi = new XMLUri(mp_baseURI);
@@ -205,11 +205,12 @@ BinInputStream * XSECURIResolverGenericW
 
 			// Clean hex escapes
 			XMLCh * realPath = cleanURIEscapes(xmluri->getPath());
-			ArrayJanitor<XMLCh> j_realPath(realPath);
 
 			// Localhost
 
             BinFileInputStream* retStrm = new BinFileInputStream(realPath);
+            XSEC_RELEASE_XMLCH(realPath);
+
             if (!retStrm->getIsOpen())
             {
                 delete retStrm;
@@ -272,7 +273,7 @@ XSECURIResolver * XSECURIResolverGeneric
 void XSECURIResolverGenericWin32::setBaseURI(const XMLCh * uri) {
 
 	if (mp_baseURI != NULL)
-		XMLString::release(&mp_baseURI);
+	    XSEC_RELEASE_XMLCH(mp_baseURI);
 
 	mp_baseURI = XMLString::replicate(uri);
 

Modified: xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp (original)
+++ xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 The Apache Software Foundation.
+ * Copyright 2003-2010 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.
@@ -36,6 +36,8 @@
 #include <xsec/framework/XSECError.hpp>
 #include <xsec/utils/XSECDOMUtils.hpp>
 
+#include "../../utils/XSECAutoPtr.hpp"
+
 #include "XENCAlgorithmHandlerDefault.hpp"
 
 #include <xercesc/dom/DOM.hpp>
@@ -595,10 +597,9 @@ unsigned int XENCAlgorithmHandlerDefault
 		unsigned int sz = 0;
 		if (oaepParams != NULL) {
 
-			char * oaepParamsStr = XMLString::transcode(oaepParams);
-			ArrayJanitor<char> j_oaepParamsStr(oaepParamsStr);
+			XSECAutoPtrChar oaepParamsStr(oaepParams);
 
-			unsigned int bufLen = (unsigned int) strlen(oaepParamsStr);
+			unsigned int bufLen = (unsigned int) strlen(oaepParamsStr.get());
 			oaepParamsBuf = new unsigned char[bufLen];
 			ArrayJanitor<unsigned char> j_oaepParamsBuf(oaepParamsBuf);
 
@@ -607,7 +608,7 @@ unsigned int XENCAlgorithmHandlerDefault
 			Janitor<XSECCryptoBase64> j_b64(b64);
 
 			b64->decodeInit();
-			sz = b64->decode((unsigned char *) oaepParamsStr, bufLen, oaepParamsBuf, bufLen);
+			sz = b64->decode((unsigned char *) oaepParamsStr.get(), bufLen, oaepParamsBuf, bufLen);
 			sz += b64->decodeFinish(&oaepParamsBuf[sz], bufLen - sz);
 
 			rsa->setOAEPparams(oaepParamsBuf, sz);
@@ -800,10 +801,9 @@ bool XENCAlgorithmHandlerDefault::doRSAE
 			sz += b64->encodeFinish(&oaepParamsB64[sz], (oaepParamsLen * 2)  - sz);
 			oaepParamsB64[sz] = '\0';
 
-			XMLCh * xBuf = XMLString::transcode((char *) oaepParamsB64);
-			ArrayJanitor<XMLCh> j_xBuf(xBuf);
+			XSECAutoPtrXMLCh xBuf((char *) oaepParamsB64);
 
-			encryptionMethod->setOAEPparams(xBuf);
+			encryptionMethod->setOAEPparams(xBuf.get());
 
 		}
 

Modified: xml/security/trunk/c/src/xenc/impl/XENCCipherImpl.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xenc/impl/XENCCipherImpl.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/xenc/impl/XENCCipherImpl.cpp (original)
+++ xml/security/trunk/c/src/xenc/impl/XENCCipherImpl.cpp Wed Jun 23 13:31:56 2010
@@ -287,7 +287,7 @@ DOMDocumentFragment * XENCCipherImpl::de
 
     char* trailer = transcodeToUTF8(sb.rawXMLChBuffer());
     sbt.sbStrcatIn(trailer);
-    XMLString::release(&trailer);
+    XSEC_RELEASE_XMLCH(trailer);
 
     // Now we need to parse the document
     XercesDOMParser* parser = NULL;
@@ -306,11 +306,11 @@ DOMDocumentFragment * XENCCipherImpl::de
     catch (...) {
         delete memIS;
         delete parser;
-        XMLString::release(&prefix);
+        XSEC_RELEASE_XMLCH(prefix);
         throw;
     }
 
-    XMLString::release(&prefix);
+    XSEC_RELEASE_XMLCH(prefix);
     Janitor<XercesDOMParser> j_parser(parser);
     Janitor<MemBufInputSource> j_memIS(memIS);
 

Modified: xml/security/trunk/c/src/xenc/impl/XENCEncryptedTypeImpl.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xenc/impl/XENCEncryptedTypeImpl.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/xenc/impl/XENCEncryptedTypeImpl.cpp (original)
+++ xml/security/trunk/c/src/xenc/impl/XENCEncryptedTypeImpl.cpp Wed Jun 23 13:31:56 2010
@@ -30,6 +30,7 @@
 #include "XENCCipherDataImpl.hpp"
 #include "XENCEncryptedTypeImpl.hpp"
 #include "XENCEncryptionMethodImpl.hpp"
+#include "../../utils/XSECAutoPtr.hpp"
 
 #include <xsec/xenc/XENCEncryptedKey.hpp>
 
@@ -323,13 +324,13 @@ TXFMChain * XENCEncryptedTypeImpl::creat
 		// Given we already have this in memory, we transcode to
 		// local code page and then transform
 
-		char* b64 = XMLString::transcode(mp_cipherData->getCipherValue()->getCipherString());
+		XSECAutoPtrChar b64(mp_cipherData->getCipherValue()->getCipherString());
 
 		try {
             TXFMSB *sb;
             XSECnew(sb, TXFMSB(mp_env->getParentDocument()));
 
-            sb->setInput(safeBuffer(b64));
+            sb->setInput(safeBuffer(b64.get()));
 
             // Create a chain
             XSECnew(chain, TXFMChain(sb));
@@ -340,12 +341,9 @@ TXFMChain * XENCEncryptedTypeImpl::creat
 
             chain->appendTxfm(tb64);
 
-            XMLString::release(&b64);
-
             return chain;
 		}
         catch (...) {
-            XMLString::release(&b64);
             throw;
 		}
 	}

Modified: xml/security/trunk/c/src/xkms/XKMSConstants.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xkms/XKMSConstants.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/xkms/XKMSConstants.cpp (original)
+++ xml/security/trunk/c/src/xkms/XKMSConstants.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2005 The Apache Software Foundation.
+ * Copyright 2002-2010 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.
@@ -30,14 +30,6 @@
 
 XERCES_CPP_NAMESPACE_USE
 
-#undef XSEC_RELEASE_XMLCH
-
-#if defined (XSEC_XERCES_XMLSTRING_HAS_RELEASE)
-#    define XSEC_RELEASE_XMLCH(x) XMLString::release((XMLCh **) &x)
-#else
-#    define XSEC_RELEASE_XMLCH(x) delete[] x;
-#endif
-
 
 // --------------------------------------------------------------------------------
 //           Constant Strings Storage
@@ -1821,8 +1813,13 @@ void XKMSConstants::create() {
 
 void XKMSConstants::destroy() {
 
-	XSEC_RELEASE_XMLCH(s_unicodeStrURIXKMS);
-	XSEC_RELEASE_XMLCH(s_unicodeStrURISOAP11);
-	XSEC_RELEASE_XMLCH(s_unicodeStrURISOAP12);
-
+    XMLCh* temp1 = const_cast<XMLCh*>(s_unicodeStrURIXKMS);
+    XMLCh* temp2 = const_cast<XMLCh*>(s_unicodeStrURISOAP11);
+    XMLCh* temp3 = const_cast<XMLCh*>(s_unicodeStrURISOAP12);
+	XSEC_RELEASE_XMLCH(temp1);
+	XSEC_RELEASE_XMLCH(temp2);
+	XSEC_RELEASE_XMLCH(temp3);
+    s_unicodeStrURIXKMS = NULL;
+    s_unicodeStrURISOAP11 = NULL;
+    s_unicodeStrURISOAP12 = NULL;
 }

Modified: xml/security/trunk/c/src/xkms/impl/XKMSKeyBindingAbstractTypeImpl.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xkms/impl/XKMSKeyBindingAbstractTypeImpl.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/xkms/impl/XKMSKeyBindingAbstractTypeImpl.cpp (original)
+++ xml/security/trunk/c/src/xkms/impl/XKMSKeyBindingAbstractTypeImpl.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 The Apache Software Foundation.
+ * Copyright 2004-2010 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.
@@ -366,14 +366,12 @@ void XKMSKeyBindingAbstractTypeImpl::set
 	// Setup the id
 	XMLCh * myId;
 
-	if (id != NULL)
-		myId = XMLString::replicate(id);
-	else
+	if (id == NULL)
 		myId = generateId();
 
-	ArrayJanitor<XMLCh> j_myId(myId);
-
-	mp_keyBindingAbstractTypeElement->setAttributeNS(NULL, XKMSConstants::s_tagId, myId);
+	mp_keyBindingAbstractTypeElement->setAttributeNS(NULL, XKMSConstants::s_tagId, id ? id : myId);
+	if (id == NULL)
+	    XSEC_RELEASE_XMLCH(myId);
 #if defined (XSEC_XERCES_HAS_SETIDATTRIBUTE)
 	mp_keyBindingAbstractTypeElement->setIdAttributeNS(NULL, XKMSConstants::s_tagId);
 #endif

Modified: xml/security/trunk/c/src/xkms/impl/XKMSMessageAbstractTypeImpl.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xkms/impl/XKMSMessageAbstractTypeImpl.cpp?rev=957190&r1=957189&r2=957190&view=diff
==============================================================================
--- xml/security/trunk/c/src/xkms/impl/XKMSMessageAbstractTypeImpl.cpp (original)
+++ xml/security/trunk/c/src/xkms/impl/XKMSMessageAbstractTypeImpl.cpp Wed Jun 23 13:31:56 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 The Apache Software Foundation.
+ * Copyright 2004-2010 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.
@@ -216,14 +216,12 @@ DOMElement * XKMSMessageAbstractTypeImpl
 	// Setup the id
 	XMLCh * myId;
 
-	if (id != NULL)
-		myId = XMLString::replicate(id);
-	else
+	if (id == NULL)
 		myId = generateId();
 
-	ArrayJanitor<XMLCh> j_myId(myId);
-
-	mp_messageAbstractTypeElement->setAttributeNS(NULL, XKMSConstants::s_tagId, myId);
+	mp_messageAbstractTypeElement->setAttributeNS(NULL, XKMSConstants::s_tagId, id ? id : myId);
+	if (id == NULL)
+	    XSEC_RELEASE_XMLCH(myId);
 #if defined (XSEC_XERCES_HAS_SETIDATTRIBUTE)
 	mp_messageAbstractTypeElement->setIdAttributeNS(NULL, XKMSConstants::s_tagId);
 #endif