From d8f90d300eb76e04dec2caba99f78e7f8a99b215 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Fri, 12 Aug 2016 16:16:38 +0200 Subject: Fix leak when C_Initialize() is called from child The test case added for bug 90289 (commit c73edd00) revealed that some of the C_Initialize() implementations do not consider the case where it is called from the parent process and then from the child process, without calling C_Finalize() in between. --- common/mock.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'common') diff --git a/common/mock.c b/common/mock.c index 1b0aea7..c3f2503 100644 --- a/common/mock.c +++ b/common/mock.c @@ -422,9 +422,12 @@ mock_C_Initialize (CK_VOID_PTR init_args) /* We store CK_ULONG as pointers here, so verify that they fit */ assert (sizeof (CK_ULONG) <= sizeof (void *)); + free (the_pin); the_pin = (CK_UTF8CHAR_PTR)strdup ("booo"); n_the_pin = 4; + if (the_sessions) + p11_dict_free (the_sessions); the_sessions = p11_dict_new (p11_dict_direct_hash, p11_dict_direct_equal, NULL, free_session); -- cgit v1.1