(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:
@@ -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)
|
||||||
|
Reference in New Issue
Block a user