Revision: 201014 RCL_3 PDK_3.0.i
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 18:31:15 +0300
branchRCL_3
changeset 12 d10d750052f0
parent 11 361f875fa818
child 14 243519c5055f
Revision: 201014 Kit: 201017
xmlsecurityengine/xmlsec/src/xmlsec_bn.c
xmlsecurityengine/xmlsec/src/xmlsec_errors.c
xmlsecurityengine/xmlsec/src/xmlsec_keyinfo.c
xmlsecurityengine/xmlsec/src/xmlsec_keys.c
xmlsecurityengine/xmlsec/src/xmlsec_keysmngr.c
xmlsecurityengine/xmlsec/src/xmlsec_transforms.c
xmlsecurityengine/xmlsec/src/xmlsec_xmldsig.c
xmlsecurityengine/xmlsec/src/xmlsec_xmltree.c
xmlsecurityengine/xmlseccrypto/src/xmlsecc_bio.cpp
xmlsecurityengine/xmlseccrypto/src/xmlsecc_evp.cpp
xmlsecurityengine/xmlseccrypto/src/xmlsecc_md.cpp
xmlsecurityengine/xmlseccrypto/src/xmlsecc_x509.cpp
xmlsecurityengine/xmlsecwrapper/src/xmlsecwinit.cpp
xmlsecurityengine/xmlsecwrapper/src/xmlsecwsign.cpp
--- a/xmlsecurityengine/xmlsec/src/xmlsec_bn.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_bn.c	Tue Apr 27 18:31:15 2010 +0300
@@ -263,7 +263,7 @@
 	        continue;
         }
 
-        xmlSecAssert2(ch <= sizeof(xmlSecBnLookupTable), -1);
+        xmlSecAssert2(ch <(sizeof(xmlSecBnLookupTable)/sizeof(xmlSecBnLookupTable[0])), -1);
         nn = xmlSecBnLookupTable[ch];
         if((nn < 0) || ((xmlSecSize)nn > base)) {
 	        xmlSecError(XMLSEC_ERRORS_HERE,
@@ -426,9 +426,10 @@
         return (NULL);
     }
     memset(res, 0, len + 1);
-
-    for(i = 0; (xmlSecBufferGetSize(&bn2) > 0) && (i < len); i++) {
-        if(xmlSecBnDiv(&bn2, base, &nn) < 0) {
+    for(i = 0; (xmlSecBufferGetSize(&bn2) > 0) && (i < len); i++) 
+        {
+        if(xmlSecBnDiv(&bn2, base, &nn) < 0) 
+            {
             xmlSecError(XMLSEC_ERRORS_HERE,
                         NULL,
                         "xmlSecBnDiv",
@@ -437,11 +438,19 @@
             xmlFree(res);
             xmlSecBnFinalize(&bn2);
             return (NULL);
-        }
-        xmlSecAssert2((size_t)nn < sizeof(xmlSecBnRevLookupTable), NULL);
+            }
+        if(nn >=(sizeof(xmlSecBnRevLookupTable)/sizeof(xmlSecBnRevLookupTable[0])))
+            {
+            xmlFree(res);
+            return (NULL);
+            }
         res[i] = xmlSecBnRevLookupTable[nn];
-    }
-    xmlSecAssert2(i < len, NULL);
+         }
+   if(i >=len)
+       {
+       xmlFree(res);
+       return (NULL);
+       }
 
     /* we might have '0' at the beggining, remove it but keep one zero */
     for(len = i; (len > 1) && (res[len - 1] == '0'); len--)
--- a/xmlsecurityengine/xmlsec/src/xmlsec_errors.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_errors.c	Tue Apr 27 18:31:15 2010 +0300
@@ -242,8 +242,9 @@
 	
 	if(msg != NULL) {
 	    va_list va;
-
-	    va_start(va, msg);
+		
+        //va points to the first argument in the list of variable arguments
+		va_start(va, msg);
   	    xmlSecStrVPrintf(error_msg, sizeof(error_msg), BAD_CAST msg, va);
 	    error_msg[sizeof(error_msg) - 1] = '\0';
 	    va_end(va);	
--- a/xmlsecurityengine/xmlsec/src/xmlsec_keyinfo.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_keyinfo.c	Tue Apr 27 18:31:15 2010 +0300
@@ -770,9 +770,14 @@
     }		
     
     /* finally set key name if it is not there */
-    if(xmlSecKeyGetName(key) == NULL) {
-	xmlSecKeySetName(key, newName);
-    }
+    if(xmlSecKeyGetName(key) == NULL) 
+        {
+        if(xmlSecKeySetName(key, newName)<0)
+            {
+            xmlFree(newName);
+            return(-1);
+            }
+        }
     xmlFree(newName);
     return(0);
 }
--- a/xmlsecurityengine/xmlsec/src/xmlsec_keys.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_keys.c	Tue Apr 27 18:31:15 2010 +0300
@@ -169,25 +169,28 @@
     xmlSecAssert2(keyUseWith != NULL, NULL);
 
     newKeyUseWith = xmlSecKeyUseWithCreate(NULL, NULL);
-    if(newKeyUseWith == NULL) {
-    	xmlSecError(XMLSEC_ERRORS_HERE,
+    if(newKeyUseWith == NULL) 
+        {
+        xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
 		    "xmlSecKeyUseWithCreate",
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
         return(NULL);        
-    }
+        }
 
     ret = xmlSecKeyUseWithCopy(newKeyUseWith, keyUseWith);
-    if(ret < 0) {
+    if(ret < 0) 
+        {
     	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
 		    "xmlSecKeyUseWithCopy",
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
-        xmlSecKeyUseWithDestroy(keyUseWith);
+		xmlSecKeyUseWithDestroy(keyUseWith);
+        xmlSecKeyUseWithDestroy( newKeyUseWith);
         return(NULL);        
-    }
+        }
 
     return(newKeyUseWith);
 }
@@ -1384,8 +1387,9 @@
 
     if(keyInfoNode != NULL) {
 	ret = xmlSecKeyInfoNodeRead(keyInfoNode, key, keyInfoCtx);
-	if(ret < 0) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
+	if(ret < 0) 
+	    {
+        xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
 			"xmlSecKeyInfoNodeRead",
 			XMLSEC_ERRORS_R_XMLSEC_FAILED,
@@ -1403,39 +1407,45 @@
         tempkey=xmlSecKeyDuplicate(key);
         if(tempkey == NULL) 
             {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"xmlSecKeysMngrFindKey",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
-	    return(NULL);
+            xmlSecError(XMLSEC_ERRORS_HERE,
+                    NULL,
+                    "xmlSecKeysMngrFindKey",
+                    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                    XMLSEC_ERRORS_NO_MESSAGE);
+            xmlSecKeyDestroy(key);
+            return(NULL);
             }
-        keyname=xmlSecKeyGetName(tempkey);	
+    keyname=xmlSecKeyGetName(tempkey);	
     xmlSecKeyDestroy(key);
     
     /* if we have keys manager, try it */
-    if(keyInfoCtx->keysMngr != NULL) {
-	key = xmlSecKeysMngrFindKey(keyInfoCtx->keysMngr, keyname /*NULL*/, keyInfoCtx);
-         xmlSecKeyDestroy(tempkey);
-        	if(key == NULL) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"xmlSecKeysMngrFindKey",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
-	    return(NULL);
-	}
-	if(xmlSecKeyGetValue(key) != NULL) {
-	    return(key);
-	}
-	xmlSecKeyDestroy(key);
-    }
+    if(keyInfoCtx->keysMngr != NULL) 
+		{
+		key = xmlSecKeysMngrFindKey(keyInfoCtx->keysMngr, keyname /*NULL*/, keyInfoCtx);
+        	if(key == NULL) 
+				{
+				xmlSecError(XMLSEC_ERRORS_HERE,
+					NULL,
+					"xmlSecKeysMngrFindKey",
+					XMLSEC_ERRORS_R_XMLSEC_FAILED,
+					XMLSEC_ERRORS_NO_MESSAGE);
+				 xmlSecKeyDestroy(tempkey);
+				return(NULL);
+				}
+		if(xmlSecKeyGetValue(key) != NULL) 
+			{
+			xmlSecKeyDestroy(tempkey);
+			return(key);
+			}
+		xmlSecKeyDestroy(key);
+		}
     
     xmlSecError(XMLSEC_ERRORS_HERE,
 		NULL,
 		NULL,
 		XMLSEC_ERRORS_R_KEY_NOT_FOUND,
-		XMLSEC_ERRORS_NO_MESSAGE);    
+		XMLSEC_ERRORS_NO_MESSAGE);  
+    xmlSecKeyDestroy(tempkey);
     return(NULL);
 }
 
--- a/xmlsecurityengine/xmlsec/src/xmlsec_keysmngr.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_keysmngr.c	Tue Apr 27 18:31:15 2010 +0300
@@ -63,14 +63,16 @@
     memset(mngr, 0, sizeof(xmlSecKeysMngr));    
 
     ret = xmlSecPtrListInitialize(&(mngr->storesList), xmlSecKeyDataStorePtrListId);
-    if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
+    if(ret < 0) 
+        {
+        xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
 		    "xmlSecPtrListInitialize",
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    "xmlSecKeyDataStorePtrListId");
-	return(NULL);
-    }
+        xmlFree(mngr);  
+        return(NULL);
+        }
 
     return(mngr);    
 }
--- a/xmlsecurityengine/xmlsec/src/xmlsec_transforms.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_transforms.c	Tue Apr 27 18:31:15 2010 +0300
@@ -588,15 +588,17 @@
     xmlSecAssert2(id != xmlSecTransformIdUnknown, NULL);
 
     transform = xmlSecTransformCreate(id);
-    if(!xmlSecTransformIsValid(transform)) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
+    if(!xmlSecTransformIsValid(transform)) 
+        {
+        xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
 		    "xmlSecTransformCreate",		    
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    "transform=%s",
 		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
-	return(NULL);
-    }
+        xmlSecTransformDestroy(transform);
+        return(NULL);
+        }
 
     ret = xmlSecTransformCtxAppend(ctx, transform);
     if(ret < 0) {
@@ -634,27 +636,30 @@
     xmlSecAssert2(id != xmlSecTransformIdUnknown, NULL);
 
     transform = xmlSecTransformCreate(id);
-    if(!xmlSecTransformIsValid(transform)) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
+    if(!xmlSecTransformIsValid(transform)) 
+        {
+        xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
 		    "xmlSecTransformCreate",		    
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    "transform=%s",
 		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
-	return(NULL);
-    }
+        xmlSecTransformDestroy(transform);
+        return(NULL);
+        }
 
     ret = xmlSecTransformCtxPrepend(ctx, transform);
-    if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
+    if(ret < 0) 
+        {
+        xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
 		    "xmlSecTransformCtxPrepend",	    
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    "name=%s",
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
-	xmlSecTransformDestroy(transform);
-	return(NULL);
-    }
+        xmlSecTransformDestroy(transform);
+        return(NULL);
+        }
 
     return(transform);
 }
@@ -1570,6 +1575,7 @@
 		    "transform=%s",
 		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
 	xmlFree(href);
+	xmlSecTransformDestroy(transform);
 	return(NULL);		
     }
 
--- a/xmlsecurityengine/xmlsec/src/xmlsec_xmldsig.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_xmldsig.c	Tue Apr 27 18:31:15 2010 +0300
@@ -122,7 +122,7 @@
 EXPORT_C
 int 
 xmlSecDSigCtxInitialize(xmlSecDSigCtxPtr dsigCtx, xmlSecKeysMngrPtr keysMngr) {
-    int ret;
+    int ret,ret1;
     
     xmlSecAssert2(dsigCtx != NULL, -1);
     
@@ -165,10 +165,19 @@
     }
 
     /* references lists from SignedInfo and Manifest elements */
-    xmlSecPtrListInitialize(&(dsigCtx->signedInfoReferences), 
+    ret=xmlSecPtrListInitialize(&(dsigCtx->signedInfoReferences), 
 			    xmlSecDSigReferenceCtxListId);
-    xmlSecPtrListInitialize(&(dsigCtx->manifestReferences), 
+    ret1=xmlSecPtrListInitialize(&(dsigCtx->manifestReferences), 
 			    xmlSecDSigReferenceCtxListId);    
+    if(ret<0 ||ret1<0)
+        {
+        xmlSecError(XMLSEC_ERRORS_HERE,
+                NULL,
+                "xmlSecTransformCtxInitialize",
+                XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                XMLSEC_ERRORS_NO_MESSAGE);
+        return(-1);   
+        }
 
     dsigCtx->enabledReferenceUris = xmlSecTransformUriTypeAny;
     return(0);
--- a/xmlsecurityengine/xmlsec/src/xmlsec_xmltree.c	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsec/src/xmlsec_xmltree.c	Tue Apr 27 18:31:15 2010 +0300
@@ -1640,7 +1640,7 @@
             xmlFree(content);
 	    return(-1);	
         }
-        xmlFree(content);
+        
 
 	if((stopOnUnknown != 0) && (tmp == 0)) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
@@ -1649,9 +1649,12 @@
 	    	        XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		        "value=%s",
 		        xmlSecErrorsSafeString(content));
+	    xmlFree(content);
 	    return(-1);	
 	}
 	
+	xmlFree(content);
+	
         (*mask) |= tmp;
 	cur = xmlSecGetNextElementNode(cur->next);
     }
--- a/xmlsecurityengine/xmlseccrypto/src/xmlsecc_bio.cpp	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlseccrypto/src/xmlsecc_bio.cpp	Tue Apr 27 18:31:15 2010 +0300
@@ -91,6 +91,7 @@
 	if(fileLen < 0)
 		{
 			xmlSecSetErrorFlag( KErrGeneral );
+			fclose(fp);
 			return(NULL);
 		}
 	fseek ( fp , 0L , SEEK_SET );
@@ -98,12 +99,14 @@
 	buf = (char *)malloc(sizeof(char)*(fileLen+1));
     if(!buf) {	   
 		xmlSecSetErrorFlag( KErrNoMemory );
+		fclose(fp);
 	    return(NULL);
 	}    
 				
 	byteRead = fread(buf, sizeof(char), fileLen, fp);
     if(byteRead != fileLen) {
 	    free(buf);
+	    fclose(fp);
 	    return(NULL);
 	}   
 	
@@ -114,6 +117,7 @@
 		{
 		    xmlSecSetErrorFlag( KErrNoMemory );
 			free(buf);
+			fclose(fp);
 			return (NULL);
 		}		
 		strcpy(tmpname, name);
@@ -128,13 +132,14 @@
 		    free(tmpname);
 		    }
 	    free(buf);
+	    fclose(fp);
 	    return(NULL);
 	}
 	
 	bio->mem = buf;
 	bio->len = fileLen;
 	bio->name = tmpname;
-
+	fclose(fp);
 	return bio; 	
 
 }
--- a/xmlsecurityengine/xmlseccrypto/src/xmlsecc_evp.cpp	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlseccrypto/src/xmlsecc_evp.cpp	Tue Apr 27 18:31:15 2010 +0300
@@ -135,19 +135,21 @@
     ctxSrc = xmlSecSymbianCryptoEvpKeyDataGetCtx(src);
     xmlSecAssert2(ctxSrc, -1);
 
-    if(ctxSrc->pKey) {
+    if(ctxSrc->pKey) 
+    {
 	ctxDst->pKey = xmlSecSymbianCryptoEvpKeyDup(ctxSrc->pKey);
-            ctxDst->pKey->duplicate=0;
-            ctxSrc->pKey->duplicate=1;
-	if(!ctxDst->pKey) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
-			"xmlSecSymbianCryptoEvpKeyDup",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
-	    return(-1);
-	}	
-    } 
+	if(!ctxDst->pKey) 
+	    {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+	            xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
+	            "xmlSecSymbianCryptoEvpKeyDup",
+	            XMLSEC_ERRORS_R_XMLSEC_FAILED,
+	            XMLSEC_ERRORS_NO_MESSAGE);
+	        return(-1);
+	    }   
+     ctxDst->pKey->duplicate=0;
+     ctxSrc->pKey->duplicate=1;
+     } 
 
     return(0);
 }
@@ -1401,6 +1403,7 @@
 	return(-1);	
     }
 
+	/*
     if(!rsa) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
@@ -1409,7 +1412,7 @@
 		    XMLSEC_ERRORS_NO_MESSAGE);
 	return(-1);
     }
-
+	*/
     cur = xmlSecGetNextElementNode(node->children);
     
     /* first is Modulus node. It is REQUIRED because we do not support Seed and PgenCounter*/
@@ -1652,6 +1655,7 @@
 		    "sc_load_key",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
 		    "sizeBits=%d", sizeBits);
+	sc_pkey_free(pKey);
 	return(-1);  
     }	
 		
@@ -1667,17 +1671,22 @@
 		    "sc_generate_key",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
 		    "sizeBits=%d", sizeBits);
-	            return(-1);      
+			sc_pkey_free(pKey);
+	        return(-1);      
 		}
 	}		
-	if (!pKey->load) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
+	if (!pKey->load) 
+		{
+	
+		xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
 		    "sc_generate_key",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
 		    "sizeBits=%d", sizeBits);
-	return(-1);  
-    }	
+		
+		sc_pkey_free(pKey);
+		return(-1);  
+		}	
 
     ret = xmlSecSymbianCryptoKeyDataRsaAdoptEvp(data, pKey);
     if(ret < 0) {
@@ -1705,6 +1714,7 @@
 	return(-1);
     }
 */
+    sc_pkey_free(pKey);
     return(0);
 }
 
--- a/xmlsecurityengine/xmlseccrypto/src/xmlsecc_md.cpp	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlseccrypto/src/xmlsecc_md.cpp	Tue Apr 27 18:31:15 2010 +0300
@@ -190,7 +190,7 @@
 /* Set key for HMAC */
 int sc_md_setkey(sc_md_hd_t hd, unsigned char *buffer, size_t length)
 {
-  TInt err;
+  TInt err =KErrNone;
   
   if (!hd || !buffer || length <=0)
   	return KErrArgument;
--- a/xmlsecurityengine/xmlseccrypto/src/xmlsecc_x509.cpp	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlseccrypto/src/xmlsecc_x509.cpp	Tue Apr 27 18:31:15 2010 +0300
@@ -577,6 +577,7 @@
     size = xmlSecSymbianCryptoKeyDataX509GetCertsSize(src);
     for(pos = 0; pos < size; ++pos) {
 	certSrc = xmlSecSymbianCryptoKeyDataX509GetCert(src, pos);
+	certDst = xmlSecSymbianCryptoKeyDataX509GetCert(dst, pos);
 	if(!certSrc) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
@@ -610,6 +611,7 @@
     size = xmlSecSymbianCryptoKeyDataX509GetCrlsSize(src);
     for(pos = 0; pos < size; ++pos) {
 	crlSrc = xmlSecSymbianCryptoKeyDataX509GetCrl(src, pos);
+	crlDst =xmlSecSymbianCryptoKeyDataX509GetCrl(dst, pos);
 	if(!crlSrc) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
@@ -618,7 +620,6 @@
 			"pos=%d", pos);
 	    return(-1);
 	}
-	
 	if(!crlDst) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
@@ -1106,8 +1107,7 @@
     xmlSecKeyDataStorePtr x509Store;
     xmlChar* subject;
     X509* cert;
-    X509* cert2 = NULL;
-    int ret;
+    //X509* cert2 = NULL;
     
     xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecSymbianCryptoKeyDataX509Id), -1);
     xmlSecAssert2(node, -1);
@@ -1142,8 +1142,6 @@
 
     cert = xmlSecSymbianCryptoX509StoreFindCert(x509Store, subject, NULL, NULL, NULL, keyInfoCtx);
     if(!cert){
-	xmlFree(subject);
-
 	if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 		        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
@@ -1151,11 +1149,15 @@
 			XMLSEC_ERRORS_R_CERT_NOT_FOUND,
 			"subject=%s", 
 			xmlSecErrorsSafeString(subject));
+	    xmlFree(subject);
 	    return(-1);
 	}
+	xmlFree(subject);
 	return(0);
     }
-
+    
+    //dead error condition
+    /*
     if(!cert2) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
@@ -1176,7 +1178,7 @@
 	xmlFree(subject);
 	return(-1);
     }
-    
+    */
     xmlFree(subject);
     return(0);
 }
@@ -1225,8 +1227,7 @@
     xmlChar *issuerName;
     xmlChar *issuerSerial;    
     X509* cert;
-    X509* cert2 = NULL;
-    int ret;
+    //X509* cert2 = NULL;
 
     xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecSymbianCryptoKeyDataX509Id), -1);
     xmlSecAssert2(node, -1);
@@ -1320,23 +1321,27 @@
                                                             issuerSerial, 
                                                             NULL, 
                                                             keyInfoCtx);
-    if(!cert){
-	xmlFree(issuerSerial);
-	xmlFree(issuerName);
-
-	if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
+    if(!cert)
+        {
+        if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0)
+            {
+            xmlSecError(XMLSEC_ERRORS_HERE,
 		        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
 			NULL,
 			XMLSEC_ERRORS_R_CERT_NOT_FOUND,
 			"issuerName=%s;issuerSerial=%s",
 		        xmlSecErrorsSafeString(issuerName), 
 			xmlSecErrorsSafeString(issuerSerial));
-	    return(-1);
-	}
-	return(0);    
-    }
+            xmlFree(issuerSerial);
+            xmlFree(issuerName);
+            return(-1);
+            }
+		xmlFree(issuerSerial);
+        xmlFree(issuerName);
+        return(0);  
+        }
 
+    /*
     if(!cert2) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
@@ -1359,7 +1364,7 @@
 	xmlFree(issuerName);
 	return(-1);
     }
-    
+    */
     xmlFree(issuerSerial);
     xmlFree(issuerName);
     return(0);
@@ -1410,8 +1415,8 @@
 		    xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
 	return(-1);
     }
-
-    /* write data */
+    /*
+    //write data 
     if(!buf) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
@@ -1420,9 +1425,7 @@
 		    XMLSEC_ERRORS_NO_MESSAGE);
 	return(-1);
     }
-    xmlNodeSetContent(issuerNameNode, buf);
-    xmlFree(buf);
-
+        
     if(!buf) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
@@ -1431,6 +1434,8 @@
 		    XMLSEC_ERRORS_NO_MESSAGE);
 	return(-1);
     }
+	*/
+	xmlNodeSetContent(issuerNameNode, buf);
     xmlNodeSetContent(issuerNumberNode, buf);
     xmlFree(buf);
 
@@ -1445,8 +1450,6 @@
     xmlSecKeyDataStorePtr x509Store;
     xmlChar* ski;
     X509* cert;
-    X509* cert2 = NULL;
-    int ret;
     
     xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecSymbianCryptoKeyDataX509Id), -1);
     xmlSecAssert2(node, -1);
@@ -1482,8 +1485,6 @@
 
     cert = xmlSecSymbianCryptoX509StoreFindCert(x509Store, NULL, NULL, NULL, ski, keyInfoCtx);
     if(!cert){
-	xmlFree(ski);
-
 	if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 		        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
@@ -1491,11 +1492,15 @@
 		        XMLSEC_ERRORS_R_CERT_NOT_FOUND,
 			"ski=%s", 
 			xmlSecErrorsSafeString(ski));
+	    xmlFree(ski);
 	    return(-1);
 	}
+	xmlFree(ski);
 	return(0);
     }
-
+ 
+//dead error condition 
+/*
     if(!cert2) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
@@ -1505,7 +1510,7 @@
 	xmlFree(ski);
 	return(-1);
     }
-
+ 
     ret = xmlSecSymbianCryptoKeyDataX509AdoptCert(data, cert2);
     if(ret < 0) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
@@ -1516,6 +1521,7 @@
 	xmlFree(ski);
 	return(-1);
     }
+    */
     
     xmlFree(ski);
     return(0);
@@ -2440,8 +2446,10 @@
 		    "xmlSecSymbianCryptoKeyDataX509VerifyAndExtractKey",
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
+	X509_free(cert);
 	return(-1);
     }
+    X509_free(cert);
     return(0);
 }
 
--- a/xmlsecurityengine/xmlsecwrapper/src/xmlsecwinit.cpp	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsecwrapper/src/xmlsecwinit.cpp	Tue Apr 27 18:31:15 2010 +0300
@@ -59,9 +59,10 @@
 // UnSet global state for dll
 // ---------------------------------------------------------------------------
 //    
-void XmlSecUnsetTlsD( void* aGlobalState )
+void XmlSecUnsetTlsDL( void* aGlobalState )
     {
-    delete aGlobalState;
+    CleanupStack::PushL(aGlobalState);
+    CleanupStack::PopAndDestroy(aGlobalState);
     Dll::SetTls( NULL );
     }
     
@@ -79,7 +80,7 @@
         }
     if(gs->iUserCount == 0)
         {
-        CleanupStack::PushL( TCleanupItem( XmlSecUnsetTlsD, gs ) );
+        CleanupStack::PushL( TCleanupItem( XmlSecUnsetTlsDL, gs ) );
         XmlEngineAttachL();
         
         RXmlEngDOMImplementation dom;
--- a/xmlsecurityengine/xmlsecwrapper/src/xmlsecwsign.cpp	Thu Apr 01 00:31:02 2010 +0300
+++ b/xmlsecurityengine/xmlsecwrapper/src/xmlsecwsign.cpp	Tue Apr 27 18:31:15 2010 +0300
@@ -214,11 +214,13 @@
 // Reset template settings
 // ---------------------------------------------------------------------------
 //   
-void TemplateCleanup(TAny* aPref)
+void TemplateCleanupL(TAny* aPref)
     {
+   
     if(aPref)
         {
-        delete aPref;
+        CleanupStack::PushL(aPref);
+        CleanupStack::PopAndDestroy(aPref);
         xmlSetPrefix(NULL);
         }
     xmlSetNewLineFlag(1);
@@ -625,7 +627,7 @@
         pref = (unsigned char*) XmlEngXmlCharFromDes8L(aPref);
         xmlSetPrefix(pref);
         }
-    CleanupStack::PushL(TCleanupItem(Sign::TemplateCleanup,(TAny*)pref));
+    CleanupStack::PushL(TCleanupItem(Sign::TemplateCleanupL,(TAny*)pref));
         
     xmlNodePtr signNode = NULL;
     xmlNodePtr refNode = NULL;