From 2f6a0ad191af2e0e67c66bdc5dfc84d9a97bf12c Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Wed, 31 May 2000 11:20:11 +1000 Subject: - Cleanup of auth.c, login.c and fake-* - Cleanup of auth-pam.c, save and print "account expired" error messages --- fake-getnameinfo.c | 76 ++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 42 deletions(-) (limited to 'fake-getnameinfo.c') diff --git a/fake-getnameinfo.c b/fake-getnameinfo.c index f74f3128f..867cf90b5 100644 --- a/fake-getnameinfo.c +++ b/fake-getnameinfo.c @@ -7,55 +7,47 @@ * But these functions are not implemented correctly. The minimum subset * is implemented for ssh use only. For exapmle, this routine assumes * that ai_family is AF_INET. Don't use it for another purpose. - * - * In the case not using 'configure --enable-ipv6', this getnameinfo.c - * will be used if you have broken getnameinfo or no getnameinfo. */ #include "includes.h" #include "ssh.h" #ifndef HAVE_GETNAMEINFO -int -getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) -const struct sockaddr *sa; -size_t salen; -char *host; -size_t hostlen; -char *serv; -size_t servlen; -int flags; +int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) { - struct sockaddr_in *sin = (struct sockaddr_in *)sa; - struct hostent *hp; - char tmpserv[16]; - - if (serv) { - sprintf(tmpserv, "%d", ntohs(sin->sin_port)); - if (strlen(tmpserv) > servlen) - return EAI_MEMORY; - else - strcpy(serv, tmpserv); - } - if (host) - if (flags & NI_NUMERICHOST) - if (strlen(inet_ntoa(sin->sin_addr)) > hostlen) - return EAI_MEMORY; - else { - strcpy(host, inet_ntoa(sin->sin_addr)); - return 0; - } - else - if (NULL != (hp = gethostbyaddr((char *)&sin->sin_addr, - sizeof(struct in_addr), AF_INET))) - if (strlen(hp->h_name) > hostlen) - return EAI_MEMORY; - else { - strcpy(host, hp->h_name); - return 0; + struct sockaddr_in *sin = (struct sockaddr_in *)sa; + struct hostent *hp; + char tmpserv[16]; + + if (serv) { + snprintf(tmpserv, sizeof(tmpserv), "%d", ntohs(sin->sin_port)); + if (strlen(tmpserv) > servlen) + return EAI_MEMORY; + else + strcpy(serv, tmpserv); } - else - return EAI_NODATA; - return 0; + + if (host) { + if (flags & NI_NUMERICHOST) { + if (strlen(inet_ntoa(sin->sin_addr)) > hostlen) + return EAI_MEMORY; + + strcpy(host, inet_ntoa(sin->sin_addr)); + return 0; + } else { + hp = gethostbyaddr((char *)&sin->sin_addr, + sizeof(struct in_addr), AF_INET); + if (hp == NULL) + return EAI_NODATA; + + if (strlen(hp->h_name) > hostlen) + return EAI_MEMORY; + + strcpy(host, hp->h_name); + return 0; + } + } + return 0; } #endif /* !HAVE_GETNAMEINFO */ -- cgit v1.2.3