diff options
-rw-r--r-- | usr.bin/dig/dig.c | 5 | ||||
-rw-r--r-- | usr.bin/dig/dig.h | 3 | ||||
-rw-r--r-- | usr.bin/dig/dighost.c | 8 | ||||
-rw-r--r-- | usr.bin/dig/lib/isc/include/isc/sockaddr.h | 3 | ||||
-rw-r--r-- | usr.bin/dig/lib/isc/sockaddr.c | 10 | ||||
-rw-r--r-- | usr.bin/dig/lib/isc/unix/socket.c | 8 |
6 files changed, 17 insertions, 20 deletions
diff --git a/usr.bin/dig/dig.c b/usr.bin/dig/dig.c index c783a51d663..0fe3177a91e 100644 --- a/usr.bin/dig/dig.c +++ b/usr.bin/dig/dig.c @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dig.c,v 1.16 2020/09/14 08:40:43 florian Exp $ */ +/* $Id: dig.c,v 1.17 2020/09/15 11:46:19 florian Exp $ */ /*! \file */ #include <sys/cdefs.h> @@ -1165,7 +1165,8 @@ plus_option(const char *option, int is_batchfile, free(lookup->ecs_addr); lookup->ecs_addr = NULL; } - result = parse_netprefix(&lookup->ecs_addr, value); + result = parse_netprefix(&lookup->ecs_addr, + &lookup->ecs_plen, value); if (result != ISC_R_SUCCESS) fatal("Couldn't parse client"); break; diff --git a/usr.bin/dig/dig.h b/usr.bin/dig/dig.h index ea4af6b51ad..9f272738e86 100644 --- a/usr.bin/dig/dig.h +++ b/usr.bin/dig/dig.h @@ -148,6 +148,7 @@ struct dig_lookup { uint32_t msgcounter; dns_fixedname_t fdomain; isc_sockaddr_t *ecs_addr; + int ecs_plen; char *sitvalue; dns_ednsopt_t *ednsopts; unsigned int ednsoptscnt; @@ -297,7 +298,7 @@ void setup_system(int ipv4only, int ipv6only); isc_result_t -parse_netprefix(isc_sockaddr_t **sap, const char *value); +parse_netprefix(isc_sockaddr_t **sap, int *plen, const char *value); void parse_hmac(const char *hmacstr); diff --git a/usr.bin/dig/dighost.c b/usr.bin/dig/dighost.c index 1930361eded..278df03bb5d 100644 --- a/usr.bin/dig/dighost.c +++ b/usr.bin/dig/dighost.c @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dighost.c,v 1.32 2020/09/15 08:19:29 florian Exp $ */ +/* $Id: dighost.c,v 1.33 2020/09/15 11:46:19 florian Exp $ */ /*! \file * \note @@ -933,7 +933,7 @@ parse_bits(char *arg, uint32_t max) { } isc_result_t -parse_netprefix(isc_sockaddr_t **sap, const char *value) { +parse_netprefix(isc_sockaddr_t **sap, int *plen, const char *value) { isc_sockaddr_t *sa = NULL; struct in_addr in4; struct in6_addr in6; @@ -1000,7 +1000,7 @@ parse_netprefix(isc_sockaddr_t **sap, const char *value) { fatal("invalid address '%s'", value); done: - sa->length = prefix_length; + *plen = prefix_length; *sap = sa; return (ISC_R_SUCCESS); @@ -2190,7 +2190,7 @@ setup_lookup(dig_lookup_t *lookup) { size_t addrl; sa = &lookup->ecs_addr->type.sa; - plen = lookup->ecs_addr->length; + plen = lookup->ecs_plen; /* Round up prefix len to a multiple of 8 */ addrl = (plen + 7) / 8; diff --git a/usr.bin/dig/lib/isc/include/isc/sockaddr.h b/usr.bin/dig/lib/isc/include/isc/sockaddr.h index 5563af090fc..a8b114bb676 100644 --- a/usr.bin/dig/lib/isc/include/isc/sockaddr.h +++ b/usr.bin/dig/lib/isc/include/isc/sockaddr.h @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sockaddr.h,v 1.5 2020/09/14 08:40:44 florian Exp $ */ +/* $Id: sockaddr.h,v 1.6 2020/09/15 11:46:19 florian Exp $ */ #ifndef ISC_SOCKADDR_H #define ISC_SOCKADDR_H 1 @@ -36,7 +36,6 @@ struct isc_sockaddr { struct sockaddr_storage ss; struct sockaddr_un sunix; } type; - unsigned int length; /* XXXRTH beginning? */ }; #define ISC_SOCKADDR_CMPADDR 0x0001 /*%< compare the address diff --git a/usr.bin/dig/lib/isc/sockaddr.c b/usr.bin/dig/lib/isc/sockaddr.c index 911653ec6a0..ee2cd7f5300 100644 --- a/usr.bin/dig/lib/isc/sockaddr.c +++ b/usr.bin/dig/lib/isc/sockaddr.c @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sockaddr.c,v 1.11 2020/09/15 08:19:29 florian Exp $ */ +/* $Id: sockaddr.c,v 1.12 2020/09/15 11:46:19 florian Exp $ */ /*! \file */ #include <sys/types.h> @@ -48,7 +48,7 @@ isc_sockaddr_compare(const isc_sockaddr_t *a, const isc_sockaddr_t *b, { REQUIRE(a != NULL && b != NULL); - if (a->length != b->length) + if (a->type.ss.ss_len != b->type.ss.ss_len) return (0); /* @@ -88,7 +88,7 @@ isc_sockaddr_compare(const isc_sockaddr_t *a, const isc_sockaddr_t *b, return (0); break; default: - if (memcmp(&a->type, &b->type, a->length) != 0) + if (memcmp(&a->type, &b->type, a->type.ss.ss_len) != 0) return (0); } return (1); @@ -169,7 +169,6 @@ isc_sockaddr_any(isc_sockaddr_t *sockaddr) sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin); sockaddr->type.sin.sin_addr.s_addr = INADDR_ANY; sockaddr->type.sin.sin_port = 0; - sockaddr->length = sizeof(sockaddr->type.sin); } void @@ -180,7 +179,6 @@ isc_sockaddr_any6(isc_sockaddr_t *sockaddr) sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6); sockaddr->type.sin6.sin6_addr = in6addr_any; sockaddr->type.sin6.sin6_port = 0; - sockaddr->length = sizeof(sockaddr->type.sin6); } void @@ -192,7 +190,6 @@ isc_sockaddr_fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina, sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin); sockaddr->type.sin.sin_addr = *ina; sockaddr->type.sin.sin_port = htons(port); - sockaddr->length = sizeof(sockaddr->type.sin); } void @@ -218,7 +215,6 @@ isc_sockaddr_fromin6(isc_sockaddr_t *sockaddr, const struct in6_addr *ina6, sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6); sockaddr->type.sin6.sin6_addr = *ina6; sockaddr->type.sin6.sin6_port = htons(port); - sockaddr->length = sizeof(sockaddr->type.sin6); } int diff --git a/usr.bin/dig/lib/isc/unix/socket.c b/usr.bin/dig/lib/isc/unix/socket.c index 42aad2efae6..4e3a77d317f 100644 --- a/usr.bin/dig/lib/isc/unix/socket.c +++ b/usr.bin/dig/lib/isc/unix/socket.c @@ -506,7 +506,7 @@ build_msghdr_send(isc_socket_t *sock, char* cmsgbuf, isc_socketevent_t *dev, if (!sock->connected) { msg->msg_name = (void *)&dev->address.type.sa; - msg->msg_namelen = dev->address.length; + msg->msg_namelen = dev->address.type.ss.ss_len; } else { msg->msg_name = NULL; msg->msg_namelen = 0; @@ -910,7 +910,7 @@ doio_recv(isc_socket_t *sock, isc_socketevent_t *dev) { } if (sock->type == isc_sockettype_udp) { - dev->address.length = msghdr.msg_namelen; + dev->address.type.ss.ss_len = msghdr.msg_namelen; if (isc_sockaddr_getport(&dev->address) == 0) { if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) { socket_log(sock, &dev->address, IOEVENT, @@ -2189,7 +2189,7 @@ isc_socket_bind(isc_socket_t *sock0, isc_sockaddr_t *sockaddr, "setsockopt(%d) %s", sock->fd, "failed"); /* Press on... */ } - if (bind(sock->fd, &sockaddr->type.sa, sockaddr->length) < 0) { + if (bind(sock->fd, &sockaddr->type.sa, sockaddr->type.sa.sa_len) < 0) { switch (errno) { case EACCES: return (ISC_R_NOPERM); @@ -2249,7 +2249,7 @@ isc_socket_connect(isc_socket_t *sock0, isc_sockaddr_t *addr, * outstanding, and it might happen to complete. */ sock->peer_address = *addr; - cc = connect(sock->fd, &addr->type.sa, addr->length); + cc = connect(sock->fd, &addr->type.sa, addr->type.sa.sa_len); if (cc < 0) { /* * HP-UX "fails" to connect a UDP socket and sets errno to |