コード例 #1
0
/*
 * 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;
}
コード例 #2
0
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;

}