/* * Lwt_LsaOpenSession * * Check that LsaEnumUsers, LsaBeginEnumUsers, LsaEndEnumUsers behave * as expected, mostly by matching information against pUsersCsv. */ DWORD Lwt_LsaOpenSession( HANDLE hLsaConnection, PTESTDATA pTestData ) { DWORD dwError = LW_ERROR_SUCCESS; DWORD dwLocalError = LW_ERROR_SUCCESS; size_t nCurrentUser; PLWTUSER pUser = NULL; if ( ! pTestData) { dwError = LW_ERROR_TEST_SKIPPED; goto error; } /* For each user (line), verify the information is correct. */ for ( nCurrentUser = 0; nCurrentUser < pTestData->dwNumUsers; nCurrentUser++) { dwLocalError = GetUser(pTestData, nCurrentUser, &pUser); BAIL_ON_TEST_BROKE(dwLocalError); if ( !IsNullOrEmpty(pUser->pszNTName) ) { dwLocalError = CheckLsaOpenSession( hLsaConnection, pUser->pszNTName, pUser); BAIL_ON_TEST_BROKE(dwLocalError); } if ( !IsNullOrEmpty(pUser->pszUserPrincipalName) ) { dwLocalError = CheckLsaOpenSession( hLsaConnection, pUser->pszUserPrincipalName, pUser); BAIL_ON_TEST_BROKE(dwLocalError); } FreeUser(&pUser); } dwLocalError = VerifyNullHandling(hLsaConnection); BAIL_ON_TEST_BROKE(dwLocalError); cleanup: return dwError; error: goto cleanup; }
DWORD Lwt_LsaFindUserByName( HANDLE hLsaConnection, PTESTDATA pTestData ) { DWORD dwError = LW_ERROR_SUCCESS; DWORD dwLocalError = LW_ERROR_SUCCESS; size_t nCurrentUser; PLWTUSER pUser = NULL; PLSA_USER_INFO_0 pUserInfo0 = NULL; PLSA_USER_INFO_1 pUserInfo1 = NULL; if ( ! pTestData ) { dwError = LW_ERROR_TEST_SKIPPED; goto error; } /* For each user (line), verify the information is correct. */ for ( nCurrentUser = 0; nCurrentUser < pTestData->dwNumUsers; nCurrentUser++ ) { dwLocalError = GetUser( pTestData, nCurrentUser, &pUser); BAIL_ON_TEST_BROKE(dwLocalError); if ( pUser->pszNTName ) { dwLocalError = FindUserByName0( hLsaConnection, pUser, pUser->pszNTName, &pUserInfo0); BAIL_ON_TEST_BROKE(dwLocalError); } if ( pUserInfo0 ) { dwLocalError = MatchUserInfo0( pUser, pUser->pszNTName, pUserInfo0); BAIL_ON_TEST_BROKE(dwLocalError); LsaFreeUserInfo(0, pUserInfo0); pUserInfo0 = NULL; } if ( pUser->pszUserPrincipalName ) { dwLocalError = FindUserByName0( hLsaConnection, pUser, pUser->pszUserPrincipalName, &pUserInfo0); BAIL_ON_TEST_BROKE(dwLocalError); } if ( pUserInfo0 ) { dwLocalError = MatchUserInfo0( pUser, pUser->pszUserPrincipalName, pUserInfo0); BAIL_ON_TEST_BROKE(dwLocalError); LsaFreeUserInfo(0, pUserInfo0); pUserInfo0 = NULL; } if ( pUser->pszNTName ) { dwLocalError = FindUserByName1( hLsaConnection, pUser, pUser->pszNTName, &pUserInfo1); BAIL_ON_TEST_BROKE(dwLocalError); } if ( pUserInfo1 ) { LsaFreeUserInfo(1, pUserInfo1); pUserInfo1 = NULL; } FreeUser(&pUser); } dwLocalError = VerifyNullHandling(hLsaConnection); BAIL_ON_TEST_BROKE(dwLocalError); dwLocalError = ValidateForInvalidParams(hLsaConnection, pTestData); BAIL_ON_TEST_BROKE(dwLocalError); cleanup: if ( pUserInfo0 ) { LsaFreeUserInfo(0, pUserInfo0); pUserInfo0 = NULL; } if ( pUserInfo1 ) { LsaFreeUserInfo(1, pUserInfo1); pUserInfo1 = NULL; } if ( pUser ) { FreeUser(&pUser); } return dwError; error: goto cleanup; }