]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
Call inet_sockaddr2str() instead of inet_ntop(3)
authorAlejandro Colomar <alx@kernel.org>
Thu, 22 Dec 2022 14:48:40 +0000 (15:48 +0100)
committerIker Pedrosa <ikerpedrosam@gmail.com>
Mon, 2 Jan 2023 07:20:43 +0000 (08:20 +0100)
To simplify.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
src/login_nopam.c

index 8ff06380fbb2ced5558ca8b08d350defa27b2427..72743b39066aba39cfc98e5fdd234439d065d69f 100644 (file)
@@ -52,7 +52,6 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <sys/socket.h>
-#include <sys/param.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>         /* for inet_ntoa() */
 
@@ -69,7 +68,6 @@
 /* Delimiters for fields and for lists of users, ttys or hosts. */
 static char fs[] = ":";                /* field separator */
 static char sep[] = ", \t";    /* list-element separator */
-static char inet_ntop_buffer[MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN)];
 
 static bool list_match (char *list, const char *item, bool (*match_fn) (const char *, const char *));
 static bool user_match (const char *tok, const char *string);
@@ -265,41 +263,25 @@ static bool user_match (const char *tok, const char *string)
 
 static const char *resolve_hostname (const char *string)
 {
-       int                  gai;
-       char                 *p;
-       struct addrinfo      *addrs;
-       struct sockaddr      *sa;
-       struct sockaddr_in   *sin;
-       struct sockaddr_in6  *sin6;
-
-       gai = getaddrinfo(string, NULL, NULL, &addrs);
-       if (gai != 0)
+       int              gai_err;
+       char             *addr_str;
+       struct addrinfo  *addrs;
+
+       gai_err = getaddrinfo(string, NULL, NULL, &addrs);
+       if (gai_err != 0)
                goto notfound;
 
-       sa = addrs[0].ai_addr;
-       switch (sa->sa_family) {
-       case AF_INET:
-               sin = (struct sockaddr_in *) sa;
-               inet_ntop(AF_INET, &sin->sin_addr,
-                         inet_ntop_buffer, NITEMS(inet_ntop_buffer));
-               p = inet_ntop_buffer;
-               break;
-       case AF_INET6:
-               sin6 = (struct sockaddr_in6 *) sa;
-               inet_ntop(AF_INET6, &sin6->sin6_addr,
-                         inet_ntop_buffer, NITEMS(inet_ntop_buffer));
-               p = inet_ntop_buffer;
-               break;
-       default:
-               SYSLOG ((LOG_ERR, "Hypothetical future IPv7?"));
+       addr_str = inet_sockaddr2str(addrs[0].ai_addr);
+       if (addr_str == NULL) {
+               SYSLOG ((LOG_ERR, "inet_sockaddr2str(): %s", strerror(errno)));
                abort();
        }
 
        freeaddrinfo(addrs);
-       return p;
+       return addr_str;
 
 notfound:
-       SYSLOG ((LOG_ERR, "getaddrinfo(%s): %s", string, gai_strerror(gai)));
+       SYSLOG ((LOG_ERR, "getaddrinfo(%s): %s", string, gai_strerror(gai_err)));
        return string;
 }