Author: idra
Date: 2004-08-12 22:23:57 +0000 (Thu, 12 Aug 2004)
New Revision: 1792
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/&rev=1792&nolog=1
Log:

split ldap_setup_connection() and provide an ldap_bind_simple() function


Modified:
   branches/SAMBA_4_0/source/libcli/ldap/ldap.c

Changeset:
Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap.c        2004-08-12 21:33:21 UTC (rev 
1791)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap.c        2004-08-12 22:23:57 UTC (rev 
1792)
@@ -1739,42 +1739,62 @@
        return ldap_receive(conn, request->messageid, NULL);
 }
 
-BOOL ldap_setup_connection(struct ldap_connection *conn,
-                          const char *url)
+struct ldap_message *ldap_bind_simple(struct ldap_connection *conn, const char 
*userdn, const char *password)
 {
-       struct ldap_message *msg = new_ldap_message();
        struct ldap_message *response;
-       BOOL result;
+       struct ldap_message *msg;
+       const char *dn, *pw;
 
-       if (msg == NULL)
+       if (conn == NULL || msg == NULL)
                return False;
 
-       if (!ldap_connect(conn, url)) {
-               destroy_ldap_message(msg);
-               return False;
+       if (userdn) {
+               dn = userdn;
+       } else {
+               if (conn->auth_dn) {
+                       dn = conn->auth_dn;
+               } else {
+                       dn = "";
+               }
        }
 
-       msg->messageid = conn->next_msgid++;
-       msg->type = LDAP_TAG_BindRequest;
-       msg->r.BindRequest.version = 3;
-       if (conn->auth_dn) {
-               msg->r.BindRequest.dn = conn->auth_dn;
+       if (password) {
+               pw = password;
        } else {
-               msg->r.BindRequest.dn = "";
+               if (conn->simple_pw) {
+                       pw = conn->simple_pw;
+               } else {
+                       pw = "";
+               }
        }
-       msg->r.BindRequest.mechanism = LDAP_AUTH_MECH_SIMPLE;
-       if (conn->simple_pw) {
-               msg->r.BindRequest.creds.password = conn->simple_pw;
-       } else {
-               msg->r.BindRequest.creds.password = "";
-       }
 
-       if ((response = ldap_transaction(conn, msg)) == NULL)
+       msg =  new_ldap_simple_bind_msg(dn, pw);
+       if (!msg)
                return False;
 
-       result = (response->r.BindResponse.response.resultcode == 0);
+       response = ldap_transaction(conn, msg);
 
        destroy_ldap_message(msg);
+       return response;
+}
+
+BOOL ldap_setup_connection(struct ldap_connection *conn,
+                          const char *url, const char *userdn, const char *password)
+{
+       struct ldap_message *response;
+       BOOL result;
+
+       if (!ldap_connect(conn, url)) {
+               return False;
+       }
+
+       response = ldap_bind_simple(conn, userdn, password);
+       if (response == NULL) {
+               result = False;
+       } else {
+               result = (response->r.BindResponse.response.resultcode == 0);
+       }
+
        destroy_ldap_message(response);
        return result;
 }

Reply via email to