Use getnameinfo() instead of deprecated gethostbyaddr() Signed-off-by: Shyam Saini <mayhs11saini@xxxxxxxxx> --- libxtables/xtables.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/libxtables/xtables.c b/libxtables/xtables.c index 921dfe9..338e325 100644 --- a/libxtables/xtables.c +++ b/libxtables/xtables.c @@ -1210,13 +1210,28 @@ const char *xtables_ipaddr_to_numeric(const struct in_addr *addrp) static const char *ipaddr_to_host(const struct in_addr *addr) { - struct hostent *host; + static char hostname[NI_MAXHOST]; + struct sockaddr_in saddr; + int err; - host = gethostbyaddr(addr, sizeof(struct in_addr), AF_INET); - if (host == NULL) - return NULL; + memset(&saddr, 0, sizeof(struct sockaddr_in)); + memcpy(&saddr.sin_addr, addr, sizeof(*addr)); + saddr.sin_family = AF_INET; + + err = getnameinfo((const void *)&saddr, sizeof(struct sockaddr_in), + hostname, sizeof(hostname) - 1, NULL, 0, 0); + + if (err != 0) { +#ifdef DEBUG + fprintf(stderr,"IP2Name: %s\n",gai_strerror(err)); +#endif + return NULL; + } - return host->h_name; +#ifdef DEBUG + fprintf (stderr, "\naddr2host: %s\n", hostname); +#endif + return hostname; } static const char *ipaddr_to_network(const struct in_addr *addr) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html