summaryrefslogtreecommitdiffstats
path: root/crypto/kerberosIV/lib/krb/name2name.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/kerberosIV/lib/krb/name2name.c')
-rw-r--r--crypto/kerberosIV/lib/krb/name2name.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/crypto/kerberosIV/lib/krb/name2name.c b/crypto/kerberosIV/lib/krb/name2name.c
index fa95b89..2e2e9e6 100644
--- a/crypto/kerberosIV/lib/krb/name2name.c
+++ b/crypto/kerberosIV/lib/krb/name2name.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska Högskolan
+ * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -38,7 +38,7 @@
#include "krb_locl.h"
-RCSID("$Id: name2name.c,v 1.15 1997/04/30 04:30:36 assar Exp $");
+RCSID("$Id: name2name.c,v 1.20 1999/03/13 21:26:02 assar Exp $");
/* convert host to a more fully qualified domain name, returns 0 if
* phost is the same as host, 1 otherwise. phost should be
@@ -53,15 +53,25 @@ krb_name_to_name(const char *host, char *phost, size_t phost_size)
const char *tmp;
adr.s_addr = inet_addr(host);
- hp = gethostbyname(host);
- if (hp == NULL && adr.s_addr != INADDR_NONE)
+ if (adr.s_addr != INADDR_NONE)
hp = gethostbyaddr((char *)&adr, sizeof(adr), AF_INET);
+ else
+ hp = gethostbyname(host);
if (hp == NULL)
tmp = host;
- else
+ else {
tmp = hp->h_name;
- strncpy (phost, tmp, phost_size);
- phost[phost_size - 1] = '\0';
+ /*
+ * Broken SunOS 5.4 sometimes keeps the official name as the
+ * 1:st alias.
+ */
+ if (strchr(tmp, '.') == NULL
+ && hp->h_aliases != NULL
+ && hp->h_aliases[0] != NULL
+ && strchr (hp->h_aliases[0], '.') != NULL)
+ tmp = hp->h_aliases[0];
+ }
+ strcpy_truncate (phost, tmp, phost_size);
if (strcmp(phost, host) == 0)
return 0;
@@ -74,7 +84,8 @@ krb_name_to_name(const char *host, char *phost, size_t phost_size)
void
k_ricercar(char *name)
{
- char *p = name;
+ unsigned char *p = (unsigned char *)name;
+
while(*p && *p != '.'){
if(isupper(*p))
*p = tolower(*p);
@@ -94,7 +105,7 @@ k_ricercar(char *name)
char *
krb_get_phost(const char *alias)
{
- static char phost[MaxHostNameLen+1];
+ static char phost[MaxHostNameLen];
krb_name_to_name(alias, phost, sizeof(phost));
k_ricercar(phost);
OpenPOWER on IntegriCloud