git ssb

0+

cel / sslh



Commit 717c285b311db5d809356597b2df5270360f1751

Fix access rights checking to work with IPv6.

Eero Häkkinen committed on 9/27/2015, 7:14:00 PM
Parent: 4cbaf447b5a634f703bc571bf0e12f3ae1514d8a

Files changed

common.cchanged
common.cView
@@ -470,27 +470,30 @@
470470 */
471471 int check_access_rights(int in_socket, const char* service)
472472 {
473473 #ifdef LIBWRAP
474- struct sockaddr peeraddr;
475- socklen_t size = sizeof(peeraddr);
474+ union {
475+ struct sockaddr saddr;
476+ struct sockaddr_storage ss;
477+ } peer;
478+ socklen_t size = sizeof(peer);
476479 char addr_str[NI_MAXHOST], host[NI_MAXHOST];
477480 int res;
478481
479- res = getpeername(in_socket, &peeraddr, &size);
482+ res = getpeername(in_socket, &peer.saddr, &size);
480483 CHECK_RES_RETURN(res, "getpeername");
481484
482485 /* extract peer address */
483- res = getnameinfo(&peeraddr, size, addr_str, sizeof(addr_str), NULL, 0, NI_NUMERICHOST);
486+ res = getnameinfo(&peer.saddr, size, addr_str, sizeof(addr_str), NULL, 0, NI_NUMERICHOST);
484487 if (res) {
485488 if (verbose)
486489 fprintf(stderr, "getnameinfo(NI_NUMERICHOST):%s\n", gai_strerror(res));
487490 strcpy(addr_str, STRING_UNKNOWN);
488491 }
489492 /* extract peer name */
490493 strcpy(host, STRING_UNKNOWN);
491494 if (!numeric) {
492- res = getnameinfo(&peeraddr, size, host, sizeof(host), NULL, 0, NI_NAMEREQD);
495+ res = getnameinfo(&peer.saddr, size, host, sizeof(host), NULL, 0, NI_NAMEREQD);
493496 if (res) {
494497 if (verbose)
495498 fprintf(stderr, "getnameinfo(NI_NAMEREQD):%s\n", gai_strerror(res));
496499 }

Built with git-ssb-web