(set_etypes): new function

(init_context_from_config_file): set both `etypes' and `etypes_des'


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7300 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-11-04 01:56:28 +00:00
parent 11c284c11e
commit 92550ff1f4

View File

@@ -48,6 +48,44 @@ RCSID("$Id$");
extern krb5_kt_ops krb4_fkt_ops; extern krb5_kt_ops krb4_fkt_ops;
#endif #endif
/*
* Set the list of etypes `ret_etypes' from the configuration variable
* `name'
*/
static krb5_error_code
set_etypes (krb5_context context,
const char *name,
krb5_enctype **ret_enctypes)
{
char **etypes_str;
krb5_enctype *etypes;
etypes_str = krb5_config_get_strings(context, NULL, "libdefaults",
name, NULL);
if(etypes_str){
int i, j, k;
for(i = 0; etypes_str[i]; i++);
etypes = malloc((i+1) * sizeof(*etypes));
if (etypes == NULL) {
krb5_config_free_strings (etypes_str);
return ENOMEM;
}
for(j = 0, k = 0; j < i; j++) {
if(krb5_string_to_enctype(context, etypes_str[j], &etypes[k]) == 0)
k++;
}
etypes[k] = ETYPE_NULL;
krb5_config_free_strings(etypes_str);
*ret_enctypes = etypes;
}
return 0;
}
/*
* read variables from the configuration file and set in `context'
*/
static krb5_error_code static krb5_error_code
init_context_from_config_file(krb5_context context) init_context_from_config_file(krb5_context context)
{ {
@@ -59,22 +97,9 @@ init_context_from_config_file(krb5_context context)
context->http_proxy = krb5_config_get_string(context, NULL, "libdefaults", context->http_proxy = krb5_config_get_string(context, NULL, "libdefaults",
"http_proxy", NULL); "http_proxy", NULL);
{ set_etypes (context, "default_etypes", &context->etypes);
char **etypes; set_etypes (context, "default_etypes_des", &context->etypes_des);
etypes = krb5_config_get_strings(context, NULL, "libdefaults",
"default_etypes", NULL);
if(etypes){
int i, j, k;
for(i = 0; etypes[i]; i++);
context->etypes = malloc((i+1) * sizeof(*context->etypes));
for(j = 0, k = 0; j < i; j++) {
if(krb5_string_to_enctype(context, etypes[j], &context->etypes[k]) == 0)
k++;
}
context->etypes[k] = ETYPE_NULL;
krb5_config_free_strings(etypes);
}
}
/* default keytab name */ /* default keytab name */
context->default_keytab = krb5_config_get_string(context, NULL, context->default_keytab = krb5_config_get_string(context, NULL,
"libdefaults", "libdefaults",
@@ -179,6 +204,7 @@ krb5_free_context(krb5_context context)
int i; int i;
free(context->etypes); free(context->etypes);
free(context->etypes_des);
krb5_free_host_realm (context, context->default_realms); krb5_free_host_realm (context, context->default_realms);
krb5_config_file_free (context, context->cf); krb5_config_file_free (context, context->cf);
free_error_table (context->et_list); free_error_table (context->et_list);
@@ -232,7 +258,6 @@ krb5_set_default_in_tkt_etypes(krb5_context context,
} }
krb5_error_code krb5_error_code
krb5_get_default_in_tkt_etypes(krb5_context context, krb5_get_default_in_tkt_etypes(krb5_context context,
krb5_enctype **etypes) krb5_enctype **etypes)