diff options
author | Andrew Bartlett <abartlet@samba.org> | 2017-09-14 15:07:10 +1200 |
---|---|---|
committer | Douglas Bagnall <dbagnall@samba.org> | 2017-09-20 02:25:30 +0200 |
commit | dd53be2756b7b9d446e9fd8549e71177b6c9d356 (patch) | |
tree | 74aba7421e6339459a3570f2b9337940f10e02ac /source4/ldap_server/ldap_backend.c | |
parent | c1e41d489d8b199ad1f7f1546ae50461cda0fbce (diff) | |
download | samba-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.c | 24 |
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) |