_p11_unlock ();
if (!mod->initialize_called) {
+ assert (mod->funcs);
- _p11_debug ("C_Initialize: calling");
+ if (mod->funcs == &_p11_proxy_function_list) {
+ _p11_message ("refusing to load the p11-kit-proxy.so module as a registered module");
+ rv = CKR_FUNCTION_FAILED;
- assert (mod->funcs);
- rv = mod->funcs->C_Initialize (&mod->init_args);
+ } else {
+ _p11_debug ("C_Initialize: calling");
- _p11_debug ("C_Initialize: result: %lu", rv);
+ rv = mod->funcs->C_Initialize (&mod->init_args);
+
+ _p11_debug ("C_Initialize: result: %lu", rv);
+ }
/* Module was initialized and C_Finalize should be called */
if (rv == CKR_OK)
#endif /* !OS_WIN32 */
+extern CK_FUNCTION_LIST _p11_proxy_function_list;
void _p11_library_init (void);
CK_SLOT_ID wrap_slot;
} Session;
-/* Forward declaration */
-static CK_FUNCTION_LIST proxy_function_list;
-
/*
* Shared data between threads, protected by the mutex, a structure so
* we can audit thread safety easier.
/* Can be called before C_Initialize */
return_val_if_fail (list != NULL, CKR_ARGUMENTS_BAD);
- *list = &proxy_function_list;
+ *list = &_p11_proxy_function_list;
return CKR_OK;
}
* MODULE ENTRY POINT
*/
-static CK_FUNCTION_LIST proxy_function_list = {
+CK_FUNCTION_LIST _p11_proxy_function_list = {
{ CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR }, /* version */
proxy_C_Initialize,
proxy_C_Finalize,