[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Wed Jun 21 13:20:01 UTC 2023
The branch, master has been updated
via ad98643fbd9 s4:kdc: Replace FAST cookie with dummy string
via fc4740426d2 third_party/heimdal: Import lorikeet-heimdal-202306112240 (commit c7f4ffe1a6e8dafc86ec3357c498d31c97ece386)
via 53caae00b82 tests/krb5: Test that FX-COOKIE matches cookie returned by Windows
from c4e27ae4f69 smbd: Don't set security_descriptor_hash_v4->time
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit ad98643fbd914b7fb28d43a36bd51eeb1f8e2e06
Author: Joseph Sutton <josephsutton at catalyst.net.nz>
Date: Fri Jun 9 15:46:33 2023 +1200
s4:kdc: Replace FAST cookie with dummy string
All that uses the FAST cookie is the gss-preauth authentication
mechanism, which is untested in Samba, and disabled by default.
Disabling the FAST cookie code (and sending a dummy string instead)
relieves us of the maintenance and testing burden of this untested code.
Signed-off-by: Joseph Sutton <josephsutton at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
Autobuild-Date(master): Wed Jun 21 13:19:17 UTC 2023 on atb-devel-224
commit fc4740426d2f43ca7703e3e4e6ef71c902ce5cd3
Author: Joseph Sutton <josephsutton at catalyst.net.nz>
Date: Mon Jun 12 12:12:06 2023 +1200
third_party/heimdal: Import lorikeet-heimdal-202306112240 (commit c7f4ffe1a6e8dafc86ec3357c498d31c97ece386)
Signed-off-by: Joseph Sutton <josephsutton at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 53caae00b824e1fe67a67978a5ad604964f10c7a
Author: Joseph Sutton <josephsutton at catalyst.net.nz>
Date: Mon Jun 12 13:06:21 2023 +1200
tests/krb5: Test that FX-COOKIE matches cookie returned by Windows
The cookie produced by Windows differs depending on whether FAST was
used.
Signed-off-by: Joseph Sutton <josephsutton at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
-----------------------------------------------------------------------
Summary of changes:
python/samba/tests/krb5/fast_tests.py | 87 +++++++++++++++++++++++
selftest/knownfail_heimdal_kdc | 1 +
selftest/knownfail_mit_kdc | 3 +
source4/kdc/db-glue.c | 19 -----
source4/kdc/hdb-samba4.c | 117 +------------------------------
source4/kdc/kdc-heimdal.c | 29 ++++++++
source4/kdc/samba_kdc.h | 2 -
third_party/heimdal/kdc/default_config.c | 9 +++
third_party/heimdal/kdc/fast.c | 72 ++++++++++++++-----
third_party/heimdal/kdc/kdc.h | 7 ++
third_party/heimdal/kdc/kerberos5.c | 7 +-
third_party/heimdal/lib/krb5/krb5.conf.5 | 3 +
12 files changed, 203 insertions(+), 153 deletions(-)
Changeset truncated at 500 lines:
diff --git a/python/samba/tests/krb5/fast_tests.py b/python/samba/tests/krb5/fast_tests.py
index e57ea5e1c4b..1c4b5256cef 100755
--- a/python/samba/tests/krb5/fast_tests.py
+++ b/python/samba/tests/krb5/fast_tests.py
@@ -1418,6 +1418,86 @@ class FAST_Tests(KDCBaseTest):
}
])
+ def test_fx_cookie_fast(self):
+ """Test that the FAST cookie is present and that its value is as
+ expected when FAST is used."""
+ kdc_exchange_dict = self._run_test_sequence([
+ {
+ 'rep_type': KRB_AS_REP,
+ 'expected_error_mode': KDC_ERR_PREAUTH_REQUIRED,
+ 'use_fast': True,
+ 'fast_armor': FX_FAST_ARMOR_AP_REQUEST,
+ 'gen_armor_tgt_fn': self.get_mach_tgt
+ },
+ ])
+
+ cookie = kdc_exchange_dict.get('fast_cookie')
+ self.assertEqual(b'Microsoft', cookie)
+
+ def test_fx_cookie_no_fast(self):
+ """Test that the FAST cookie is present and that its value is as
+ expected when FAST is not used."""
+ kdc_exchange_dict = self._run_test_sequence([
+ {
+ 'rep_type': KRB_AS_REP,
+ 'expected_error_mode': KDC_ERR_PREAUTH_REQUIRED,
+ 'use_fast': False
+ },
+ ])
+
+ cookie = kdc_exchange_dict.get('fast_cookie')
+ self.assertEqual(b'Microsof\x00', cookie)
+
+ def test_unsolicited_fx_cookie_preauth(self):
+ """Test sending an unsolicited FX-COOKIE in an AS-REQ without
+ pre-authentication data."""
+
+ # Include a FAST cookie.
+ fast_cookie = self.create_fast_cookie('Samba-Test')
+
+ kdc_exchange_dict = self._run_test_sequence([
+ {
+ 'rep_type': KRB_AS_REP,
+ 'expected_error_mode': KDC_ERR_PREAUTH_REQUIRED,
+ 'use_fast': True,
+ 'fast_armor': FX_FAST_ARMOR_AP_REQUEST,
+ 'gen_armor_tgt_fn': self.get_mach_tgt,
+ 'fast_cookie': fast_cookie,
+ },
+ ])
+
+ got_cookie = kdc_exchange_dict.get('fast_cookie')
+ self.assertEqual(b'Microsoft', got_cookie)
+
+ def test_unsolicited_fx_cookie_fast(self):
+ """Test sending an unsolicited FX-COOKIE in an AS-REQ with
+ pre-authentication data."""
+
+ # Include a FAST cookie.
+ fast_cookie = self.create_fast_cookie('Samba-Test')
+
+ kdc_exchange_dict = self._run_test_sequence([
+ {
+ 'rep_type': KRB_AS_REP,
+ 'expected_error_mode': KDC_ERR_PREAUTH_REQUIRED,
+ 'use_fast': True,
+ 'fast_armor': FX_FAST_ARMOR_AP_REQUEST,
+ 'gen_armor_tgt_fn': self.get_mach_tgt,
+ },
+ {
+ 'rep_type': KRB_AS_REP,
+ 'expected_error_mode': 0,
+ 'use_fast': True,
+ 'gen_padata_fn': self.generate_enc_challenge_padata,
+ 'fast_armor': FX_FAST_ARMOR_AP_REQUEST,
+ 'gen_armor_tgt_fn': self.get_mach_tgt,
+ 'fast_cookie': fast_cookie,
+ }
+ ])
+
+ got_cookie = kdc_exchange_dict.get('fast_cookie')
+ self.assertIsNone(got_cookie)
+
def generate_enc_timestamp_padata(self,
kdc_exchange_dict,
callback_dict,
@@ -1697,6 +1777,11 @@ class FAST_Tests(KDCBaseTest):
preauth_key = None
if use_fast:
+ try:
+ fast_cookie = kdc_dict.pop('fast_cookie')
+ except KeyError:
+ pass
+
generate_fast_padata_fn = gen_padata_fn
generate_padata_fn = (functools.partial(_generate_padata_copy,
padata=[fast_cookie])
@@ -1869,6 +1954,8 @@ class FAST_Tests(KDCBaseTest):
# Ensure we used all the parameters given to us.
self.assertEqual({}, kdc_dict)
+ return kdc_exchange_dict
+
def generate_enc_pa_rep_padata(self,
kdc_exchange_dict,
callback_dict,
diff --git a/selftest/knownfail_heimdal_kdc b/selftest/knownfail_heimdal_kdc
index 4dcd20107ba..ea2537530f8 100644
--- a/selftest/knownfail_heimdal_kdc
+++ b/selftest/knownfail_heimdal_kdc
@@ -17,6 +17,7 @@
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_hide_client_names.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_tgs_armor_enc_pa_rep.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_tgs_enc_pa_rep.ad_dc
+^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fx_cookie_no_fast.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_simple_tgs_enc_pa_rep.ad_dc
#
# S4U tests
diff --git a/selftest/knownfail_mit_kdc b/selftest/knownfail_mit_kdc
index 6b6482f3295..9c5b76cac5a 100644
--- a/selftest/knownfail_mit_kdc
+++ b/selftest/knownfail_mit_kdc
@@ -262,10 +262,13 @@ samba.tests.krb5.as_canonicalization_tests.samba.tests.krb5.as_canonicalization_
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_tgs_enc_pa_rep.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_tgs_no_sname.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_tgs_rodc_issued_armor.ad_dc
+^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fx_cookie_fast.ad_dc
+^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fx_cookie_no_fast.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_simple_as_req_self_no_auth_data.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_simple_no_sname.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_simple_tgs_enc_pa_rep.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_simple_tgs_no_sname.ad_dc
+^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_unsolicited_fx_cookie_preauth.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_inner_no_sname.ad_dc
^samba.tests.krb5.fast_tests.samba.tests.krb5.fast_tests.FAST_Tests.test_fast_tgs_inner_no_sname.ad_dc
#
diff --git a/source4/kdc/db-glue.c b/source4/kdc/db-glue.c
index 112c9556e93..ae90896d572 100644
--- a/source4/kdc/db-glue.c
+++ b/source4/kdc/db-glue.c
@@ -3536,25 +3536,6 @@ NTSTATUS samba_kdc_setup_db_ctx(TALLOC_CTX *mem_ctx, struct samba_kdc_base_conte
return NT_STATUS_INTERNAL_ERROR;
}
- /* Setup the link to secrets.ldb */
-
- kdc_db_ctx->secrets_db = secrets_db_connect(kdc_db_ctx,
- base_ctx->lp_ctx);
- if (kdc_db_ctx->secrets_db == NULL) {
- DEBUG(1, ("samba_kdc_setup_db_ctx: "
- "Cannot open secrets.ldb for KDC backend!"));
- talloc_free(kdc_db_ctx);
- return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
- }
-
- kdc_db_ctx->fx_cookie_dn = ldb_dn_new(kdc_db_ctx,
- kdc_db_ctx->secrets_db,
- "CN=FX Cookie");
- if (kdc_db_ctx->fx_cookie_dn == NULL) {
- talloc_free(kdc_db_ctx);
- return NT_STATUS_NO_MEMORY;
- }
-
/* Setup the link to LDB */
kdc_db_ctx->samdb = samdb_connect(kdc_db_ctx,
base_ctx->ev_ctx,
diff --git a/source4/kdc/hdb-samba4.c b/source4/kdc/hdb-samba4.c
index 96c1ee5e072..90e52f60cef 100644
--- a/source4/kdc/hdb-samba4.c
+++ b/source4/kdc/hdb-samba4.c
@@ -119,125 +119,12 @@ static void hdb_samba4_free_entry_context(krb5_context context, struct HDB *db,
}
}
-static int hdb_samba4_fill_fast_cookie(krb5_context context,
- struct samba_kdc_db_context *kdc_db_ctx)
-{
- struct ldb_message *msg = ldb_msg_new(kdc_db_ctx);
- int ldb_ret;
-
- uint8_t secretbuffer[32];
- struct ldb_val val = data_blob_const(secretbuffer,
- sizeof(secretbuffer));
-
- if (msg == NULL) {
- DBG_ERR("Failed to allocate msg for new fast cookie\n");
- return LDB_ERR_OPERATIONS_ERROR;
- }
-
- /* Fill in all the keys with the same secret */
- generate_secret_buffer(secretbuffer,
- sizeof(secretbuffer));
-
- msg->dn = kdc_db_ctx->fx_cookie_dn;
-
- ldb_ret = ldb_msg_add_value(msg, "secret", &val, NULL);
-
- if (ldb_ret != LDB_SUCCESS) {
- return ldb_ret;
- }
-
- ldb_ret = ldb_add(kdc_db_ctx->secrets_db,
- msg);
- if (ldb_ret != LDB_SUCCESS) {
- DBG_ERR("Failed to add fast cookie to ldb: %s\n",
- ldb_errstring(kdc_db_ctx->secrets_db));
- }
- return ldb_ret;
-}
-
static krb5_error_code hdb_samba4_fetch_fast_cookie(krb5_context context,
struct samba_kdc_db_context *kdc_db_ctx,
hdb_entry *entry)
{
- krb5_error_code ret = SDB_ERR_NOENTRY;
- TALLOC_CTX *mem_ctx;
- struct ldb_result *res;
- int ldb_ret;
- struct sdb_entry sentry = {};
- const char *attrs[] = {
- "secret",
- NULL
- };
- const struct ldb_val *val;
-
- mem_ctx = talloc_named(kdc_db_ctx, 0, "hdb_samba4_fetch_fast_cookie context");
- if (!mem_ctx) {
- ret = ENOMEM;
- krb5_set_error_message(context, ret, "hdb_samba4_fetch_fast_cookie: talloc_named() failed!");
- return ret;
- }
-
- /* search for CN=FX-COOKIE */
- ldb_ret = ldb_search(kdc_db_ctx->secrets_db,
- mem_ctx,
- &res,
- kdc_db_ctx->fx_cookie_dn,
- LDB_SCOPE_BASE,
- attrs, NULL);
-
- if (ldb_ret == LDB_ERR_NO_SUCH_OBJECT || res->count == 0) {
-
- ldb_ret = hdb_samba4_fill_fast_cookie(context,
- kdc_db_ctx);
-
- if (ldb_ret != LDB_SUCCESS) {
- TALLOC_FREE(mem_ctx);
- return HDB_ERR_NO_WRITE_SUPPORT;
- }
-
- /* search for CN=FX-COOKIE */
- ldb_ret = ldb_search(kdc_db_ctx->secrets_db,
- mem_ctx,
- &res,
- kdc_db_ctx->fx_cookie_dn,
- LDB_SCOPE_BASE,
- attrs, NULL);
-
- if (ldb_ret != LDB_SUCCESS || res->count != 1) {
- TALLOC_FREE(mem_ctx);
- return HDB_ERR_NOENTRY;
- }
- }
-
- val = ldb_msg_find_ldb_val(res->msgs[0],
- "secret");
- if (val == NULL || val->length != 32) {
- TALLOC_FREE(mem_ctx);
- return HDB_ERR_NOENTRY;
- }
-
-
- ret = krb5_make_principal(context,
- &sentry.principal,
- KRB5_WELLKNOWN_ORG_H5L_REALM,
- KRB5_WELLKNOWN_NAME, "org.h5l.fast-cookie",
- NULL);
- if (ret) {
- TALLOC_FREE(mem_ctx);
- return ret;
- }
-
- ret = samba_kdc_set_fixed_keys(context, val, ENC_ALL_TYPES,
- &sentry.keys);
- if (ret != 0) {
- return ret;
- }
-
- ret = sdb_entry_to_hdb_entry(context, &sentry, entry);
- sdb_entry_free(&sentry);
- TALLOC_FREE(mem_ctx);
-
- return ret;
+ DBG_ERR("Looked up HDB entry for unsupported FX-COOKIE.\n");
+ return HDB_ERR_NOENTRY;
}
static krb5_error_code hdb_samba4_fetch_kvno(krb5_context context, HDB *db,
diff --git a/source4/kdc/kdc-heimdal.c b/source4/kdc/kdc-heimdal.c
index 766f7ba917d..da1c2118bd2 100644
--- a/source4/kdc/kdc-heimdal.c
+++ b/source4/kdc/kdc-heimdal.c
@@ -425,6 +425,35 @@ static void kdc_post_fork(struct task_server *task, struct process_details *pd)
*/
kdc_config->enable_fast = lpcfg_kdc_enable_fast(task->lp_ctx);
+ {
+ static const char *dummy_string = "Microsoft";
+
+ /*
+ * The FAST cookie is not cryptographically required,
+ * provided that the non-AD gss-preauth authentication
+ * method is removed (as this is the only multi-step
+ * authentication method).
+ *
+ * gss-preauth has been disabled both by not being
+ * configured and by being made dependent
+ * configuration for a "real" fast cookie.
+ *
+ * The hide_client_names feature in Heimdal is the
+ * only other state that is persisted in the cookie,
+ * and this does not need to be in the cookie for
+ * single-shot authentication protocols such as ENC-TS
+ * and ENC-CHAL, the standard password protocols in
+ * AD.
+ *
+ * Furthermore, the Heimdal KDC does not fail if the
+ * client does not supply a FAST cookie, showing that
+ * the presence of the cookie is not required.
+ */
+ kdc_config->enable_fast_cookie = false;
+ kdc_config->dummy_fast_cookie = smb_krb5_make_data(discard_const_p(char, dummy_string),
+ strlen(dummy_string));
+ }
+
/*
* Match Windows and RFC6113 and Windows but break older
* Heimdal clients.
diff --git a/source4/kdc/samba_kdc.h b/source4/kdc/samba_kdc.h
index 8410a5bebac..8b3f072b362 100644
--- a/source4/kdc/samba_kdc.h
+++ b/source4/kdc/samba_kdc.h
@@ -52,8 +52,6 @@ struct samba_kdc_db_context {
unsigned int my_krbtgt_number;
struct ldb_dn *krbtgt_dn;
struct samba_kdc_policy policy;
- struct ldb_dn *fx_cookie_dn;
- struct ldb_context *secrets_db;
};
struct samba_kdc_entry {
diff --git a/third_party/heimdal/kdc/default_config.c b/third_party/heimdal/kdc/default_config.c
index 83c73504ce7..ce29dcc4b5a 100644
--- a/third_party/heimdal/kdc/default_config.c
+++ b/third_party/heimdal/kdc/default_config.c
@@ -102,6 +102,7 @@ krb5_kdc_get_config(krb5_context context, krb5_kdc_configuration **config)
c->trpolicy = TRPOLICY_ALWAYS_CHECK;
c->require_pac = FALSE;
c->enable_fast = TRUE;
+ c->enable_fast_cookie = TRUE;
c->enable_armored_pa_enc_timestamp = TRUE;
c->enable_unarmored_pa_enc_timestamp = TRUE;
c->enable_pkinit = FALSE;
@@ -271,6 +272,14 @@ krb5_kdc_get_config(krb5_context context, krb5_kdc_configuration **config)
"enable_fast",
NULL);
+ c->enable_fast_cookie =
+ krb5_config_get_bool_default(context,
+ NULL,
+ c->enable_fast_cookie,
+ "kdc",
+ "enable_fast_cookie",
+ NULL);
+
c->enable_armored_pa_enc_timestamp =
krb5_config_get_bool_default(context,
NULL,
diff --git a/third_party/heimdal/kdc/fast.c b/third_party/heimdal/kdc/fast.c
index 969b5d2f8da..1352a10fe01 100644
--- a/third_party/heimdal/kdc/fast.c
+++ b/third_party/heimdal/kdc/fast.c
@@ -266,6 +266,33 @@ fast_add_cookie(astgs_request_t r,
return ret;
}
+static krb5_error_code
+fast_add_dummy_cookie(astgs_request_t r,
+ METHOD_DATA *method_data)
+{
+ krb5_error_code ret;
+ krb5_data data;
+ const krb5_data *dummy_fast_cookie = &r->config->dummy_fast_cookie;
+
+ if (dummy_fast_cookie->data == NULL)
+ return 0;
+
+ ret = krb5_data_copy(&data,
+ dummy_fast_cookie->data,
+ dummy_fast_cookie->length);
+ if (ret)
+ return ret;
+
+ ret = krb5_padata_add(r->context, method_data,
+ KRB5_PADATA_FX_COOKIE,
+ data.data, data.length);
+ if (ret) {
+ krb5_data_free(&data);
+ }
+
+ return ret;
+}
+
krb5_error_code
_kdc_fast_mk_response(krb5_context context,
krb5_crypto armor_crypto,
@@ -341,13 +368,24 @@ _kdc_fast_mk_e_data(astgs_request_t r,
* FX-COOKIE can be used outside of FAST, e.g. SRP or GSS.
*/
if (armor_crypto || r->fast.fast_state.len) {
- kdc_log(r->context, r->config, 5, "Adding FAST cookie for KRB-ERROR");
- ret = fast_add_cookie(r, error_client, error_method);
- if (ret) {
- kdc_log(r->context, r->config, 1,
- "Failed to add FAST cookie: %d", ret);
- free_METHOD_DATA(error_method);
- return ret;
+ if (r->config->enable_fast_cookie) {
+ kdc_log(r->context, r->config, 5, "Adding FAST cookie for KRB-ERROR");
+ ret = fast_add_cookie(r, error_client, error_method);
+ if (ret) {
+ kdc_log(r->context, r->config, 1,
+ "Failed to add FAST cookie: %d", ret);
+ free_METHOD_DATA(error_method);
+ return ret;
+ }
+ } else {
+ kdc_log(r->context, r->config, 5, "Adding dummy FAST cookie for KRB-ERROR");
+ ret = fast_add_dummy_cookie(r, error_method);
+ if (ret) {
+ kdc_log(r->context, r->config, 1,
+ "Failed to add dummy FAST cookie: %d", ret);
+ free_METHOD_DATA(error_method);
+ return ret;
+ }
}
}
@@ -803,17 +841,19 @@ _kdc_fast_unwrap_request(astgs_request_t r,
if (ret)
return ret;
- /*
- * FX-COOKIE can be used outside of FAST, e.g. SRP or GSS.
- */
- pa = _kdc_find_padata(&r->req, &i, KRB5_PADATA_FX_COOKIE);
- if (pa) {
- krb5_const_principal ticket_client = NULL;
+ if (r->config->enable_fast_cookie) {
+ /*
+ * FX-COOKIE can be used outside of FAST, e.g. SRP or GSS.
+ */
+ pa = _kdc_find_padata(&r->req, &i, KRB5_PADATA_FX_COOKIE);
+ if (pa) {
+ krb5_const_principal ticket_client = NULL;
- if (tgs_ticket)
- ticket_client = tgs_ticket->client;
+ if (tgs_ticket)
+ ticket_client = tgs_ticket->client;
- ret = fast_parse_cookie(r, ticket_client, pa);
+ ret = fast_parse_cookie(r, ticket_client, pa);
+ }
}
return ret;
diff --git a/third_party/heimdal/kdc/kdc.h b/third_party/heimdal/kdc/kdc.h
index 31e54325452..057d29a02a1 100644
--- a/third_party/heimdal/kdc/kdc.h
+++ b/third_party/heimdal/kdc/kdc.h
@@ -92,6 +92,12 @@ struct krb5_kdc_service {
size_t num_db; \
const char *app; \
\
+ /*
+ * If non-null, contains static dummy data to include in
+ * place of the FAST cookie when it is disabled.
+ */ \
+ krb5_data dummy_fast_cookie; \
+ \
/* \
* Windows 2019 (and earlier versions) always sends the salt\
* and Samba has testsuites that check this behaviour, so a \
--
Samba Shared Repository
More information about the samba-cvs
mailing list