From ec6338f9d47dd49ff5e854ce133cf86ef580611b Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Fri, 3 Apr 1998 02:18:11 +0000 Subject: [PATCH] Get default keytab name from context. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4702 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/keytab.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/lib/krb5/keytab.c b/lib/krb5/keytab.c index ad7e490a4..6b15dbb14 100644 --- a/lib/krb5/keytab.c +++ b/lib/krb5/keytab.c @@ -66,12 +66,11 @@ krb5_kt_resolve(krb5_context context, { krb5_keytab k; int i; - const char *p = strchr(name, ':'); + const char *type, *residual; + size_t type_len; krb5_error_code ret; - if(p == NULL) - return KRB5_KT_UNKNOWN_TYPE; - + /* register default set of types */ if(num_kt_types == 0) { ret = krb5_kt_register(context, &fops); if(ret) return ret; @@ -79,8 +78,19 @@ krb5_kt_resolve(krb5_context context, if(ret) return ret; } + residual = strchr(name, ':'); + if(residual == NULL) { + type = "FILE"; + type_len = strlen(type); + residual = name; + } else { + type = name; + type_len = residual - name; + residual++; + } + for(i = 0; i < num_kt_types; i++) { - if(strncmp(name, kt_types[i].prefix, p - name) == 0) + if(strncmp(type, kt_types[i].prefix, type_len) == 0) break; } if(i == num_kt_types) @@ -89,29 +99,28 @@ krb5_kt_resolve(krb5_context context, ALLOC(k, 1); memcpy(k, &kt_types[i], sizeof(*k)); k->data = NULL; - ret = (*k->resolve)(context, p + 1, k); + ret = (*k->resolve)(context, residual, k); if(ret) { free(k); k = NULL; } *id = k; return ret; - return 0; } -#define KEYTAB_DEFAULT "FILE:/etc/krb5.keytab" - krb5_error_code -krb5_kt_default_name(krb5_context context, char *name, int namesize) +krb5_kt_default_name(krb5_context context, char *name, size_t namesize) { - strncpy (name, KEYTAB_DEFAULT, namesize); + strncpy(name, context->default_keytab, namesize); + if(strlen(context->default_keytab) >= namesize) + return KRB5_CONFIG_NOTENUFSPACE; return 0; } krb5_error_code krb5_kt_default(krb5_context context, krb5_keytab *id) { - return krb5_kt_resolve (context, KEYTAB_DEFAULT, id); + return krb5_kt_resolve (context, context->default_keytab, id); } krb5_error_code