summaryrefslogtreecommitdiff
path: root/source4/ldap_server/ldap_backend.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2017-09-14 15:07:10 +1200
committerDouglas Bagnall <dbagnall@samba.org>2017-09-20 02:25:30 +0200
commitdd53be2756b7b9d446e9fd8549e71177b6c9d356 (patch)
tree74aba7421e6339459a3570f2b9337940f10e02ac /source4/ldap_server/ldap_backend.c
parentc1e41d489d8b199ad1f7f1546ae50461cda0fbce (diff)
downloadsamba-dd53be2756b7b9d446e9fd8549e71177b6c9d356.tar.gz
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 <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Diffstat (limited to 'source4/ldap_server/ldap_backend.c')
-rw-r--r--source4/ldap_server/ldap_backend.c24
1 files changed, 13 insertions, 11 deletions
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)