From: Howard Chu Date: Mon, 1 Sep 2025 14:05:53 +0000 (+0100) Subject: ITS#10387 daemon: fix reverselookup of proxied IPv6 address X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aa4d57e774cda3ec85d31194f817988c66a73625;p=thirdparty%2Fopenldap.git ITS#10387 daemon: fix reverselookup of proxied IPv6 address --- diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index eb0f538514..72b0843d07 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -2278,7 +2278,7 @@ slap_listener( # endif /* LDAP_PF_INET6 */ case AF_INET: if ( sl->sl_is_proxied ) { - if ( !proxyp( sfd, &from ) ) { + if ( !proxyp( sfd, &from, &len ) ) { Debug( LDAP_DEBUG_ANY, "slapd(%ld): proxyp failed\n", (long)sfd ); slapd_close( sfd ); return 0; diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index 0d58ddbbea..084d85266b 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -1563,7 +1563,7 @@ LDAP_SLAPD_F (char *) phonetic LDAP_P(( char *s )); /* * proxyp.c */ -LDAP_SLAPD_F (int) proxyp LDAP_P((ber_socket_t sfd, Sockaddr *from)); +LDAP_SLAPD_F (int) proxyp LDAP_P((ber_socket_t sfd, Sockaddr *from, ber_socklen_t *salen)); /* * referral.c diff --git a/servers/slapd/proxyp.c b/servers/slapd/proxyp.c index 205bf26e17..d678c9ec61 100644 --- a/servers/slapd/proxyp.c +++ b/servers/slapd/proxyp.c @@ -58,7 +58,7 @@ static const uint8_t proxyp_sig[12] = { }; int -proxyp( ber_socket_t sfd, Sockaddr *from ) { +proxyp( ber_socket_t sfd, Sockaddr *from, ber_socklen_t *salen ) { proxyp_header pph; proxyp_addr ppa; char peername[LDAP_IPADDRLEN]; @@ -170,6 +170,7 @@ proxyp( ber_socket_t sfd, Sockaddr *from ) { memcpy( &from->sa_in6_addr.sin6_addr, ppa.ip6.src_addr, sizeof(ppa.ip6.src_addr) ); from->sa_in6_addr.sin6_port = ppa.ip6.src_port; + *salen = sizeof(struct sockaddr_in6); #else Debug( LDAP_DEBUG_ANY, "proxyp(%ld): " "IPv6 proxied addresses disabled\n",