]> andersk Git - openssh.git/blobdiff - fake-getnameinfo.c
- Cleanup of auth.c, login.c and fake-*
[openssh.git] / fake-getnameinfo.c
index f74f3128f725cacd57e2725f9cee3ede8c70fa09..867cf90b5a5e056b3469451a29e2a734cb895435 100644 (file)
@@ -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 */
This page took 0.041688 seconds and 4 git commands to generate.