diff --git a/lib/krb5/get_host_realm.c b/lib/krb5/get_host_realm.c index c71b54d94..8c6b3818b 100644 --- a/lib/krb5/get_host_realm.c +++ b/lib/krb5/get_host_realm.c @@ -64,6 +64,8 @@ krb5_get_host_realm(krb5_context context, char *res = NULL; const char *partial = NULL; const krb5_config_binding *l; + struct in_addr addr; + struct hostent *hostent; if (host == NULL) { if (gethostname (hostname, sizeof(hostname))) @@ -71,6 +73,13 @@ krb5_get_host_realm(krb5_context context, host = hostname; } + addr.s_addr = inet_addr(host); + hostent = gethostbyname (host); + if (hostent == NULL && addr.s_addr != INADDR_NONE) + hostent = gethostbyaddr ((const char *)&addr, sizeof(addr), AF_INET); + if (hostent != NULL) + host = hostent->h_addr; + *realms = malloc(2 * sizeof(char*)); if (*realms == NULL) return ENOMEM;