From 3b5897517e3345fc0c4ad7696d54fc25aa73c837 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Mon, 28 May 2001 04:20:33 +0000 Subject: [PATCH] make it robust enough so that it actually works git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10010 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/krbhst.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/krb5/krbhst.c b/lib/krb5/krbhst.c index 8644de2ce..ad876c8f6 100644 --- a/lib/krb5/krbhst.c +++ b/lib/krb5/krbhst.c @@ -150,8 +150,8 @@ get_krbhst_dns (krb5_context context, char ***hostlist, krb5_boolean fallback) { - char **res; - int count; + char **res = *hostlist; + int count = 0; krb5_error_code ret; if(context->srv_lookup) { @@ -174,8 +174,10 @@ get_krbhst_dns (krb5_context context, krb5_config_free_strings(res); return ret; } + ++count; } - add_string(context, &res, &count, NULL); + if (count) + add_string(context, &res, &count, NULL); *hostlist = res; return 0; } @@ -211,6 +213,7 @@ krb5_get_krb_admin_hst (krb5_context context, const krb5_realm *realm, char ***hostlist) { + *hostlist = NULL; return get_krbhst (context, realm, "admin_server", "kerberos-adm", hostlist, TRUE); } @@ -226,9 +229,10 @@ krb5_get_krb_changepw_hst (krb5_context context, { krb5_error_code ret = 0; + *hostlist = NULL; get_krbhst_conf (context, realm, "kpasswd_server", hostlist); - if (hostlist == NULL) + if (*hostlist == NULL) ret = get_krbhst (context, realm, "admin_server", "kpasswd", hostlist, TRUE); return ret; @@ -246,13 +250,14 @@ krb5_get_krb524hst (krb5_context context, { krb5_error_code ret = 0; + *hostlist = NULL; get_krbhst_conf (context, realm, "krb524_server", hostlist); - if (hostlist == NULL) { + if (*hostlist == NULL) { ret = get_krbhst (context, realm, "krb524_server", "krb524", hostlist, FALSE); if (ret) return ret; - if (hostlist == NULL) + if (*hostlist == NULL) return krb5_get_krbhst(context, realm, hostlist); } return ret; @@ -267,6 +272,7 @@ krb5_get_krbhst (krb5_context context, const krb5_realm *realm, char ***hostlist) { + *hostlist = NULL; return get_krbhst (context, realm, "kdc", "kerberos", hostlist, TRUE); }