vpnengine/pkiserviceapi/src/pkiserviceapi.cpp
branchRCL_3
changeset 44 735de8341ce4
parent 41 e06095241a65
--- a/vpnengine/pkiserviceapi/src/pkiserviceapi.cpp	Wed Sep 01 12:23:21 2010 +0100
+++ b/vpnengine/pkiserviceapi/src/pkiserviceapi.cpp	Tue Sep 14 23:16:15 2010 +0300
@@ -415,14 +415,16 @@
 
 	User::LeaveIfError(SendReceive (PkiService::EGetCertList, TIpcArgs(&ptrList)));
 
-	TCertificateListEntry certInfo;
+	TCertificateListEntry* certInfo = new (ELeave) TCertificateListEntry();
+	CleanupStack::PushL( certInfo );
+	
 	for (TInt i = 0; i < certCount; i++)
 		{
-		list->Read(i * sizeof(TCertificateListEntry), (TAny*)&certInfo, sizeof(TCertificateListEntry));
-		certList->AppendL(certInfo);
+		list->Read(i * sizeof(TCertificateListEntry), (TAny*)certInfo, sizeof(TCertificateListEntry));
+		certList->AppendL(*certInfo);
 		}
 
-	CleanupStack::PopAndDestroy(1);     // list
+	CleanupStack::PopAndDestroy(2);     // list, certInfo
 	CleanupStack::Pop();                // certList
 
 	aCertList = certList;
@@ -481,14 +483,16 @@
 
 	User::LeaveIfError(SendReceive (PkiService::EGetApplicableCertList, TIpcArgs(&ptrList2)));
 
-	TCertificateListEntry certInfo;
+	TCertificateListEntry* certInfo = new (ELeave) TCertificateListEntry();
+	CleanupStack::PushL(certInfo);
+	
 	for (i = 0; i < certCount; i++)
 		{
-		list->Read(i * sizeof(TCertificateListEntry), (TAny*)&certInfo, sizeof(TCertificateListEntry));
-		certList->AppendL(certInfo);
+		list->Read(i * sizeof(TCertificateListEntry), (TAny*)certInfo, sizeof(TCertificateListEntry));
+		certList->AppendL(*certInfo);
 		}
 
-	CleanupStack::PopAndDestroy(1);     // list
+	CleanupStack::PopAndDestroy(2);     // list, certInfo
 	CleanupStack::Pop();                // certList
 
 	aCertList = certList;
@@ -974,8 +978,16 @@
 {
     TSecurityObjectDescriptor *certDesc = new (ELeave) TSecurityObjectDescriptor;
     CleanupStack::PushL(certDesc);
+    
     certDesc->SetTrustedAuthority(aTrustedAuthority);
     certDesc->SetSerialNumber(aSerialNumber);
+    
+    if( EFalse == certDesc->iTrustedAuthorityUsed ||
+        EFalse == certDesc->iSerialNumberUsed )
+        {
+        User::Leave( KErrArgument );
+        }
+
     TPckg<TSecurityObjectDescriptor> pckgTSecurityObjectDescriptor(*certDesc);