From dd53be2756b7b9d446e9fd8549e71177b6c9d356 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 14 Sep 2017 15:07:10 +1200 Subject: ldap_server: Plumb ldb error string from a failed connect to ldapsrv_terminate_connection() However, do not plumb it to the client-seen error string, as it could contain server paths. Signed-off-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- source4/ldap_server/ldap_backend.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'source4/ldap_server/ldap_backend.c') diff --git a/source4/ldap_server/ldap_backend.c b/source4/ldap_server/ldap_backend.c index d4e9030b319..95c7ee7a7f1 100644 --- a/source4/ldap_server/ldap_backend.c +++ b/source4/ldap_server/ldap_backend.c @@ -180,15 +180,17 @@ static int map_ldb_error(TALLOC_CTX *mem_ctx, int ldb_err, /* connect to the sam database */ -NTSTATUS ldapsrv_backend_Init(struct ldapsrv_connection *conn) +int ldapsrv_backend_Init(struct ldapsrv_connection *conn, + char **errstring) { - conn->ldb = samdb_connect(conn, - conn->connection->event.ctx, - conn->lp_ctx, - conn->session_info, - conn->global_catalog ? LDB_FLG_RDONLY : 0); - if (conn->ldb == NULL) { - return NT_STATUS_INTERNAL_DB_CORRUPTION; + int ret = samdb_connect_url(conn, + conn->connection->event.ctx, + conn->lp_ctx, + conn->session_info, + conn->global_catalog ? LDB_FLG_RDONLY : 0, + "sam.ldb", &conn->ldb, errstring); + if (ret != LDB_SUCCESS) { + return ret; } if (conn->server_credentials) { @@ -205,11 +207,11 @@ NTSTATUS ldapsrv_backend_Init(struct ldapsrv_connection *conn) char *sasl_name = talloc_strdup(conn, ops[i]->sasl_name); if (!sasl_name) { - return NT_STATUS_NO_MEMORY; + return LDB_ERR_OPERATIONS_ERROR; } sasl_mechs = talloc_realloc(conn, sasl_mechs, char *, j + 2); if (!sasl_mechs) { - return NT_STATUS_NO_MEMORY; + return LDB_ERR_OPERATIONS_ERROR; } sasl_mechs[j] = sasl_name; talloc_steal(sasl_mechs, sasl_name); @@ -230,7 +232,7 @@ NTSTATUS ldapsrv_backend_Init(struct ldapsrv_connection *conn) ldb_set_opaque(conn->ldb, "remoteAddress", conn->connection->remote_address); - return NT_STATUS_OK; + return LDB_SUCCESS; } struct ldapsrv_reply *ldapsrv_init_reply(struct ldapsrv_call *call, uint8_t type) -- cgit v1.2.1