fix: memory leak
example: int main() { C_Initialize(NULL); C_Finalize(NULL); return 0; } ==4625== 592 (504 direct, 88 indirect) bytes in 1 blocks are definitely lost in loss record 9 of 10 ==4625== at 0x4C24137: calloc (vg_replace_malloc.c:418) ==4625== by 0x407FD9: create_slot (slot.c:80) ==4625== by 0x40452C: C_Initialize (pkcs11-global.c:243) ==4625== by 0x40342A: main ==4625== ==4625== 4,736 (4,032 direct, 704 indirect) bytes in 8 blocks are definitely lost in loss record 10 of 10 ==4625== at 0x4C24137: calloc (vg_replace_malloc.c:418) ==4625== by 0x407FD9: create_slot (slot.c:80) ==4625== by 0x408102: initialize_reader (slot.c:108) ==4625== by 0x4044E0: C_Initialize (pkcs11-global.c:247) ==4625== by 0x40342A: main ==4625== ==4625== LEAK SUMMARY: ==4625== definitely lost: 4,536 bytes in 9 blocks git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4386 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
78d6bc4189
commit
c5c649e0ea
@ -272,6 +272,8 @@ out:
|
|||||||
CK_RV C_Finalize(CK_VOID_PTR pReserved)
|
CK_RV C_Finalize(CK_VOID_PTR pReserved)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
void *p;
|
||||||
|
sc_pkcs11_slot_t *slot;
|
||||||
CK_RV rv;
|
CK_RV rv;
|
||||||
|
|
||||||
if (context == NULL)
|
if (context == NULL)
|
||||||
@ -296,7 +298,14 @@ CK_RV C_Finalize(CK_VOID_PTR pReserved)
|
|||||||
for (i=0; i < (int)sc_ctx_get_reader_count(context); i++)
|
for (i=0; i < (int)sc_ctx_get_reader_count(context); i++)
|
||||||
card_removed(sc_ctx_get_reader(context, i));
|
card_removed(sc_ctx_get_reader(context, i));
|
||||||
|
|
||||||
|
while ((p = list_fetch(&sessions)))
|
||||||
|
free(p);
|
||||||
list_destroy(&sessions);
|
list_destroy(&sessions);
|
||||||
|
|
||||||
|
while ((slot = list_fetch(&virtual_slots))) {
|
||||||
|
list_destroy(&slot->objects);
|
||||||
|
free(slot);
|
||||||
|
}
|
||||||
list_destroy(&virtual_slots);
|
list_destroy(&virtual_slots);
|
||||||
|
|
||||||
sc_release_context(context);
|
sc_release_context(context);
|
||||||
|
Loading…
Reference in New Issue
Block a user