From bab977dad76e9204278c7afe0bb905cda064f488 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 16 Jun 2005 05:39:40 +0000 Subject: r7626: a new ldap client library. Main features are: - hooked into events system, so requests can be truly async and won't interfere with other processing happening at the same time - uses NTSTATUS codes for errors (previously errors were mostly ignored). In a similar fashion to the DOS error handling, I have reserved a range of the NTSTATUS code 32 bit space for LDAP error codes, so a function can return a LDAP error code in a NTSTATUS - much cleaner packet handling (This used to be commit 2e3c660b2fc20e046d82bf1cc296422b6e7dfad0) --- source4/torture/ldap/common.c | 71 ++++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 45 deletions(-) (limited to 'source4/torture/ldap/common.c') diff --git a/source4/torture/ldap/common.c b/source4/torture/ldap/common.c index a65d24804c..f5b2a1254d 100644 --- a/source4/torture/ldap/common.c +++ b/source4/torture/ldap/common.c @@ -28,92 +28,73 @@ NTSTATUS torture_ldap_bind(struct ldap_connection *conn, const char *userdn, const char *password) { - NTSTATUS status = NT_STATUS_UNSUCCESSFUL; - int result; + NTSTATUS status; - if (!conn) { - printf("We need a valid ldap_connection structure and be connected\n"); - return status; + status = ldap_bind_simple(conn, userdn, password); + if (!NT_STATUS_IS_OK(status)) { + printf("Failed to bind with provided credentials - %s\n", + nt_errstr(status)); } - result = ldap_bind_simple(conn, userdn, password); - if (result != LDAP_SUCCESS) { - printf("Failed to bind with provided credentials\n"); - /* FIXME: what abut actually implementing an ldap_connection_free() function ? - :-) sss */ - return status; - } - - return NT_STATUS_OK; + return status; } NTSTATUS torture_ldap_bind_sasl(struct ldap_connection *conn, struct cli_credentials *creds) { - NTSTATUS status = NT_STATUS_UNSUCCESSFUL; - int result; - - if (!conn) { - printf("We need a valid ldap_connection structure and be connected\n"); - return status; - } + NTSTATUS status; - result = ldap_bind_sasl(conn, creds); - if (result != LDAP_SUCCESS) { - printf("Failed to bind with provided credentials and SASL mechanism\n"); - /* FIXME: what abut actually implementing an ldap_connection_free() function ? - :-) sss */ - return status; + status = ldap_bind_sasl(conn, creds); + if (!NT_STATUS_IS_OK(status)) { + printf("Failed sasl bind with provided credentials - %s\n", + nt_errstr(status)); } - return NT_STATUS_OK; + return status; } /* open a ldap connection to a server */ NTSTATUS torture_ldap_connection(TALLOC_CTX *mem_ctx, struct ldap_connection **conn, const char *url) { - NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + NTSTATUS status; if (!url) { printf("You must specify a url string\n"); return NT_STATUS_INVALID_PARAMETER; } - *conn = ldap_connect(mem_ctx, url); - if (!*conn) { - printf("Failed to initialize ldap_connection structure\n"); - return status; + *conn = ldap_new_connection(mem_ctx, NULL); + + status = ldap_connect(*conn, url); + if (!NT_STATUS_IS_OK(status)) { + printf("Failed to connect to ldap server '%s' - %s\n", + url, nt_errstr(status)); } - return NT_STATUS_OK; + return status; } /* open a ldap connection to a server */ NTSTATUS torture_ldap_connection2(TALLOC_CTX *mem_ctx, struct ldap_connection **conn, const char *url, const char *userdn, const char *password) { - NTSTATUS status = NT_STATUS_UNSUCCESSFUL; - int ret; + NTSTATUS status; status = torture_ldap_connection(mem_ctx, conn, url); NT_STATUS_NOT_OK_RETURN(status); - ret = ldap_bind_simple(*conn, userdn, password); - if (ret != LDAP_SUCCESS) { - printf("Failed to connect with url [%s]\n", url); - /* FIXME: what abut actually implementing an ldap_connection_free() function ? - :-) sss */ - return status; + status = ldap_bind_simple(*conn, userdn, password); + if (!NT_STATUS_IS_OK(status)) { + printf("Failed a simple ldap bind - %s\n", ldap_errstr(*conn, status)); } - return NT_STATUS_OK; + return status; } /* close an ldap connection to a server */ NTSTATUS torture_ldap_close(struct ldap_connection *conn) { - /* FIXME: what about actually implementing ldap_close() ? - :-) sss */ + talloc_free(conn); return NT_STATUS_OK; } -- cgit