svn commit: samba r1792 - branches/SAMBA_4_0/source/libcli/ldap

idra at samba.org idra at samba.org
Thu Aug 12 22:23:57 GMT 2004


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;
 }



More information about the samba-cvs mailing list