mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +03:00
s4:dsdb/samdb: pass an existing 'struct ldb_context' to crack_name_to_nt4_name()
There's no point in creating a temporary ldb_context as all direct callers already have a valid struct ldb_context for the local sam. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
@ -648,8 +648,7 @@ static NTSTATUS authsam_check_password_internals(struct auth_method_context *ctx
|
||||
bool is_my_domain = false;
|
||||
|
||||
nt_status = crack_name_to_nt4_name(mem_ctx,
|
||||
ctx->auth_ctx->event_ctx,
|
||||
ctx->auth_ctx->lp_ctx,
|
||||
ctx->auth_ctx->sam_ctx,
|
||||
/*
|
||||
* DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON ?
|
||||
*/
|
||||
|
@ -208,8 +208,7 @@ static NTSTATUS winbind_check_password(struct auth_method_context *ctx,
|
||||
const char *nt4_account = NULL;
|
||||
|
||||
status = crack_name_to_nt4_name(mem_ctx,
|
||||
ctx->auth_ctx->event_ctx,
|
||||
ctx->auth_ctx->lp_ctx,
|
||||
ctx->auth_ctx->sam_ctx,
|
||||
DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,
|
||||
account_name,
|
||||
&nt4_domain, &nt4_account);
|
||||
|
@ -1378,15 +1378,13 @@ NTSTATUS crack_service_principal_name(struct ldb_context *sam_ctx,
|
||||
}
|
||||
|
||||
NTSTATUS crack_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
struct tevent_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct ldb_context *ldb,
|
||||
enum drsuapi_DsNameFormat format_offered,
|
||||
const char *name,
|
||||
const char **nt4_domain, const char **nt4_account)
|
||||
{
|
||||
WERROR werr;
|
||||
struct drsuapi_DsNameInfo1 info1;
|
||||
struct ldb_context *ldb;
|
||||
char *p;
|
||||
|
||||
/* Handle anonymous bind */
|
||||
@ -1396,11 +1394,6 @@ NTSTATUS crack_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
ldb = samdb_connect(mem_ctx, ev_ctx, lp_ctx, system_session(lp_ctx), 0);
|
||||
if (ldb == NULL) {
|
||||
return NT_STATUS_INTERNAL_DB_CORRUPTION;
|
||||
}
|
||||
|
||||
werr = DsCrackNameOneName(ldb, mem_ctx, 0,
|
||||
format_offered,
|
||||
DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,
|
||||
@ -1447,6 +1440,7 @@ NTSTATUS crack_auto_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
const char **nt4_domain,
|
||||
const char **nt4_account)
|
||||
{
|
||||
struct ldb_context *ldb = NULL;
|
||||
enum drsuapi_DsNameFormat format_offered = DRSUAPI_DS_NAME_FORMAT_UNKNOWN;
|
||||
|
||||
/* Handle anonymous bind */
|
||||
@ -1468,7 +1462,11 @@ NTSTATUS crack_auto_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
return NT_STATUS_NO_SUCH_USER;
|
||||
}
|
||||
|
||||
return crack_name_to_nt4_name(mem_ctx, ev_ctx, lp_ctx, format_offered, name, nt4_domain, nt4_account);
|
||||
ldb = samdb_connect(mem_ctx, ev_ctx, lp_ctx, system_session(lp_ctx), 0);
|
||||
if (ldb == NULL) {
|
||||
return NT_STATUS_INTERNAL_DB_CORRUPTION;
|
||||
}
|
||||
return crack_name_to_nt4_name(mem_ctx, ldb, format_offered, name, nt4_domain, nt4_account);
|
||||
}
|
||||
|
||||
|
||||
|
@ -263,7 +263,10 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct tevent_context *ev_ctx,
|
||||
}
|
||||
username = p + 1;
|
||||
} else if (strchr_m(name, '@')) {
|
||||
status = crack_name_to_nt4_name(mem_ctx, ev_ctx, lp_ctx, DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL, name, &domain, &username);
|
||||
status = crack_name_to_nt4_name(mem_ctx,
|
||||
state->sam_ldb,
|
||||
DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,
|
||||
name, &domain, &username);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(3, ("Failed to crack name %s into an NT4 name: %s\n", name, nt_errstr(status)));
|
||||
return status;
|
||||
|
Reference in New Issue
Block a user