diff --git a/lib/krb5/set_default_realm.c b/lib/krb5/set_default_realm.c index f67d9e6fa..0502403f9 100644 --- a/lib/krb5/set_default_realm.c +++ b/lib/krb5/set_default_realm.c @@ -8,16 +8,31 @@ krb5_set_default_realm(krb5_context context, { const char *foo; char *tmp; + char **realms = NULL; - if (realm == NULL) + if (realm == NULL){ foo = krb5_config_get_string (context->cf, "libdefaults", "default_realm", NULL); - else + if(foo == NULL){ + krb5_error_code ret; + ret = krb5_get_host_realm(context, NULL, &realms); + if(ret) + return ret; + foo = realms[0]; + } + } else foo = realm; tmp = strdup (foo); + if(realms){ + char **q; + for(q = realms; *q; q++) + free(*q); + free(realms); + } + if (tmp == NULL) return ENOMEM; context->default_realm = tmp;