(dns_find_realm): Fix const warnings, plug memory leak. From: Stefan

Metzmacher <metze@samba.org>


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15950 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2005-08-23 08:14:02 +00:00
parent d0fdf95591
commit 13ef94d8d7

View File

@@ -94,30 +94,41 @@ dns_find_realm(krb5_context context,
const char *domain, const char *domain,
krb5_realm **realms) krb5_realm **realms)
{ {
static char *default_labels[] = { "_kerberos", NULL }; static const char *default_labels[] = { "_kerberos", NULL };
char dom[MAXHOSTNAMELEN]; char dom[MAXHOSTNAMELEN];
struct dns_reply *r; struct dns_reply *r;
char **labels; const char **labels;
char **config_labels;
int i, ret; int i, ret;
labels = krb5_config_get_strings(context, NULL, "libdefaults", config_labels = krb5_config_get_strings(context, NULL, "libdefaults",
"dns_lookup_realm_labels", NULL); "dns_lookup_realm_labels", NULL);
if(labels == NULL) if(config_labels != NULL)
labels = (const char **)config_labels;
else
labels = default_labels; labels = default_labels;
if(*domain == '.') if(*domain == '.')
domain++; domain++;
for (i = 0; labels[i] != NULL; i++) { for (i = 0; labels[i] != NULL; i++) {
ret = snprintf(dom, sizeof(dom), "%s.%s.", labels[i], domain); ret = snprintf(dom, sizeof(dom), "%s.%s.", labels[i], domain);
if(ret < 0 || ret >= sizeof(dom)) if(ret < 0 || ret >= sizeof(dom)) {
if (config_labels)
krb5_config_free_strings(config_labels);
return -1; return -1;
}
r = dns_lookup(dom, "TXT"); r = dns_lookup(dom, "TXT");
if(r != NULL) { if(r != NULL) {
ret = copy_txt_to_realms (r->head, realms); ret = copy_txt_to_realms (r->head, realms);
dns_free_data(r); dns_free_data(r);
if(ret == 0) if(ret == 0) {
if (config_labels)
krb5_config_free_strings(config_labels);
return 0; return 0;
}
} }
} }
if (config_labels)
krb5_config_free_strings(config_labels);
return -1; return -1;
} }