static CK_RV mock_C_Initialize__with_fork (CK_VOID_PTR init_args) { struct timespec ts = { 0, 100 * 1000 * 1000 }; CK_RV rv; pid_t child; pid_t ret; int status; rv = mock_C_Initialize (init_args); assert (rv == CKR_OK); /* Fork during the initialization */ child = fork (); if (child == 0) { nanosleep (&ts, NULL); exit (66); } ret = waitpid (child, &status, 0); assert (ret == child); assert (WIFEXITED (status)); assert (WEXITSTATUS (status) == 66); return CKR_OK; }
static CK_RV override_initialize (CK_VOID_PTR init_args) { CK_C_INITIALIZE_ARGS_PTR args = init_args; assert_str_eq ("initialize-arg", args->pReserved); return mock_C_Initialize (init_args); }
static CK_RV mock_C_Initialize__with_recursive (CK_VOID_PTR init_args) { CK_RV rv; rv = mock_C_Initialize (init_args); assert (rv == CKR_OK); /* Recursively initialize, this is broken */ return p11_kit_initialize_module (&module); }