summaryrefslogtreecommitdiff
path: root/source4/ldap_server/ldap_bind.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2004-12-31 22:45:11 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:07:53 -0500
commit9a6671cf9529fd7817c5ef266da3d3bea46a88c0 (patch)
treee6e943be7351713665c90f962078ac0676c2d036 /source4/ldap_server/ldap_bind.c
parentbe1bbf317b03b15c21ea0f41accfb285699e153f (diff)
downloadsamba-9a6671cf9529fd7817c5ef266da3d3bea46a88c0.tar.gz
samba-9a6671cf9529fd7817c5ef266da3d3bea46a88c0.tar.bz2
samba-9a6671cf9529fd7817c5ef266da3d3bea46a88c0.zip
r4459: GENSEC refinements:
In developing a GSSAPI plugin for GENSEC, it became clear that the API needed to change: - GSSAPI exposes only a wrap() and unwrap() interface, and determines the location of the signature itself. - The 'have feature' API did not correctly function in the recursive SPNEGO environment. As such, NTLMSSP has been updated to support these methods. The LDAP client and server have been updated to use the new wrap() and unwrap() methods, and now pass the LDAP-* tests in our smbtorture. (Unfortunely I still get valgrind warnings, in the code that was previously unreachable). Andrew Bartlett (This used to be commit 9923c3bc1b5a6e93a5996aadb039bd229e888ac6)
Diffstat (limited to 'source4/ldap_server/ldap_bind.c')
-rw-r--r--source4/ldap_server/ldap_bind.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/source4/ldap_server/ldap_bind.c b/source4/ldap_server/ldap_bind.c
index 80d1f51748..f4be5b5242 100644
--- a/source4/ldap_server/ldap_bind.c
+++ b/source4/ldap_server/ldap_bind.c
@@ -20,7 +20,7 @@
#include "includes.h"
#include "ldap_server/ldap_server.h"
-
+#include "auth/auth.h"
static NTSTATUS ldapsrv_BindSimple(struct ldapsrv_call *call)
{
@@ -50,11 +50,12 @@ static NTSTATUS ldapsrv_BindSASL(struct ldapsrv_call *call)
struct ldap_BindRequest *req = &call->request.r.BindRequest;
struct ldapsrv_reply *reply;
struct ldap_BindResponse *resp;
+ struct ldapsrv_connection *conn;
int result;
const char *errstr;
NTSTATUS status = NT_STATUS_OK;
NTSTATUS sasl_status;
- /*BOOL ret;*/
+ BOOL ret;
DEBUG(10, ("BindSASL dn: %s\n",req->dn));
@@ -69,7 +70,8 @@ static NTSTATUS ldapsrv_BindSASL(struct ldapsrv_call *call)
gensec_set_target_service(call->conn->gensec, "ldap");
- /*gensec_want_feature(call->conn->gensec, GENSEC_WANT_SIGN|GENSEC_WANT_SEAL);*/
+ gensec_want_feature(call->conn->gensec, GENSEC_FEATURE_SIGN);
+ gensec_want_feature(call->conn->gensec, GENSEC_FEATURE_SEAL);
status = gensec_start_mech_by_sasl_name(call->conn->gensec, req->creds.SASL.mechanism);
if (!NT_STATUS_IS_OK(status)) {
@@ -85,6 +87,8 @@ reply:
return NT_STATUS_NO_MEMORY;
}
resp = &reply->msg.r.BindResponse;
+
+ conn = call->conn;
if (NT_STATUS_IS_OK(status)) {
status = gensec_update(call->conn->gensec, reply,
@@ -118,17 +122,14 @@ reply:
return status;
}
-/* ret = ldapsrv_append_to_buf(&call->conn->sasl_out_buffer, call->conn->out_buffer.data, call->conn->out_buffer.length);
+ ret = ldapsrv_append_to_buf(&conn->sasl_out_buffer, conn->out_buffer.data, conn->out_buffer.length);
if (!ret) {
return NT_STATUS_NO_MEMORY;
}
- ldapsrv_consumed_from_buf(&call->conn->out_buffer, call->conn->out_buffer.length);
-
- status = gensec_session_info(call->conn->gensec, &call->conn->session_info);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ ldapsrv_consumed_from_buf(&conn->out_buffer, conn->out_buffer.length);
+ if (NT_STATUS_IS_OK(status)) {
+ status = gensec_session_info(conn->gensec, &conn->session_info);
}
-*/
return status;
}