diff -r e06095241a65 -r 735de8341ce4 vpnengine/pkiserviceapi/src/pkiserviceapi.cpp --- 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 pckgTSecurityObjectDescriptor(*certDesc);