summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi/generic/util_canonhost.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/gssapi/generic/util_canonhost.c')
-rw-r--r--src/lib/gssapi/generic/util_canonhost.c13
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);