From: Ian Jackson Date: Sat, 12 Oct 2019 11:29:38 +0000 (+0100) Subject: test: udp-preload: Fix binding X-Git-Tag: v0.5.0~115 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=b82dd94a6bea0059526ef49d80b736ca7165e20e;p=secnet.git test: udp-preload: Fix binding inet_ntop needs just the addr field. How "convenient". Signed-off-by: Ian Jackson --- diff --git a/test/udp-preload.c b/test/udp-preload.c index e3133a8..6667a67 100644 --- a/test/udp-preload.c +++ b/test/udp-preload.c @@ -98,13 +98,14 @@ static fdinfo *lookup(int fd) { static int addrport2str(char buf[ADDRPORTSTRLEN+1], const struct sockaddr *addr, socklen_t addrlen) { const void *addrv=addr; + const void *iav; const struct sockaddr_in *sin; const struct sockaddr_in6 *sin6; uint16_t port; socklen_t el; switch (addr->sa_family) { - case AF_INET : sin =addrv; el=sizeof(*sin ); port=sin ->sin_port; break; - case AF_INET6: sin6=addrv; el=sizeof(*sin6); port=sin6->sin6_port; break; + case AF_INET: sin =addrv; el=sizeof(*sin ); iav=&sin ->sin_addr ; port=sin ->sin_port ; break; + case AF_INET6: sin6=addrv; el=sizeof(*sin6); iav=&sin6->sin6_addr; port=sin6->sin6_port; break; default: errno=ESRCH; return -1; } //fprintf(stderr,"af=%lu el=%lu addrlen=%lu\n", @@ -113,7 +114,7 @@ static int addrport2str(char buf[ADDRPORTSTRLEN+1], // (unsigned long)addrlen); if (addrlen!=el) { errno=EINVAL; return -1; } char *p=buf; - if (!inet_ntop(addr->sa_family,addr,p,INET6_ADDRSTRLEN)) return -1; + if (!inet_ntop(addr->sa_family,iav,p,INET6_ADDRSTRLEN)) return -1; p+=strlen(p); sprintf(p,",%u",(unsigned)ntohs(port)); return 0;