1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

s3:winbind: Implement dcerpc_samr_chgpasswd_user4 for PamAuthChangePassword

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>

Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Thu Jul 28 12:47:31 UTC 2022 on sn-devel-184
This commit is contained in:
Andreas Schneider 2022-07-26 16:54:36 +02:00 committed by Andreas Schneider
parent 8b80b10406
commit 3469895aca

View File

@ -2898,6 +2898,7 @@ NTSTATUS _wbint_PamAuthChangePassword(struct pipes_struct *p,
bool got_info = false;
struct samr_DomInfo1 *info = NULL;
struct userPwdChangeFailureInformation *reject = NULL;
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
fstring namespace, domain, user;
struct dcerpc_binding_handle *b = NULL;
@ -2953,6 +2954,34 @@ NTSTATUS _wbint_PamAuthChangePassword(struct pipes_struct *p,
b = cli->binding_handle;
status = dcerpc_samr_chgpasswd_user4(cli->binding_handle,
p->mem_ctx,
cli->srv_name_slash,
user,
r->in.old_password,
r->in.new_password,
&result);
if (NT_STATUS_IS_OK(status) && NT_STATUS_IS_OK(result)) {
/* Password successfully changed. */
goto done;
}
if (!NT_STATUS_IS_OK(status)) {
if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE) ||
NT_STATUS_EQUAL(status, NT_STATUS_NOT_SUPPORTED) ||
NT_STATUS_EQUAL(status, NT_STATUS_NOT_IMPLEMENTED)) {
/* DO NOT FALLBACK TO RC4 */
if (lp_weak_crypto() == SAMBA_WEAK_CRYPTO_DISALLOWED) {
result = NT_STATUS_STRONG_CRYPTO_NOT_SUPPORTED;
goto process_result;
}
}
} else {
/* Password change was unsuccessful. */
if (!NT_STATUS_IS_OK(result)) {
goto done;
}
}
result = rpccli_samr_chgpasswd_user3(cli,
p->mem_ctx,
user,