[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Apparent CML memory leak
John:
We will analyze your problem and get back to you on it.
Thanks
Tex
> -----Original Message-----
> From: John Stark [mailto:jas@xxxxxxxxxxxx]
> Sent: Thursday, May 30, 2002 6:12 AM
> To: imc-cml@xxxxxxx; imc-sfl@xxxxxxx
> Subject: Apparent CML memory leak
>
>
>
> Hello
>
> I'm trying to track down two memory leaks that appear to be
> occurring in our application within the CM_RetrieveKey
> function in the Certificate Management Library version 2.0.1.
>
> We are testing with Rational Purify on a Solaris SPARC system.
>
> The code in our application does the following:
>
> ValidKey_struct *vkp;
> Bytes_struct *bsp;
> ulong cmlsid;
> short cme;
> unsigned char *cert_data;
> ...
> cme = CM_RequestEncCertPath(cmlsid, cert_data,
> CM_SEARCH_UNTIL_FOUND, &bsp);
> cme = CM_RetrieveKey(cmlsid, bsp->data, CM_CERTPATH_TYPE,
> &vkp, CM_SEARCH_UNTIL_FOUND);
> ...
> CM_FreeValidKey(cmlsid, &vkp);
> CM_FreeBytes(cmlsid, &bsp);
>
> When this code is invoked, two memory leaks occur with the
> following call stacks (which unfortunately don't give me line
> numbers):
>
> MLK: 310 bytes leaked in 2 blocks
> * This memory was allocated from:
> malloc [rtlib.o]
> CMU_CopyBytesContent [CM_RetrieveKey.cpp]
> short buildCrlListFmObject(EncCRL_LL**,EncObject_LL*)
> [libcmapi_d.so] CM_RequestCRLs [CM_ReqOps.cpp] short
> checkCRLSearchResults(unsigned
> long,Cert_struct*,int,char*,EncCRL_LL*,Bytes_struct**,CRL_struct**)
> [libcmapi_d.so]
> short getValidCRL(unsigned
> long,CertTree_LL*,EncCRL_LL*,SearchBounds,bool,CRL_struct**,CertType)
> [libcmapi_d.so]
> short findValidCRL(unsigned
> long,CertTree_LL*,CertType,dist_pts_LL*,unsigned
> short,SearchBounds,bool,CRL_struct**) [libcmapi_d.so]
> short checkRevokeStatus(unsigned
> long,CertTree_LL*,SearchBounds) [libcmapi_d.so] short
> validateCert(unsigned long,SearchBounds,CertTree_LL*,StateVariables*)
> [libcmapi_d.so]
> short CMI::ValidatePath(unsigned
> long,SearchBounds,CertTree_LL*,CML::ValidatedKey*)
> [CM_RetrieveKey.cpp] short
> CML::CertPath::Validate(CML::ValidatedKey*)const
> [CM_CertPath.cpp] short CML::CertPath::BuildAndValidate(unsigned
> long,SearchBounds,float,CML::ValidatedKey*) [CM_CertPath.cpp]
> CM_RetrievePath [CM_RetrieveKey.cpp] CM_RetrieveKey
> [CM_RetrieveKey.cpp] ...
>
> MLK: 24 bytes leaked in 2 blocks
> * This memory was allocated from:
> malloc [rtlib.o]
> calloc [rtlib.o]
> short buildCrlListFmObject(EncCRL_LL**,EncObject_LL*)
> [libcmapi_d.so] CM_RequestCRLs [CM_ReqOps.cpp] short
> checkCRLSearchResults(unsigned
> long,Cert_struct*,int,char*,EncCRL_LL*,Bytes_struct**,CRL_struct**)
> [libcmapi_d.so]
> short getValidCRL(unsigned
> long,CertTree_LL*,EncCRL_LL*,SearchBounds,bool,CRL_struct**,CertType)
> [libcmapi_d.so]
> short findValidCRL(unsigned
> long,CertTree_LL*,CertType,dist_pts_LL*,unsigned
> short,SearchBounds,bool,CRL_struct**) [libcmapi_d.so]
> short checkRevokeStatus(unsigned
> long,CertTree_LL*,SearchBounds) [libcmapi_d.so] short
> validateCert(unsigned long,SearchBounds,CertTree_LL*,StateVariables*)
> [libcmapi_d.so]
> short CMI::ValidatePath(unsigned
> long,SearchBounds,CertTree_LL*,CML::ValidatedKey*)
> [CM_RetrieveKey.cpp] short
> CML::CertPath::Validate(CML::ValidatedKey*)const
> [CM_CertPath.cpp] short CML::CertPath::BuildAndValidate(unsigned
> long,SearchBounds,float,CML::ValidatedKey*) [CM_CertPath.cpp]
> CM_RetrievePath [CM_RetrieveKey.cpp] CM_RetrieveKey
> [CM_RetrieveKey.cpp] ...
>
> Can anyone tell me where this problem lies, or provide a fix
> for it already? Obviously it's building a linked list of
> CRLs, but on looking at the code it wasn't immediately
> obvious where it needs to be freed.
>
> John Stark
> E-mail: jas@xxxxxxxxxxxx
> Tel: +44 (0) 1223 566732
> Fax: +44 (0) 1223 566727
> Mobile: +44 (0) 7968 110628
>
>