summaryrefslogtreecommitdiff
path: root/source4/torture/rpc
diff options
context:
space:
mode:
Diffstat (limited to 'source4/torture/rpc')
-rw-r--r--source4/torture/rpc/dssync.c77
1 files changed, 28 insertions, 49 deletions
diff --git a/source4/torture/rpc/dssync.c b/source4/torture/rpc/dssync.c
index 50cae5aab7..10717d683b 100644
--- a/source4/torture/rpc/dssync.c
+++ b/source4/torture/rpc/dssync.c
@@ -25,13 +25,12 @@
#include "librpc/gen_ndr/ndr_drsuapi_c.h"
#include "librpc/gen_ndr/ndr_drsblobs.h"
#include "libcli/cldap/cldap.h"
-#include "libcli/ldap/ldap_client.h"
#include "torture/torture.h"
-#include "torture/ldap/proto.h"
#include "../libcli/drsuapi/drsuapi.h"
#include "auth/gensec/gensec.h"
#include "param/param.h"
#include "dsdb/samdb/samdb.h"
+#include "lib/ldb_wrap.h"
#include "torture/rpc/rpc.h"
#include "torture/drs/proto.h"
@@ -47,7 +46,7 @@ struct DsSyncBindInfo {
};
struct DsSyncLDAPInfo {
- struct ldap_connection *conn;
+ struct ldb_context *ldb;
};
struct DsSyncTest {
@@ -240,24 +239,16 @@ static bool _test_DsBind(struct torture_context *tctx,
static bool test_LDAPBind(struct torture_context *tctx, struct DsSyncTest *ctx,
struct cli_credentials *credentials, struct DsSyncLDAPInfo *l)
{
- NTSTATUS status;
bool ret = true;
- status = torture_ldap_connection(tctx, &l->conn, ctx->ldap_url);
- if (!NT_STATUS_IS_OK(status)) {
- printf("failed to connect to LDAP: %s\n", ctx->ldap_url);
- return false;
- }
+ l->ldb = ldb_wrap_connect(tctx, tctx->ev, tctx->lp_ctx, ctx->ldap_url,
+ NULL,
+ credentials,
+ 0);
+ torture_assert(tctx, l->ldb, "Failed to make LDB connection to target");
printf("connected to LDAP: %s\n", ctx->ldap_url);
- status = torture_ldap_bind_sasl(l->conn, credentials, tctx->lp_ctx);
- if (!NT_STATUS_IS_OK(status)) {
- printf("failed to bind to LDAP:\n");
- return false;
- }
- printf("bound to LDAP.\n");
-
return ret;
}
@@ -492,44 +483,32 @@ static void test_analyse_objects(struct torture_context *tctx,
* Fetch LDAP attribute name and DN by supplied OID
*/
static bool _drs_ldap_attr_by_oid(struct torture_context *tctx,
- struct DsSyncTest *ctx,
- const char *oid,
- const char **attr_dn,
- const char **attr_name)
+ struct DsSyncTest *ctx,
+ const char *oid,
+ char **attr_name)
{
- NTSTATUS status;
- const char *config_dn;
- const char *expression;
- struct ldap_message **res_msg;
- struct ldap_SearchResEntry *search_res;
+ struct ldb_dn *config_dn;
+ struct ldb_result *res;
TALLOC_CTX *tmp_ctx = NULL;
const char *search_attrs[] = {"lDAPDisplayName", NULL};
+ int ret;
tmp_ctx = talloc_new(ctx);
- config_dn = talloc_asprintf(tmp_ctx, "CN=Schema,CN=Configuration,%s", ctx->domain_dn);
- expression = talloc_asprintf(tmp_ctx, "(attributeID=%s)", oid);
-
- status = ildap_search(ctx->admin.ldap.conn,
- config_dn, LDAP_SEARCH_SCOPE_SUB,
- expression, search_attrs, false,
- NULL, NULL, &res_msg);
- torture_assert_ntstatus_ok(tctx, status, "LDAP search request failed");
- torture_assert(tctx,
- ildap_count_entries(ctx->admin.ldap.conn, res_msg) == 1,
- talloc_asprintf(tmp_ctx, "Failed to find attribute with OID=%s", oid));
-
- search_res = &res_msg[0]->r.SearchResultEntry;
- torture_assert(tctx, search_res->num_attributes > 0, "No attributes returned!")
- torture_assert(tctx, strequal(search_attrs[0], search_res->attributes[0].name),
- "Requested attributes for attribute class not returned");
-
- if (attr_dn) {
- *attr_dn = search_res->dn;
- }
+ config_dn = ldb_dn_new_fmt(tmp_ctx, ctx->admin.ldap.ldb,
+ "CN=Schema,CN=Configuration,%s", ctx->domain_dn);
+ ret = ldb_search(ctx->admin.ldap.ldb, tmp_ctx, &res, config_dn,
+ LDB_SCOPE_ONELEVEL, search_attrs, "(attributeID=%s)", oid);
+
+ torture_assert_int_equal(tctx,
+ ret, LDB_SUCCESS,
+ "Failed to search for attribute");
+
+ torture_assert_int_equal(tctx,
+ res->count, 1, "Failed to find attribute for OID");
if (attr_name) {
- *attr_name = (const char *)search_res->attributes[0].values[0].data;
+ *attr_name = talloc_strdup(ctx, ldb_msg_find_attr_as_string(res->msgs[0], "lDAPDisplayName", NULL));
}
talloc_free(tmp_ctx);
@@ -550,8 +529,7 @@ static bool _drs_util_verify_attids(struct torture_context *tctx,
DEBUG(1,("drs_test_verify_attids:\n"));
for (; cur; cur = cur->next_object) {
- const char *attr_dn = NULL;
- const char *attr_name = NULL;
+ char *attr_name = NULL;
struct drsuapi_DsReplicaObject *obj = &cur->object;
DEBUG(1,("%3s %-10s: %s\n", "", "object_dn", obj->identifier->dn));
@@ -566,13 +544,14 @@ static bool _drs_util_verify_attids(struct torture_context *tctx,
return false;
}
- if (!_drs_ldap_attr_by_oid(tctx, ctx, oid, &attr_dn, &attr_name)) {
+ if (!_drs_ldap_attr_by_oid(tctx, ctx, oid, &attr_name)) {
return false;
}
DEBUG(1,("%7s attr[%2d]: %-22s {map_idx=%2d; attid=0x%06x; ldap_name=%-26s; idl_name=%s}\n", "",
i, oid, map_idx, attr->attid, attr_name,
drs_util_DsAttributeId_to_string(attr->attid)));
+ talloc_free(attr_name);
}
}