From df804eebada57a9bd746b9e0f856cfb7a9616fc0 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Wed, 30 Jan 2002 10:09:35 +0000 Subject: [PATCH] (krb5_kt_default_modify_name): if no modify name is specified take it from the first component of the default keytab name git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10814 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/keytab.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/krb5/keytab.c b/lib/krb5/keytab.c index 1dfb8d93d..4242e6f48 100644 --- a/lib/krb5/keytab.c +++ b/lib/krb5/keytab.c @@ -136,7 +136,23 @@ krb5_kt_default_name(krb5_context context, char *name, size_t namesize) krb5_error_code krb5_kt_default_modify_name(krb5_context context, char *name, size_t namesize) { - if (strlcpy (name, context->default_keytab_modify, namesize) >= namesize) { + const char *kt = NULL; + if(context->default_keytab_modify == NULL) { + if(strncasecmp(context->default_keytab, "ANY:", 4) != 0) + kt = context->default_keytab; + else { + size_t len = strcspn(context->default_keytab + 4, ","); + if(len >= namesize) { + krb5_clear_error_string(context); + return KRB5_CONFIG_NOTENUFSPACE; + } + strlcpy(name, context->default_keytab + 4, namesize); + name[len] = '\0'; + return 0; + } + } else + kt = context->default_keytab_modify; + if (strlcpy (name, kt, namesize) >= namesize) { krb5_clear_error_string (context); return KRB5_CONFIG_NOTENUFSPACE; }