krb5: Do not write start_realm ccconfig twice
This commit is contained in:
@@ -851,23 +851,28 @@ krb5_cc_store_cred(krb5_context context,
|
|||||||
krb5_data realm;
|
krb5_data realm;
|
||||||
const char *cfg = "";
|
const char *cfg = "";
|
||||||
|
|
||||||
ret = (*id->ops->store)(context, id, creds);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
/* Automatic cc_config-setting and other actions */
|
/* Automatic cc_config-setting and other actions */
|
||||||
if (krb5_principal_get_num_comp(context, creds->server) > 1 &&
|
if (krb5_principal_get_num_comp(context, creds->server) > 1 &&
|
||||||
krb5_is_config_principal(context, creds->server))
|
krb5_is_config_principal(context, creds->server))
|
||||||
cfg = krb5_principal_get_comp_string(context, creds->server, 1);
|
cfg = krb5_principal_get_comp_string(context, creds->server, 1);
|
||||||
|
|
||||||
|
if (id->cc_initialized && !id->cc_need_start_realm &&
|
||||||
|
strcmp(cfg, "start_realm") == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
ret = (*id->ops->store)(context, id, creds);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if (id->cc_initialized && !id->cc_start_tgt_stored &&
|
if (id->cc_initialized && !id->cc_start_tgt_stored &&
|
||||||
|
id->cc_need_start_realm &&
|
||||||
krb5_principal_is_root_krbtgt(context, creds->server)) {
|
krb5_principal_is_root_krbtgt(context, creds->server)) {
|
||||||
/* Mark the first root TGT's realm as the start realm */
|
/* Mark the first root TGT's realm as the start realm */
|
||||||
id->cc_start_tgt_stored = 1;
|
id->cc_start_tgt_stored = 1;
|
||||||
id->cc_need_start_realm = 0;
|
|
||||||
realm.length = strlen(creds->server->realm);
|
realm.length = strlen(creds->server->realm);
|
||||||
realm.data = creds->server->realm;
|
realm.data = creds->server->realm;
|
||||||
(void) krb5_cc_set_config(context, id, NULL, "start_realm", &realm);
|
(void) krb5_cc_set_config(context, id, NULL, "start_realm", &realm);
|
||||||
|
id->cc_need_start_realm = 0;
|
||||||
} else if (id->cc_initialized && id->cc_start_tgt_stored &&
|
} else if (id->cc_initialized && id->cc_start_tgt_stored &&
|
||||||
!id->cc_kx509_done && strcmp(cfg, "kx509cert") == 0) {
|
!id->cc_kx509_done && strcmp(cfg, "kx509cert") == 0) {
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user