]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#10387 daemon: fix reverselookup of proxied IPv6 address
authorHoward Chu <hyc@openldap.org>
Mon, 1 Sep 2025 14:05:53 +0000 (15:05 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 17 Sep 2025 17:28:41 +0000 (17:28 +0000)
servers/slapd/daemon.c
servers/slapd/proto-slap.h
servers/slapd/proxyp.c

index eb0f5385149e199c9a2d5c4c579ccf08e4c3c8a4..72b0843d07e51b317f9f5a4548ef72a89626be8f 100644 (file)
@@ -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;
index 0d58ddbbea4639d6b422d77e7a9bbbb80cfc7a34..084d85266b16df28f1051cac93f181587481272c 100644 (file)
@@ -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
index 205bf26e177ebf56ffdd8028d0469ef00c3cfe96..d678c9ec61c3d5f5b410a24fec1b86b15ec98b59 100644 (file)
@@ -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",