mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
r18636: Excessive testing with pam_winbind within Samba3 revealed a new samr
reject reason code while password changing: SAMR_REJECT_IN_HISTORY which is different from SAMR_REJECT_COMPLEXITY. torture test to follow as well. Guenther (This used to be commit 7513748208214339e764cc990aa1dbbcf864975a)
This commit is contained in:
parent
d8df6d1a81
commit
8153859fb4
@ -1282,13 +1282,13 @@ _PUBLIC_ NTSTATUS samdb_set_password(struct ldb_context *ctx, TALLOC_CTX *mem_ct
|
||||
if (pwdHistoryLength > 0) {
|
||||
if (lmNewHash && lmPwdHash && memcmp(lmNewHash->hash, lmPwdHash->hash, 16) == 0) {
|
||||
if (reject_reason) {
|
||||
*reject_reason = SAMR_REJECT_COMPLEXITY;
|
||||
*reject_reason = SAMR_REJECT_IN_HISTORY;
|
||||
}
|
||||
return NT_STATUS_PASSWORD_RESTRICTION;
|
||||
}
|
||||
if (ntNewHash && ntPwdHash && memcmp(ntNewHash->hash, ntPwdHash->hash, 16) == 0) {
|
||||
if (reject_reason) {
|
||||
*reject_reason = SAMR_REJECT_COMPLEXITY;
|
||||
*reject_reason = SAMR_REJECT_IN_HISTORY;
|
||||
}
|
||||
return NT_STATUS_PASSWORD_RESTRICTION;
|
||||
}
|
||||
@ -1301,7 +1301,7 @@ _PUBLIC_ NTSTATUS samdb_set_password(struct ldb_context *ctx, TALLOC_CTX *mem_ct
|
||||
for (i=0; lmNewHash && i<sambaLMPwdHistory_len;i++) {
|
||||
if (memcmp(lmNewHash->hash, sambaLMPwdHistory[i].hash, 16) == 0) {
|
||||
if (reject_reason) {
|
||||
*reject_reason = SAMR_REJECT_COMPLEXITY;
|
||||
*reject_reason = SAMR_REJECT_IN_HISTORY;
|
||||
}
|
||||
return NT_STATUS_PASSWORD_RESTRICTION;
|
||||
}
|
||||
@ -1309,7 +1309,7 @@ _PUBLIC_ NTSTATUS samdb_set_password(struct ldb_context *ctx, TALLOC_CTX *mem_ct
|
||||
for (i=0; ntNewHash && i<sambaNTPwdHistory_len;i++) {
|
||||
if (memcmp(ntNewHash->hash, sambaNTPwdHistory[i].hash, 16) == 0) {
|
||||
if (reject_reason) {
|
||||
*reject_reason = SAMR_REJECT_COMPLEXITY;
|
||||
*reject_reason = SAMR_REJECT_IN_HISTORY;
|
||||
}
|
||||
return NT_STATUS_PASSWORD_RESTRICTION;
|
||||
}
|
||||
|
@ -134,6 +134,9 @@ static BOOL kpasswd_make_pwchange_reply(struct kdc_server *kdc,
|
||||
case SAMR_REJECT_COMPLEXITY:
|
||||
reject_string = "Password does not meet complexity requirements";
|
||||
break;
|
||||
case SAMR_REJECT_IN_HISTORY:
|
||||
reject_string = "Password is already in password history";
|
||||
break;
|
||||
case SAMR_REJECT_OTHER:
|
||||
default:
|
||||
reject_string = talloc_asprintf(mem_ctx, "Password must be at least %d characters long, and cannot match any of your %d previous passwords",
|
||||
|
@ -40,7 +40,8 @@ interface misc
|
||||
typedef [public,v1_enum] enum {
|
||||
SAMR_REJECT_OTHER = 0,
|
||||
SAMR_REJECT_TOO_SHORT = 1,
|
||||
SAMR_REJECT_COMPLEXITY = 2
|
||||
SAMR_REJECT_IN_HISTORY = 2,
|
||||
SAMR_REJECT_COMPLEXITY = 5
|
||||
} samr_RejectReason;
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user