DWORD TryToListChildObjects( PVMDIR_TEST_STATE pState, PCSTR pszContainerName ) { DWORD dwError = 0; PSTR pszUserName = NULL; PSTR pszContainerDn = NULL; dwError = VmDirTestGetGuid(&pszUserName); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirTestCreateUser(pState, pszContainerName, pszUserName, NULL); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirAllocateStringPrintf( &pszContainerDn, "cn=%s,%s", pszContainerName, pState->pszBaseDN); BAIL_ON_VMDIR_ERROR(dwError); dwError = VmDirTestGetObjectList(pState->pLd, pszContainerDn, NULL, NULL, NULL); BAIL_ON_VMDIR_ERROR(dwError); cleanup: return dwError; error: goto cleanup; }
DWORD VmDirTestDeleteContainerByDn( LDAP *pLd, PCSTR pszContainerDn ) { DWORD dwError = 0; DWORD dwIndex = 0; PVMDIR_STRING_LIST pObjectList = NULL; dwError = VmDirTestGetObjectList(pLd, pszContainerDn, &pObjectList); BAIL_ON_VMDIR_ERROR(dwError); for (dwIndex = 0; dwIndex < pObjectList->dwCount; ++dwIndex) { dwError = ldap_delete_ext_s( pLd, pObjectList->pStringList[dwIndex], NULL, NULL); if (dwError == LDAP_NOT_ALLOWED_ON_NONLEAF) { dwError = VmDirTestDeleteContainerByDn( pLd, pObjectList->pStringList[dwIndex]); BAIL_ON_VMDIR_ERROR(dwError); } } dwError = ldap_delete_ext_s(pLd, pszContainerDn, NULL, NULL); BAIL_ON_VMDIR_ERROR(dwError); cleanup: VmDirStringListFree(pObjectList); return dwError; error: goto cleanup; }