Align locked out account behaviour with Windows
authorGary Lockyer <gary@catalyst.net.nz>
Wed, 20 Sep 2017 03:35:10 +0000 (15:35 +1200)
committerStefan Metzmacher <metze@samba.org>
Wed, 29 Apr 2020 09:07:57 +0000 (11:07 +0200)
Windows does not check the password on an account that has been locked.

Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
kdc/kerberos5.c

index 7f780da3a0659eb34bef57e0260966c4ecce24dc..75a90c41527f1978d0e8821eb3283db984fa1675 100644 (file)
@@ -518,6 +518,14 @@ pa_enc_chal_validate(astgs_request_t r, const PA_DATA *pa)
        return ret;
     }
 
+    if (r->client->entry.flags.locked_out) {
+       ret = KRB5KDC_ERR_CLIENT_REVOKED;
+       kdc_log(r->context, r->config, 0,
+               "Client (%s) is locked out", r->client_name);
+       return ret;
+    }
+
+
     ret = decode_EncryptedData(pa->padata_value.data,
                               pa->padata_value.length,
                               &enc_data,
@@ -659,7 +667,14 @@ pa_enc_ts_validate(astgs_request_t r, const PA_DATA *pa)
     size_t len;
     Key *pa_key;
     char *str;
-       
+
+    if (r->client->entry.flags.locked_out) {
+       ret = KRB5KDC_ERR_CLIENT_REVOKED;
+       kdc_log(r->context, r->config, 0,
+               "Client (%s) is locked out", r->client_name);
+       return ret;
+    }
+
     ret = decode_EncryptedData(pa->padata_value.data,
                               pa->padata_value.length,
                               &enc_data,