static bool test_abandon_request(struct torture_context *tctx, struct ldap_connection *conn, const char *basedn) { struct ldap_message *msg; struct ldap_request *req; NTSTATUS status; printf("Testing the AbandonRequest with an old message id!\n"); if (!basedn) { return false; } msg = new_ldap_message(conn); if (!msg) { return false; } printf(" Try a AbandonRequest for an old message id\n"); msg->type = LDAP_TAG_AbandonRequest; msg->r.AbandonRequest.messageid = 1; req = ldap_request_send(conn, msg); if (!req) { return false; } status = ldap_request_wait(req); if (!NT_STATUS_IS_OK(status)) { printf("error in ldap abandon request - %s\n", nt_errstr(status)); return false; } return true; }
/* perform a simple username/password bind */ _PUBLIC_ NTSTATUS ldap_bind_simple(struct ldap_connection *conn, const char *userdn, const char *password) { struct ldap_request *req; struct ldap_message *msg; const char *dn, *pw; NTSTATUS status; if (conn == NULL) { return NT_STATUS_INVALID_CONNECTION; } if (userdn) { dn = userdn; } else { if (conn->auth_dn) { dn = conn->auth_dn; } else { dn = ""; } } if (password) { pw = password; } else { if (conn->simple_pw) { pw = conn->simple_pw; } else { pw = ""; } } msg = new_ldap_simple_bind_msg(conn, dn, pw); NT_STATUS_HAVE_NO_MEMORY(msg); /* send the request */ req = ldap_request_send(conn, msg); talloc_free(msg); NT_STATUS_HAVE_NO_MEMORY(req); /* wait for replies */ status = ldap_request_wait(req); if (!NT_STATUS_IS_OK(status)) { talloc_free(req); return status; } /* check its a valid reply */ msg = req->replies[0]; if (msg->type != LDAP_TAG_BindResponse) { talloc_free(req); return NT_STATUS_UNEXPECTED_NETWORK_ERROR; } status = ldap_check_response(conn, &msg->r.BindResponse.response); talloc_free(req); if (NT_STATUS_IS_OK(status)) { struct ldap_simple_creds *creds = talloc(conn, struct ldap_simple_creds); if (creds == NULL) { return NT_STATUS_NO_MEMORY; } creds->dn = talloc_strdup(creds, dn); creds->pw = talloc_strdup(creds, pw); if (creds->dn == NULL || creds->pw == NULL) { return NT_STATUS_NO_MEMORY; } conn->bind.type = LDAP_BIND_SIMPLE; conn->bind.creds = creds; } return status; }