mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
r20905: Windows 2000 returns NT_STATUS_ACCOUNT_RESTRICTION if the pw
chnage fails due to policy settings where as 2003 (the chgpasswd3()
request) fails with NT_STATUS_PASSWORD_RESTRICTION. Thunk down
to the same return code so we correctly retreive the password policy
in both cases.
(This used to be commit 262bb80e9c
)
This commit is contained in:
parent
cf629dc495
commit
c47347ebe9
@ -1865,9 +1865,9 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact
|
|||||||
|
|
||||||
result = rpccli_samr_chgpasswd3(cli, state->mem_ctx, user, newpass, oldpass, &info, &reject);
|
result = rpccli_samr_chgpasswd3(cli, state->mem_ctx, user, newpass, oldpass, &info, &reject);
|
||||||
|
|
||||||
/* FIXME: need to check for other error codes ? */
|
/* Windows 2003 returns NT_STATUS_PASSWORD_RESTRICTION */
|
||||||
if (NT_STATUS_EQUAL(result, NT_STATUS_PASSWORD_RESTRICTION)) {
|
|
||||||
|
|
||||||
|
if (NT_STATUS_EQUAL(result, NT_STATUS_PASSWORD_RESTRICTION) ) {
|
||||||
state->response.data.auth.policy.min_length_password =
|
state->response.data.auth.policy.min_length_password =
|
||||||
info.min_length_password;
|
info.min_length_password;
|
||||||
state->response.data.auth.policy.password_history =
|
state->response.data.auth.policy.password_history =
|
||||||
@ -1883,9 +1883,10 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact
|
|||||||
reject.reject_reason;
|
reject.reject_reason;
|
||||||
|
|
||||||
got_info = True;
|
got_info = True;
|
||||||
|
}
|
||||||
|
|
||||||
/* only fallback when the chgpasswd3 call is not supported */
|
/* only fallback when the chgpasswd3 call is not supported */
|
||||||
} else if ((NT_STATUS_EQUAL(result, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR))) ||
|
if ((NT_STATUS_EQUAL(result, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR))) ||
|
||||||
(NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED)) ||
|
(NT_STATUS_EQUAL(result, NT_STATUS_NOT_SUPPORTED)) ||
|
||||||
(NT_STATUS_EQUAL(result, NT_STATUS_NOT_IMPLEMENTED))) {
|
(NT_STATUS_EQUAL(result, NT_STATUS_NOT_IMPLEMENTED))) {
|
||||||
|
|
||||||
@ -1893,6 +1894,13 @@ enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact
|
|||||||
nt_errstr(result)));
|
nt_errstr(result)));
|
||||||
|
|
||||||
result = rpccli_samr_chgpasswd_user(cli, state->mem_ctx, user, newpass, oldpass);
|
result = rpccli_samr_chgpasswd_user(cli, state->mem_ctx, user, newpass, oldpass);
|
||||||
|
|
||||||
|
/* Windows 2000 returns NT_STATUS_ACCOUNT_RESTRICTION.
|
||||||
|
Map to the same status code as Windows 2003. */
|
||||||
|
|
||||||
|
if ( NT_STATUS_EQUAL(NT_STATUS_ACCOUNT_RESTRICTION, result ) ) {
|
||||||
|
result = NT_STATUS_PASSWORD_RESTRICTION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
Loading…
Reference in New Issue
Block a user