summaryrefslogtreecommitdiff
path: root/source4/libcli/ldap/ldap_bind.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/libcli/ldap/ldap_bind.c')
-rw-r--r--source4/libcli/ldap/ldap_bind.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/source4/libcli/ldap/ldap_bind.c b/source4/libcli/ldap/ldap_bind.c
index 6714d68b0e..2b209c3871 100644
--- a/source4/libcli/ldap/ldap_bind.c
+++ b/source4/libcli/ldap/ldap_bind.c
@@ -27,6 +27,8 @@
#include "libcli/ldap/ldap_client.h"
#include "lib/tls/tls.h"
#include "auth/auth.h"
+#include "auth/gensec/socket.h"
+#include "lib/stream/packet.h"
struct ldap_simple_creds {
const char *dn;
@@ -365,15 +367,23 @@ NTSTATUS ldap_bind_sasl(struct ldap_connection *conn, struct cli_credentials *cr
}
}
- if (NT_STATUS_IS_OK(status) &&
- (gensec_have_feature(conn->gensec, GENSEC_FEATURE_SEAL) ||
- gensec_have_feature(conn->gensec, GENSEC_FEATURE_SIGN))) {
- conn->enable_wrap = True;
- }
-
talloc_free(tmp_ctx);
if (NT_STATUS_IS_OK(status)) {
+ struct socket_context *socket = gensec_socket_init(conn->gensec,
+ conn->sock,
+ conn->event.event_ctx,
+ ldap_read_io_handler,
+ conn);
+ if (socket) {
+ conn->sock = socket;
+ talloc_steal(conn->sock, socket);
+ packet_set_socket(conn->packet, socket);
+ } else {
+ status = NT_STATUS_NO_MEMORY;
+ goto failed;
+ }
+
conn->bind.type = LDAP_BIND_SASL;
conn->bind.creds = creds;
}