diff options
Diffstat (limited to 'source4/libcli/ldap')
| -rw-r--r-- | source4/libcli/ldap/ldap_bind.c | 7 | ||||
| -rw-r--r-- | source4/libcli/ldap/ldap_client.c | 9 | 
2 files changed, 10 insertions, 6 deletions
diff --git a/source4/libcli/ldap/ldap_bind.c b/source4/libcli/ldap/ldap_bind.c index e1569e7296..65673116be 100644 --- a/source4/libcli/ldap/ldap_bind.c +++ b/source4/libcli/ldap/ldap_bind.c @@ -234,7 +234,7 @@ _PUBLIC_ NTSTATUS ldap_bind_sasl(struct ldap_connection *conn,  	 * Windows seem not to like double encryption */  	old_gensec_features = cli_credentials_get_gensec_features(creds);  	if (tls_enabled(conn->sock)) { -		cli_credentials_set_gensec_features(creds, 0); +		cli_credentials_set_gensec_features(creds, old_gensec_features & ~(GENSEC_FEATURE_SIGN|GENSEC_FEATURE_SEAL));  	}  	/* this call also sets the gensec_want_features */ @@ -245,7 +245,8 @@ _PUBLIC_ NTSTATUS ldap_bind_sasl(struct ldap_connection *conn,  		goto failed;  	} -	/* reset the original gensec_features */ +	/* reset the original gensec_features (on the credentials +	 * context, so we don't tatoo it ) */  	cli_credentials_set_gensec_features(creds, old_gensec_features);  	if (conn->host) { @@ -393,8 +394,6 @@ _PUBLIC_ NTSTATUS ldap_bind_sasl(struct ldap_connection *conn,  					    &sasl_socket);  		if (!NT_STATUS_IS_OK(status)) goto failed; -		talloc_steal(conn->sock, sasl_socket); -		talloc_unlink(conn, conn->sock);  		conn->sock = sasl_socket;  		packet_set_socket(conn->packet, conn->sock); diff --git a/source4/libcli/ldap/ldap_client.c b/source4/libcli/ldap/ldap_client.c index bca867b033..844238afdb 100644 --- a/source4/libcli/ldap/ldap_client.c +++ b/source4/libcli/ldap/ldap_client.c @@ -38,7 +38,6 @@  #include "param/param.h"  #include "libcli/resolve/resolve.h" -  /**    create a new ldap_connection stucture. The event context is optional  */ @@ -298,7 +297,7 @@ _PUBLIC_ struct composite_context *ldap_connect_send(struct ldap_connection *con  	char protocol[11];  	int ret; -	result = talloc_zero(NULL, struct composite_context); +	result = talloc_zero(conn, struct composite_context);  	if (result == NULL) goto failed;  	result->state = COMPOSITE_STATE_IN_PROGRESS;  	result->async.fn = NULL; @@ -336,6 +335,12 @@ _PUBLIC_ struct composite_context *ldap_connect_send(struct ldap_connection *con  		SMB_ASSERT(sizeof(protocol)>10);  		SMB_ASSERT(sizeof(path)>1024); +		/* LDAPI connections are to localhost, so give the local host name as the target for gensec */ +		conn->host = talloc_asprintf(conn, "%s.%s", lp_netbios_name(conn->lp_ctx),  lp_realm(conn->lp_ctx)); +		if (composite_nomem(conn->host, state->ctx)) { +			return result; +		} +  		/* The %c specifier doesn't null terminate :-( */  		ZERO_STRUCT(path);  		ret = sscanf(url, "%10[^:]://%1025c", protocol, path);  | 
