rc_base.c revision 69dc090717e863b0d20b53b7b1e576d25aa0b28d
004388ebfdfe2ed7dfd2d153a876dfcc22d2c006casper * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
505d05c73a6e56769f263d4803b22eddd168ee24gtb * Use is subject to license terms.
505d05c73a6e56769f263d4803b22eddd168ee24gtb#pragma ident "%Z%%M% %I% %E% SMI"
505d05c73a6e56769f263d4803b22eddd168ee24gtb * This file of the Kerberos V5 software is derived from public-domain code
505d05c73a6e56769f263d4803b22eddd168ee24gtb * contributed by Daniel J. Bernstein, <brnstnd@acf10.nyu.edu>.
505d05c73a6e56769f263d4803b22eddd168ee24gtb * Base "glue" functions for the replay cache.
505d05c73a6e56769f263d4803b22eddd168ee24gtbstatic struct krb5_rc_typelist rc_none_type = { &krb5_rc_none_ops, 0 };
505d05c73a6e56769f263d4803b22eddd168ee24gtbstatic struct krb5_rc_typelist *typehead = &krb5_rc_typelist_dfl;
505d05c73a6e56769f263d4803b22eddd168ee24gtbstatic k5_mutex_t rc_typelist_lock = K5_MUTEX_PARTIAL_INITIALIZER;
505d05c73a6e56769f263d4803b22eddd168ee24gtb for (t = typehead; t != &krb5_rc_typelist_dfl; t = t_next) {
505d05c73a6e56769f263d4803b22eddd168ee24gtb/*ARGSUSED*/
505d05c73a6e56769f263d4803b22eddd168ee24gtbkrb5_error_code krb5_rc_register_type(krb5_context context,
505d05c73a6e56769f263d4803b22eddd168ee24gtb for (t = typehead;t && strcmp(t->ops->type,ops->type);t = t->next)
505d05c73a6e56769f263d4803b22eddd168ee24gtb t = (struct krb5_rc_typelist *) malloc(sizeof(struct krb5_rc_typelist));
505d05c73a6e56769f263d4803b22eddd168ee24gtb if (t == NULL) {
505d05c73a6e56769f263d4803b22eddd168ee24gtb/*ARGSUSED*/
505d05c73a6e56769f263d4803b22eddd168ee24gtbkrb5_error_code krb5_rc_resolve_type(krb5_context context, krb5_rcache *id,
505d05c73a6e56769f263d4803b22eddd168ee24gtb for (t = typehead;t && strcmp(t->ops->type,type);t = t->next)
505d05c73a6e56769f263d4803b22eddd168ee24gtb /* allocate *id? nah */
505d05c73a6e56769f263d4803b22eddd168ee24gtb/*ARGSUSED*/
505d05c73a6e56769f263d4803b22eddd168ee24gtbchar * krb5_rc_get_type(krb5_context context, krb5_rcache id)
505d05c73a6e56769f263d4803b22eddd168ee24gtb * MIT's is "dfl" but we now have FILE and MEMORY instead.
505d05c73a6e56769f263d4803b22eddd168ee24gtb * And we only support the KRB5RCNAME env var.
505d05c73a6e56769f263d4803b22eddd168ee24gtb return ("FILE");
505d05c73a6e56769f263d4803b22eddd168ee24gtb/*ARGSUSED*/
505d05c73a6e56769f263d4803b22eddd168ee24gtb return (char *) 0;
505d05c73a6e56769f263d4803b22eddd168ee24gtb retval = krb5_rc_resolve_type(context, id, krb5_rc_default_type(context));
505d05c73a6e56769f263d4803b22eddd168ee24gtb if (retval != 0) {
505d05c73a6e56769f263d4803b22eddd168ee24gtb * k5_mutex_destroy() is not called here, because the mutex had
505d05c73a6e56769f263d4803b22eddd168ee24gtb * not been successfully initialized by krb5_rc_resolve_type().
505d05c73a6e56769f263d4803b22eddd168ee24gtb retval = krb5_rc_resolve(context, *id, krb5_rc_default_name(context));
505d05c73a6e56769f263d4803b22eddd168ee24gtbkrb5_error_code krb5_rc_resolve_full(krb5_context context, krb5_rcache *id, char *string_name)
505d05c73a6e56769f263d4803b22eddd168ee24gtb unsigned int diff;
505d05c73a6e56769f263d4803b22eddd168ee24gtb if (retval != 0) {
505d05c73a6e56769f263d4803b22eddd168ee24gtb * k5_mutex_destroy() is not called here, because the mutex had
505d05c73a6e56769f263d4803b22eddd168ee24gtb * not been successfully initialized by krb5_rc_resolve_type().