From 0df8c071034c77c8d205f5920cfbcec9615f0da9 Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Sun, 17 Feb 2019 12:09:29 +0800 Subject: [PATCH] Fix addr to string ip issue --- src/dns_client.c | 4 ++-- src/dns_server.c | 4 ++-- src/fast_ping.c | 10 +++++----- src/util.c | 8 ++++---- src/util.h | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/dns_client.c b/src/dns_client.c index f269628..f42f933 100644 --- a/src/dns_client.c +++ b/src/dns_client.c @@ -745,7 +745,7 @@ static int _dns_client_recv(struct dns_server_info *server_info, unsigned char * if (len != 0) { char host_name[DNS_MAX_CNAME_LEN]; tlog(TLOG_WARN, "decode failed, packet len = %d, tc = %d, id = %d, from = %s\n", inpacket_len, packet->head.tc, packet->head.id, - gethost_by_addr(host_name, from, from_len)); + gethost_by_addr(host_name, sizeof(host_name), from)); return -1; } @@ -1043,7 +1043,7 @@ static int _dns_client_process_udp(struct dns_server_info *server_info, struct e } } - tlog(TLOG_DEBUG, "recv udp packet from %s, len: %d, ttl: %d", gethost_by_addr(from_host, (struct sockaddr *)&from, from_len), len, ttl); + tlog(TLOG_DEBUG, "recv udp packet from %s, len: %d, ttl: %d", gethost_by_addr(from_host, sizeof(from_host), (struct sockaddr *)&from), len, ttl); if ((ttl != server_info->ttl) && (server_info->ttl > 0) && (server_info->result_flag & DNSSERVER_FLAG_CHECK_TTL)) { if ((ttl < server_info->ttl - server_info->ttl_range) || (ttl > server_info->ttl + server_info->ttl_range)) { diff --git a/src/dns_server.c b/src/dns_server.c index 2fe8d67..95f9485 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -198,7 +198,7 @@ static void _dns_server_audit_log(struct dns_request *request) } else { return; } - gethost_by_addr(req_host, &request->addr, request->addr_len); + gethost_by_addr(req_host, sizeof(req_host), &request->addr); tlog_localtime(&tm); snprintf(req_time, sizeof(req_time), "[%.4d-%.2d-%.2d %.2d:%.2d:%.2d,%.3d]", tm.year, tm.mon, tm.mday, tm.hour, tm.min, tm.sec, tm.usec / 1000); @@ -1443,7 +1443,7 @@ static int _dns_server_recv(struct dns_server_conn *client, unsigned char *inpac _dns_server_client_get(client); - tlog(TLOG_DEBUG, "recv query packet from %s, len = %d", gethost_by_addr(name, (struct sockaddr *)from, from_len), inpacket_len); + tlog(TLOG_DEBUG, "recv query packet from %s, len = %d", gethost_by_addr(name, sizeof(name), (struct sockaddr *)from), inpacket_len); decode_len = dns_decode(packet, DNS_PACKSIZE, inpacket, inpacket_len); if (decode_len < 0) { tlog(TLOG_ERROR, "decode failed.\n"); diff --git a/src/fast_ping.c b/src/fast_ping.c index ea338e3..acd8f9b 100644 --- a/src/fast_ping.c +++ b/src/fast_ping.c @@ -372,7 +372,7 @@ static int _fast_ping_sendping_v6(struct ping_host_struct *ping_host) } char ping_host_name[PING_MAX_HOSTLEN]; - tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, (struct sockaddr *)&ping_host->addr, ping_host->addr_len), ping_host->sid, + tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, strerror(err)); goto errout; } @@ -411,7 +411,7 @@ static int _fast_ping_sendping_v4(struct ping_host_struct *ping_host) goto errout; } char ping_host_name[PING_MAX_HOSTLEN]; - tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, (struct sockaddr *)&ping_host->addr, ping_host->addr_len), ping_host->sid, + tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, strerror(err)); goto errout; } @@ -457,7 +457,7 @@ static int _fast_ping_sendping_udp(struct ping_host_struct *ping_host) goto errout; } char ping_host_name[PING_MAX_HOSTLEN]; - tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, (struct sockaddr *)&ping_host->addr, ping_host->addr_len), ping_host->sid, + tlog(TLOG_ERROR, "sendto %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, strerror(err)); goto errout; } @@ -499,7 +499,7 @@ static int _fast_ping_sendping_tcp(struct ping_host_struct *ping_host) bool_print_log = 0; } - tlog(TLOG_ERROR, "connect %s, id %d, %s", gethost_by_addr(ping_host_name, (struct sockaddr *)&ping_host->addr, ping_host->addr_len), ping_host->sid, + tlog(TLOG_ERROR, "connect %s, id %d, %s", gethost_by_addr(ping_host_name, sizeof(ping_host_name), (struct sockaddr *)&ping_host->addr), ping_host->sid, strerror(errno)); goto errout; } @@ -1090,7 +1090,7 @@ static int _fast_ping_process_icmp(struct ping_host_struct *ping_host, struct ti packet = _fast_ping_recv_packet(ping_host, &msg, inpacket, len, now); if (packet == NULL) { char name[PING_MAX_HOSTLEN]; - tlog(TLOG_DEBUG, "recv ping packet from %s failed.", gethost_by_addr(name, (struct sockaddr *)&from, from_len)); + tlog(TLOG_DEBUG, "recv ping packet from %s failed.", gethost_by_addr(name, sizeof(name), (struct sockaddr *)&from)); goto errout; } diff --git a/src/util.c b/src/util.c index 5a5af66..a9183a5 100644 --- a/src/util.c +++ b/src/util.c @@ -67,7 +67,7 @@ unsigned long get_tick_count(void) return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000); } -char *gethost_by_addr(char *host, struct sockaddr *addr, socklen_t addr_len) +char *gethost_by_addr(char *host, int maxsize, struct sockaddr *addr) { struct sockaddr_storage *addr_store = (struct sockaddr_storage *)addr; host[0] = 0; @@ -75,7 +75,7 @@ char *gethost_by_addr(char *host, struct sockaddr *addr, socklen_t addr_len) case AF_INET: { struct sockaddr_in *addr_in; addr_in = (struct sockaddr_in *)addr; - inet_ntop(AF_INET, &addr_in->sin_addr, host, addr_len); + inet_ntop(AF_INET, &addr_in->sin_addr, host, maxsize); } break; case AF_INET6: { struct sockaddr_in6 *addr_in6; @@ -84,9 +84,9 @@ char *gethost_by_addr(char *host, struct sockaddr *addr, socklen_t addr_len) struct sockaddr_in addr_in4; memset(&addr_in4, 0, sizeof(addr_in4)); memcpy(&addr_in4.sin_addr.s_addr, addr_in6->sin6_addr.s6_addr + 12, sizeof(addr_in4.sin_addr.s_addr)); - inet_ntop(AF_INET, &addr_in4.sin_addr, host, addr_len); + inet_ntop(AF_INET, &addr_in4.sin_addr, host, maxsize); } else { - inet_ntop(AF_INET6, &addr_in6->sin6_addr, host, addr_len); + inet_ntop(AF_INET6, &addr_in6->sin6_addr, host, maxsize); } } break; default: diff --git a/src/util.h b/src/util.h index 7bcaf13..9d1bee7 100644 --- a/src/util.h +++ b/src/util.h @@ -10,7 +10,7 @@ unsigned long get_tick_count(void); -char *gethost_by_addr(char *host, struct sockaddr *addr, socklen_t addr_len); +char *gethost_by_addr(char *host, int maxsize, struct sockaddr *addr); int getaddr_by_host(char *host, struct sockaddr *addr, socklen_t *addr_len);