From 4ef64befd4ef840e7cab702d79d7cb98c3b2c051 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Sun, 27 Jul 1997 02:45:55 +0000 Subject: [PATCH] Quick patch to make 425_conv work somewhat. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2637 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/principal.c | 51 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/lib/krb5/principal.c b/lib/krb5/principal.c index 5cd0939e1..dda418d5d 100644 --- a/lib/krb5/principal.c +++ b/lib/krb5/principal.c @@ -422,14 +422,49 @@ krb5_425_conv_principal(krb5_context context, const char *realm, krb5_principal *princ) { - if(!strcmp(name, "rcmd")) - name = "host"; - return krb5_build_principal(context, princ, - strlen(realm), - realm, - name, - (instance && instance[0]) ? instance : NULL, - 0); + const char *p; + krb5_error_code ret; + char *domain = NULL; + p = krb5_config_get_string(context->cf, + "realms", + realm, + "v4_name_convert", + name, + NULL); + if(p) + name = p; + if(instance[0] == 0) + instance = NULL; + if(instance){ + p = krb5_config_get_string(context->cf, + "realms", + realm, + "v4_instance_convert", + instance, + NULL); + if(p) + instance = p; + else{ + p = krb5_config_get_string(context->cf, + "realms", + realm, + "default_domain", + NULL); + if(p){ + asprintf(&domain, "%s.%s", instance, p); + instance = domain; + } + } + } + ret = krb5_build_principal(context, princ, + strlen(realm), + realm, + name, + instance, + 0); + if(domain) + free(domain); + return ret; } krb5_error_code