]> 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)
committerHoward Chu <hyc@openldap.org>
Mon, 1 Sep 2025 14:05:53 +0000 (15:05 +0100)
servers/slapd/daemon.c
servers/slapd/proto-slap.h
servers/slapd/proxyp.c

index 158711497357ba90016f678aa09fe1047c769391..617a2f39465e06eca6394291f99431f40cf0f497 100644 (file)
@@ -2275,7 +2275,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 73f1c8a68f993aa3dcddcb389161a1c858d0fbe7..8e0d184e4402555ffdf4041d4e747a49577536b6 100644 (file)
@@ -1569,7 +1569,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",