]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
third_party/heimdal: Import lorikeet-heimdal-202406240121 (commit 4315286377278234be2...
authorJo Sutton <josutton@catalyst.net.nz>
Wed, 12 Jun 2024 02:42:38 +0000 (14:42 +1200)
committerDouglas Bagnall <dbagnall@samba.org>
Thu, 27 Jun 2024 04:29:41 +0000 (04:29 +0000)
This lets us match the Windows FAST reply when the password is expired.

Windows clients were upset by the NTSTATUS field in the edata,
apparently interpreting it to mean “insufficient resource”.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15655

Signed-off-by: Jo Sutton <josutton@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
selftest/knownfail_heimdal_kdc
third_party/heimdal/kdc/fast.c

index b3df84e895902dbca2a4f3accbbabd6d7d00bef2..811d3202729016d649c90cb2623830b5088039bc 100644 (file)
 ^samba\.tests\.krb5\.conditional_ace_tests\.samba\.tests\.krb5\.conditional_ace_tests\.TgsReqServicePolicyTests\.test_pac_device_info_no_compound_id_support_no_claims_valid_existing_device_claims_target_policy\(ad_dc\)$
 ^samba\.tests\.krb5\.conditional_ace_tests\.samba\.tests\.krb5\.conditional_ace_tests\.TgsReqServicePolicyTests\.test_pac_device_info_no_compound_id_support_no_claims_valid_existing_device_claims\(ad_dc\)$
 ^samba\.tests\.krb5\.conditional_ace_tests\.samba\.tests\.krb5\.conditional_ace_tests\.TgsReqServicePolicyTests\.test_pac_device_info_rodc_issued\(ad_dc\)$
-#
-# Lockout tests
-#
-^samba\.tests\.krb5\.lockout_tests\.samba\.tests\.krb5\.lockout_tests\.LockoutTests\.test_lockout_status_disabled_fast\(ad_dc:local\)$
-^samba\.tests\.krb5\.lockout_tests\.samba\.tests\.krb5\.lockout_tests\.LockoutTests\.test_lockout_status_expired_fast\(ad_dc:local\)$
-^samba\.tests\.krb5\.lockout_tests\.samba\.tests\.krb5\.lockout_tests\.LockoutTests\.test_lockout_status_locked_out_fast\(ad_dc:local\)$
-^samba\.tests\.krb5\.lockout_tests\.samba\.tests\.krb5\.lockout_tests\.LockoutTests\.test_lockout_status_must_change_fast\(ad_dc:local\)$
-^samba\.tests\.krb5\.lockout_tests\.samba\.tests\.krb5\.lockout_tests\.LockoutTests\.test_lockout_status_password_expired_fast\(ad_dc:local\)$
index bc77f74664c4b9cf3d8f408cf5ecb80919129e21..d6b6ab2bbb3618c6aa4e434719d7f0b7d156d871 100644 (file)
@@ -482,7 +482,18 @@ _kdc_fast_mk_error(astgs_request_t r,
 
     heim_assert(r != NULL, "invalid request in _kdc_fast_mk_error");
 
-    if (r->e_data.length) {
+    if (!armor_crypto && r->e_data.length) {
+       /*
+        * If we’re not armoring the response with FAST, r->e_data
+        * takes precedence over the e‐data that would normally be
+        * generated. r->e_data typically contains a
+        * Microsoft‐specific NTSTATUS code.
+        *
+        * But if FAST is in use, Windows Server suppresses the
+        * NTSTATUS code in favour of an armored response
+        * encapsulating an ordinary KRB‐ERROR. So we ignore r->e_data
+        * in that case.
+        */
        e_data = &r->e_data;
     } else {
        ret = _kdc_fast_mk_e_data(r,