const struct samr_Password *machine_password,
const struct netr_Credential *credentials_in,
struct netr_Credential *credentials_out,
+ const struct dom_sid *client_sid,
uint32_t negotiate_flags)
{
return NULL;
}
+ creds->sid = dom_sid_dup(creds, client_sid);
+ if (creds->sid == NULL) {
+ talloc_free(creds);
+ return NULL;
+ }
+
if (negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
status = netlogon_creds_init_hmac_sha256(creds,
client_challenge,
const struct samr_Password *machine_password,
const struct netr_Credential *credentials_in,
struct netr_Credential *credentials_out,
+ const struct dom_sid *client_sid,
uint32_t negotiate_flags);
NTSTATUS netlogon_creds_server_step_check(struct netlogon_creds_CredentialState *creds,
const struct netr_Authenticator *received_authenticator,
&mach_pwd,
r->in.credentials,
r->out.return_credentials,
+ &sid,
neg_flags);
if (!creds) {
DEBUG(0,("%s: netlogon_creds_server_check failed. Rejecting auth "
goto out;
}
- creds->sid = dom_sid_dup(creds, &sid);
- if (!creds->sid) {
- status = NT_STATUS_NO_MEMORY;
- goto out;
- }
-
/* Store off the state so we can continue after client disconnect. */
become_root();
status = schannel_save_creds_state(p->mem_ctx, lp_ctx, creds);
return NT_STATUS_ACCESS_DENIED;
}
+ *sid = samdb_result_dom_sid(mem_ctx, msgs[0], "objectSid");
+ if (*sid == NULL) {
+ return NT_STATUS_ACCESS_DENIED;
+ }
+
creds = netlogon_creds_server_init(mem_ctx,
r->in.account_name,
r->in.computer_name,
curNtHash,
r->in.credentials,
r->out.return_credentials,
+ *sid,
negotiate_flags);
if (creds == NULL && prevNtHash != NULL) {
/*
prevNtHash,
r->in.credentials,
r->out.return_credentials,
+ *sid,
negotiate_flags);
}
if (creds == NULL) {
return NT_STATUS_ACCESS_DENIED;
}
- creds->sid = samdb_result_dom_sid(creds, msgs[0], "objectSid");
- *sid = talloc_memdup(mem_ctx, creds->sid, sizeof(struct dom_sid));
nt_status = schannel_save_creds_state(mem_ctx,
dce_call->conn->dce_ctx->lp_ctx,