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; }