/* connect to the sam database */ NTSTATUS ldapsrv_backend_Init(struct ldapsrv_connection *conn) { conn->ldb = ldb_wrap_connect(conn, lp_sam_url(), conn->session_info, NULL, conn->global_catalog ? LDB_FLG_RDONLY : 0, NULL); if (conn->ldb == NULL) { return NT_STATUS_INTERNAL_DB_CORRUPTION; } if (conn->server_credentials) { char **sasl_mechs = NULL; struct gensec_security_ops **backends = gensec_security_all(); enum credentials_use_kerberos use_kerberos = cli_credentials_get_kerberos_state(conn->server_credentials); struct gensec_security_ops **ops = gensec_use_kerberos_mechs(conn, backends, use_kerberos); int i, j = 0; for (i = 0; ops && ops[i]; i++) { if (ops[i]->sasl_name && ops[i]->server_start) { char *sasl_name = talloc_strdup(conn, ops[i]->sasl_name); if (!sasl_name) { return NT_STATUS_NO_MEMORY; } sasl_mechs = talloc_realloc(conn, sasl_mechs, char *, j + 2); if (!sasl_mechs) { return NT_STATUS_NO_MEMORY; } sasl_mechs[j] = sasl_name; talloc_steal(sasl_mechs, sasl_name); sasl_mechs[j+1] = NULL; j++; } }
/* connect to the sam database */ NTSTATUS ldapsrv_backend_Init(struct ldapsrv_connection *conn) { 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; } if (conn->server_credentials) { char **sasl_mechs = NULL; const struct gensec_security_ops * const *backends = gensec_security_all(); const struct gensec_security_ops **ops = gensec_use_kerberos_mechs(conn, backends, conn->server_credentials); unsigned int i, j = 0; for (i = 0; ops && ops[i]; i++) { if (!lpcfg_parm_bool(conn->lp_ctx, NULL, "gensec", ops[i]->name, ops[i]->enabled)) continue; if (ops[i]->sasl_name && ops[i]->server_start) { char *sasl_name = talloc_strdup(conn, ops[i]->sasl_name); if (!sasl_name) { return NT_STATUS_NO_MEMORY; } sasl_mechs = talloc_realloc(conn, sasl_mechs, char *, j + 2); if (!sasl_mechs) { return NT_STATUS_NO_MEMORY; } sasl_mechs[j] = sasl_name; talloc_steal(sasl_mechs, sasl_name); sasl_mechs[j+1] = NULL; j++; } }