move the list of keytab types to the context

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6939 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-09-12 20:46:31 +00:00
parent 2535b393d3
commit 451d70f0af

View File

@@ -40,15 +40,6 @@
RCSID("$Id$"); RCSID("$Id$");
/*
* the registered keytab types.
* `num_kt_types' are them are stored in `kt_types'
*/
static int num_kt_types;
static struct krb5_keytab_data *kt_types;
/* /*
* Register a new keytab in `ops' * Register a new keytab in `ops'
* Return 0 or an error. * Return 0 or an error.
@@ -60,19 +51,17 @@ krb5_kt_register(krb5_context context,
{ {
struct krb5_keytab_data *tmp; struct krb5_keytab_data *tmp;
tmp = realloc(kt_types, (num_kt_types + 1) * sizeof(*kt_types)); tmp = realloc(context->kt_types,
(context->num_kt_types + 1) * sizeof(*context->kt_types));
if(tmp == NULL) if(tmp == NULL)
return ENOMEM; return ENOMEM;
memcpy(&tmp[num_kt_types], ops, sizeof(tmp[num_kt_types])); memcpy(&tmp[context->num_kt_types], ops,
kt_types = tmp; sizeof(tmp[context->num_kt_types]));
num_kt_types++; context->kt_types = tmp;
context->num_kt_types++;
return 0; return 0;
} }
#ifdef KRB4
extern krb5_kt_ops krb4_fkt_ops;
#endif
/* /*
* Resolve the keytab name (of the form `type:residual') in `name' * Resolve the keytab name (of the form `type:residual') in `name'
* into a keytab in `id'. * into a keytab in `id'.
@@ -90,18 +79,6 @@ krb5_kt_resolve(krb5_context context,
size_t type_len; size_t type_len;
krb5_error_code ret; krb5_error_code ret;
/* register default set of types */
if(num_kt_types == 0) {
ret = krb5_kt_register(context, &krb5_fkt_ops);
if(ret) return ret;
ret = krb5_kt_register(context, &krb5_mkt_ops);
if(ret) return ret;
#ifdef KRB4
ret = krb5_kt_register(context, &krb4_fkt_ops);
if(ret) return ret;
#endif
}
residual = strchr(name, ':'); residual = strchr(name, ':');
if(residual == NULL) { if(residual == NULL) {
type = "FILE"; type = "FILE";
@@ -113,17 +90,17 @@ krb5_kt_resolve(krb5_context context,
residual++; residual++;
} }
for(i = 0; i < num_kt_types; i++) { for(i = 0; i < context->num_kt_types; i++) {
if(strncmp(type, kt_types[i].prefix, type_len) == 0) if(strncmp(type, context->kt_types[i].prefix, type_len) == 0)
break; break;
} }
if(i == num_kt_types) if(i == context->num_kt_types)
return KRB5_KT_UNKNOWN_TYPE; return KRB5_KT_UNKNOWN_TYPE;
k = malloc (sizeof(*k)); k = malloc (sizeof(*k));
if (k == NULL) if (k == NULL)
return ENOMEM; return ENOMEM;
memcpy(k, &kt_types[i], sizeof(*k)); memcpy(k, &context->kt_types[i], sizeof(*k));
k->data = NULL; k->data = NULL;
ret = (*k->resolve)(context, residual, k); ret = (*k->resolve)(context, residual, k);
if(ret) { if(ret) {