mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +03:00
r7568: enable the NTLMSSP bulk data sign/seal code for out ldap server. This
now works with windows clients, as I fixed the zero length bind ack packet. Andrew, note that this has the strncmp("NTLMSSP", data, 7) hack. Please replace with a more correct fix as we discussed.
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
041bce5913
commit
69b02e8adb
@ -56,8 +56,8 @@ static NTSTATUS ldapsrv_BindSASL(struct ldapsrv_call *call)
|
||||
const char *errstr;
|
||||
NTSTATUS status = NT_STATUS_OK;
|
||||
NTSTATUS sasl_status;
|
||||
/* BOOL ret;
|
||||
*/
|
||||
BOOL ret;
|
||||
|
||||
DEBUG(10, ("BindSASL dn: %s\n",req->dn));
|
||||
|
||||
if (!call->conn->gensec) {
|
||||
@ -71,10 +71,15 @@ static NTSTATUS ldapsrv_BindSASL(struct ldapsrv_call *call)
|
||||
|
||||
gensec_set_target_service(call->conn->gensec, "ldap");
|
||||
|
||||
/*gensec_want_feature(call->conn->gensec, GENSEC_FEATURE_SIGN);
|
||||
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 (req->creds.SASL.secblob.length >= 7 &&
|
||||
strncmp(req->creds.SASL.secblob.data, "NTLMSSP", 7) == 0) {
|
||||
status = gensec_start_mech_by_sasl_name(call->conn->gensec, "NTLM");
|
||||
} else {
|
||||
status = gensec_start_mech_by_sasl_name(call->conn->gensec, req->creds.SASL.mechanism);
|
||||
}
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(1, ("Failed to start GENSEC SASL[%s] server code: %s\n",
|
||||
req->creds.SASL.mechanism, nt_errstr(status)));
|
||||
@ -93,7 +98,7 @@ reply:
|
||||
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
status = gensec_update(call->conn->gensec, reply,
|
||||
req->creds.SASL.secblob, &resp->SASL.secblob);
|
||||
req->creds.SASL.secblob, &resp->SASL.secblob);
|
||||
}
|
||||
|
||||
if (NT_STATUS_EQUAL(NT_STATUS_MORE_PROCESSING_REQUIRED, status)) {
|
||||
@ -123,7 +128,7 @@ reply:
|
||||
return status;
|
||||
}
|
||||
|
||||
/* ret = ldapsrv_append_to_buf(&conn->sasl_out_buffer, conn->out_buffer.data, 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;
|
||||
}
|
||||
@ -131,7 +136,7 @@ reply:
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
status = gensec_session_info(conn->gensec, &conn->session_info);
|
||||
}
|
||||
*/
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user