Re: Crash while trying to destroy memory cache with Heimdal 1.4.1rc2

Love Hörnquist Åstrand <[email protected]>
Newsgroups gmane.comp.encryption.kerberos.heimdal.general
Message-ID <[email protected]>
https://list.sics.se/sympa/info/heimdal-discuss

Love


11 dec 2011 kl. 08:11 skrev Narendra Kumar S.S:

> How to control mail settings for this list?
> 
> Warm Regards,
> Narendra
> 
> Visit my blogs at:
> http://ssnarendrakumar.blogspot.com/
>    ___    ___    __    _
>   /  __/  /  __/  /     | / /
> _\   \   _ \   \   /   /| |/ /
> \___/ \___/   /_/ |__/
> 
> 
> On Sat, Dec 10, 2011 at 10:56 AM, Love Hörnquist Åstrand <[email protected]> wrote:
> Hello,
> 
> Think about krb5_cc_destroy as a krb5_cc_close() combined with delete all data.
> 
>> Hi,
>> 
>> I need some help in understanding the Heimdal KRB5 Memory cache usage.  
>> In the file 'lib/krb5/test_cc.c ', I see the following line in documentation. 
>> 
>>  93 /*
>>  94  * Check that a closed cc still keeps it data and that it's no longer
>>  95  * there when it's destroyed.
>>  96  */
>> 
> 
> This checks that if a credential cache doesn't go away on krb5_cc_close() and that is really gone when calling krb5_cc_destroy().
> 
> 
>> This implies, that a KRB5 cache needs to be destroyed after it is close, or else it will retain the data.
>> But if you look at the code, it suggests that ref counting is done and the data is freed when you do a close.
>> The ref counting can be seen in the file 'lib/krb5/mcache.c ',  in following lines: 
> 
> Reference counting is done on the name, so that multiple holders of the same cache wont destroy the underlaying handle. The credential data can be destroyed though.
> 
>> So I chose to still do a krb5_cc_destroy to make sure I'm not leaking memory in some other scenarios. 
>> But, when my class tries to do a krb5_cc_destroy() in the destructor, it hits an krb5_abortx() in the same file on following line numbers:
>> 
>> 200     if (m->refcnt == 0)
>> 201       krb5_abortx(context, "mcc_destroy: refcnt already 0");
>> 202 
> 
> krb5_cc_destroy() is an implicit krb5_cc_close().
> 
> 
>> I need some help in understanding the use of KRB5 cache of type MEMORY.  Following are the specific questions I need help with:
>> 1] Is Krb5 Mem cache data ref-counted or needs to be explicitly destroyed?
> 
> Its refcounted and the data is destroyed.
> 
>> 2] While destroying the object, should I use krb5_cc_close() or krb5_cc_destroy() or both?
> 
> krb5_cc_destroy(), destroy lead to the marking the object as dead, and when the last reference is dropped, its gone.
> It can be resurected by krb5_cc_initalize().
> 
> Love
> 
> 
> 
>
smime.p7s (application/pkcs7-signature, 4.3 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.