From 753b257b1d0a6cadbaec4f09c3e8be509387c4bc Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 30 Mar 2024 11:14:54 +0100 Subject: [PATCH] openldap: create ldap URLs correctly for IPv6 addresses Reported-by: Sergio Durigan Junior Fixes #13228 Closes #13235 More context: When the user specified an IPv6 address to be used as an LDAP server, curl will fail to properly enclose it in square brackets, which causes the connection to fail because the host address cannot be distinguished from the port: $ curl -v ldap://[fd42:be5:e632:a6b3:216:3eff:feb1:5bc4]:389 ... * LDAP local: Cannot connect to ldap://fd42:be5:e632:a6b3:216:3eff:feb1:5bc4:389, Bad parameter to an ldap routine ... Fix this by always enclosing the IPv6 address in square brackets. Origin: upstream, https://github.com/curl/curl/commit/56935a7dada6975d5a46aa494de0af195e4e8659 Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1053643 Gbp-Pq: Name openldap-create-ldap-URLs-correctly-for-IPv6-addresses.patch --- lib/openldap.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/openldap.c b/lib/openldap.c index 47266f64..85a37b81 100644 --- a/lib/openldap.c +++ b/lib/openldap.c @@ -548,9 +548,12 @@ static CURLcode oldap_connect(struct Curl_easy *data, bool *done) return result; } - hosturl = aprintf("ldap%s://%s:%d", - conn->handler->flags & PROTOPT_SSL? "s": "", - conn->host.name, conn->remote_port); + hosturl = aprintf("%s://%s%s%s:%d", + conn->handler->scheme, + conn->bits.ipv6_ip? "[": "", + conn->host.name, + conn->bits.ipv6_ip? "]": "", + conn->remote_port); if(!hosturl) return CURLE_OUT_OF_MEMORY; -- 2.30.2