diff options
Diffstat (limited to 'src/slot.c')
-rw-r--r-- | src/slot.c | 137 |
1 files changed, 85 insertions, 52 deletions
@@ -26,9 +26,12 @@ slot_global(void) assert(p11t_module_funcs); - /** - NULL argument */ - rv = (p11t_module_funcs->C_GetInfo)(NULL); - p11t_check_returns("C_GetInfo: null argument", rv, CKR_ARGUMENTS_BAD); + if(p11t_test_unexpected) + { + /** - NULL argument */ + rv = (p11t_module_funcs->C_GetInfo)(NULL); + p11t_check_returns("C_GetInfo: null argument", rv, CKR_ARGUMENTS_BAD); + } /* Obvious crap fill */ memset(&p11t_slot_global, 0xFF, sizeof(CK_INFO)); @@ -73,9 +76,12 @@ slot_info(void) assert(p11t_module_funcs); - /** - NULL arguments */ - rv = (p11t_module_funcs->C_GetSlotList)(FALSE, NULL, NULL); - p11t_check_returns("C_GetSlotList: null argument", rv, CKR_ARGUMENTS_BAD); + if(p11t_test_unexpected) + { + /** - NULL arguments */ + rv = (p11t_module_funcs->C_GetSlotList)(FALSE, NULL, NULL); + p11t_check_returns("C_GetSlotList: null argument", rv, CKR_ARGUMENTS_BAD); + } /** - Retrieving the count */ rv = (p11t_module_funcs->C_GetSlotList)(FALSE, NULL, &p11t_slot_count); @@ -97,23 +103,29 @@ slot_info(void) p11t_slot_token_info = calloc(p11t_slot_count, sizeof(CK_TOKEN_INFO)); assert(p11t_slot_token_info); - /** - Passing buffer space along with zero count. */ - count = 0; - rv = (p11t_module_funcs->C_GetSlotList)(FALSE, p11t_slot_ids, &count); - p11t_check_returns("C_GetSlotList: zero buffer", rv, CKR_BUFFER_TOO_SMALL); - p11t_check_ulong("C_GetSlotList: count invalid zero space passed", count, p11t_slot_count); - - if(p11t_slot_count > 1) + if(p11t_test_unexpected) { - /** - Passing buffer space along with low count. */ - count = 1; + /** - Passing buffer space along with zero count. */ + count = 0; rv = (p11t_module_funcs->C_GetSlotList)(FALSE, p11t_slot_ids, &count); - p11t_check_returns("C_GetSlotList: low buffer", rv, CKR_BUFFER_TOO_SMALL); - p11t_check_ulong("C_GetSlotList: count invalid when too little space passed", count, p11t_slot_count); + p11t_check_returns("C_GetSlotList: zero buffer", rv, CKR_BUFFER_TOO_SMALL); + p11t_check_ulong("C_GetSlotList: count invalid zero space passed", count, p11t_slot_count); + + if(p11t_slot_count > 1) + { + /** - Passing buffer space along with low count. */ + count = 1; + rv = (p11t_module_funcs->C_GetSlotList)(FALSE, p11t_slot_ids, &count); + p11t_check_returns("C_GetSlotList: low buffer", rv, CKR_BUFFER_TOO_SMALL); + p11t_check_ulong("C_GetSlotList: count invalid when too little space passed", count, p11t_slot_count); + } } /** - Passing too much buffer space. */ - count = p11t_slot_count + 5; + if(p11t_test_unexpected) + count = p11t_slot_count + 5; + else + count = p11t_slot_count; rv = (p11t_module_funcs->C_GetSlotList)(FALSE, p11t_slot_ids, &count); if(!p11t_check_returns("C_GetSlotList", rv, CKR_OK)) { @@ -134,9 +146,12 @@ slot_info(void) { /** C_GetSlotInfo */ - /** - NULL argument */ - rv = (p11t_module_funcs->C_GetSlotInfo)(p11t_slot_ids[i], NULL); - p11t_check_returns("C_GetSlotInfo: null argument", rv, CKR_ARGUMENTS_BAD); + if(p11t_test_unexpected) + { + /** - NULL argument */ + rv = (p11t_module_funcs->C_GetSlotInfo)(p11t_slot_ids[i], NULL); + p11t_check_returns("C_GetSlotInfo: null argument", rv, CKR_ARGUMENTS_BAD); + } /** - Normal call */ rv = (p11t_module_funcs->C_GetSlotInfo)(p11t_slot_ids[i], &p11t_slot_info[i]); @@ -158,9 +173,12 @@ slot_info(void) /** C_GetTokenInfo */ - /** - Null arguments */ - rv = (p11t_module_funcs->C_GetTokenInfo)(p11t_slot_ids[i], NULL); - p11t_check_returns("C_GetTokenInfo: null arguments", rv, CKR_ARGUMENTS_BAD); + if(p11t_test_unexpected) + { + /** - Null arguments */ + rv = (p11t_module_funcs->C_GetTokenInfo)(p11t_slot_ids[i], NULL); + p11t_check_returns("C_GetTokenInfo: null arguments", rv, CKR_ARGUMENTS_BAD); + } /** - Normal call */ rv = (p11t_module_funcs->C_GetTokenInfo)(p11t_slot_ids[i], &p11t_slot_token_info[i]); @@ -209,7 +227,7 @@ slot_info(void) } } } - else + else if(p11t_test_unexpected) { /** - Calling on slot without token */ rv = (p11t_module_funcs->C_GetTokenInfo)(p11t_slot_ids[i], &p11t_slot_token_info[i]); @@ -252,10 +270,13 @@ slot_mechanisms(void) if(!p11t_slot_count) return; - /* - Invalid Slot */ - mech_count = 0; - rv = (p11t_module_funcs->C_GetMechanismList)((CK_ULONG)-10, NULL, &mech_count); - p11t_check_returns("C_GetMechanismList: invalid slot id", rv, CKR_SLOT_ID_INVALID); + if(p11t_test_unexpected) + { + /* - Invalid Slot */ + mech_count = 0; + rv = (p11t_module_funcs->C_GetMechanismList)((CK_ULONG)-10, NULL, &mech_count); + p11t_check_returns("C_GetMechanismList: invalid slot id", rv, CKR_SLOT_ID_INVALID); + } p11t_slot_mech_count = calloc(p11t_slot_count, sizeof(CK_ULONG)); assert(p11t_slot_mech_count); @@ -268,9 +289,12 @@ slot_mechanisms(void) { slot_id = p11t_slot_ids[i]; - /** - Null arguments */ - rv = (p11t_module_funcs->C_GetMechanismList)(slot_id, NULL, NULL); - p11t_check_returns("C_GetMechanismList: null arguments", rv, CKR_ARGUMENTS_BAD); + if(p11t_test_unexpected) + { + /** - Null arguments */ + rv = (p11t_module_funcs->C_GetMechanismList)(slot_id, NULL, NULL); + p11t_check_returns("C_GetMechanismList: null arguments", rv, CKR_ARGUMENTS_BAD); + } /** - Without buffer */ rv = (p11t_module_funcs->C_GetMechanismList)(slot_id, NULL, &mech_count); @@ -281,23 +305,29 @@ slot_mechanisms(void) mech_list = calloc(mech_count + 5, sizeof(CK_MECHANISM_TYPE)); assert(mech_list); - /** - Zero count but buffer present */ - value = 0; - rv = (p11t_module_funcs->C_GetMechanismList)(slot_id, mech_list, &value); - p11t_check_returns("C_GetMechanismList: zero buffer", rv, CKR_BUFFER_TOO_SMALL); - p11t_check_ulong("C_GetMechanismList: should have number of mechs", value, mech_count); - - if(mech_count > 1) + if(p11t_test_unexpected) { - /** - Low count but buffer present */ - value = 1; + /** - Zero count but buffer present */ + value = 0; rv = (p11t_module_funcs->C_GetMechanismList)(slot_id, mech_list, &value); - p11t_check_returns("C_GetMechanismList: low buffer", rv, CKR_BUFFER_TOO_SMALL); + p11t_check_returns("C_GetMechanismList: zero buffer", rv, CKR_BUFFER_TOO_SMALL); p11t_check_ulong("C_GetMechanismList: should have number of mechs", value, mech_count); + + if(mech_count > 1) + { + /** - Low count but buffer present */ + value = 1; + rv = (p11t_module_funcs->C_GetMechanismList)(slot_id, mech_list, &value); + p11t_check_returns("C_GetMechanismList: low buffer", rv, CKR_BUFFER_TOO_SMALL); + p11t_check_ulong("C_GetMechanismList: should have number of mechs", value, mech_count); + } } /* - Call with too much buffer */ - value = mech_count + 5; + if(p11t_test_unexpected) + value = mech_count + 5; + else + value = mech_count; rv = (p11t_module_funcs->C_GetMechanismList)(slot_id, mech_list, &value); p11t_check_returns("C_GetMechanismList: high buffer", rv, CKR_OK); p11t_check_ulong("C_GetMechanismList: should have number of mechs", value, mech_count); @@ -308,17 +338,20 @@ slot_mechanisms(void) /** C_GetMechanismInfo */ - /** - Invalid mechanism */ - rv = (p11t_module_funcs->C_GetMechanismInfo)(slot_id, (CK_ULONG)-10, mech_info); - p11t_check_returns("C_GetMechanismInfo: with invalid mech", rv, CKR_MECHANISM_INVALID); + if(p11t_test_unexpected) + { + /** - Invalid mechanism */ + rv = (p11t_module_funcs->C_GetMechanismInfo)(slot_id, (CK_ULONG)-10, mech_info); + p11t_check_returns("C_GetMechanismInfo: with invalid mech", rv, CKR_MECHANISM_INVALID); - /** - Null arguments */ - rv = (p11t_module_funcs->C_GetMechanismInfo)(slot_id, mech_list[0], NULL); - p11t_check_returns("C_GetMechanismInfo: with null arg", rv, CKR_ARGUMENTS_BAD); + /** - Null arguments */ + rv = (p11t_module_funcs->C_GetMechanismInfo)(slot_id, mech_list[0], NULL); + p11t_check_returns("C_GetMechanismInfo: with null arg", rv, CKR_ARGUMENTS_BAD); - /** - Invalid slot id */ - rv = (p11t_module_funcs->C_GetMechanismInfo)((CK_ULONG)-11, mech_list[0], mech_info); - p11t_check_returns("C_GetMechanismInfo: with invalid slot", rv, CKR_SLOT_ID_INVALID); + /** - Invalid slot id */ + rv = (p11t_module_funcs->C_GetMechanismInfo)((CK_ULONG)-11, mech_list[0], mech_info); + p11t_check_returns("C_GetMechanismInfo: with invalid slot", rv, CKR_SLOT_ID_INVALID); + } for(j = 0; j < mech_count; ++j) { |