diff options
Diffstat (limited to 'src/lib/gssapi/generic/util_canonhost.c')
-rw-r--r-- | src/lib/gssapi/generic/util_canonhost.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/gssapi/generic/util_canonhost.c b/src/lib/gssapi/generic/util_canonhost.c index 8fb7a03fec..277c07836d 100644 --- a/src/lib/gssapi/generic/util_canonhost.c +++ b/src/lib/gssapi/generic/util_canonhost.c @@ -36,11 +36,24 @@ char *g_canonicalize_host(char *hostname) { struct hostent *hent; + char *haddr; char *canon, *str; if ((hent = gethostbyname(hostname)) == NULL) return(NULL); + if (! (haddr = xmalloc(hent->h_length))) { + return(NULL); + } + + memcpy(haddr, hent->h_addr_list[0], hent->h_length); + + if (! (hent = gethostbyaddr(haddr, hent->h_length, hent->h_addrtype))) { + return(NULL); + } + + xfree(haddr); + if ((canon = xmalloc(strlen(hent->h_name)+1)) == NULL) return(NULL); |