]> git.ipfire.org Git - thirdparty/git.git/commitdiff
curl: fix symbolic constant typechecks with curl_easy_setopt()
authorJeff King <peff@peff.net>
Wed, 4 Jun 2025 20:56:22 +0000 (16:56 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Jun 2025 21:17:53 +0000 (14:17 -0700)
As with the previous two commits, we should be passing long integers,
not regular ones, to curl_easy_setopt(), and compiling against curl 8.14
loudly complains if we don't.

This patch catches the remaining cases, which are ones where we pass
curl's own symbolic constants. We'll cast them to long manually in each
call.

It seems kind of weird to me that curl doesn't define these constants as
longs, since the point of them is to pass to curl_easy_setopt(). But in
the curl documentation and examples, they clearly show casting them as
part of the setopt calls. It may be that there is some reason not to
push the type into the macro, like backwards compatibility. I didn't
dig, as it doesn't really matter: we have to follow what existing curl
versions ask for anyway.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http.c

diff --git a/http.c b/http.c
index cce2ea7287368703da0d0f2766d77e715ef39343..ecbc47ea4b3f27e03607fdb982f392ace3b209ae 100644 (file)
--- a/http.c
+++ b/http.c
@@ -1057,7 +1057,7 @@ static CURL *get_curl_handle(void)
 
        if (http_ssl_backend && !strcmp("schannel", http_ssl_backend) &&
            !http_schannel_check_revoke) {
-               curl_easy_setopt(result, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
+               curl_easy_setopt(result, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_NO_REVOKE);
        }
 
        if (http_proactive_auth != PROACTIVE_AUTH_NONE)
@@ -1118,7 +1118,7 @@ static CURL *get_curl_handle(void)
        }
 
        curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20L);
-       curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
+       curl_easy_setopt(result, CURLOPT_POSTREDIR, (long)CURL_REDIR_POST_ALL);
 
 #ifdef GIT_CURL_HAVE_CURLOPT_PROTOCOLS_STR
        {
@@ -1193,18 +1193,18 @@ static CURL *get_curl_handle(void)
 
                if (starts_with(curl_http_proxy, "socks5h"))
                        curl_easy_setopt(result,
-                               CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
+                               CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS5_HOSTNAME);
                else if (starts_with(curl_http_proxy, "socks5"))
                        curl_easy_setopt(result,
-                               CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
+                               CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS5);
                else if (starts_with(curl_http_proxy, "socks4a"))
                        curl_easy_setopt(result,
-                               CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4A);
+                               CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS4A);
                else if (starts_with(curl_http_proxy, "socks"))
                        curl_easy_setopt(result,
-                               CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+                               CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS4);
                else if (starts_with(curl_http_proxy, "https")) {
-                       curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_HTTPS);
+                       curl_easy_setopt(result, CURLOPT_PROXYTYPE, (long)CURLPROXY_HTTPS);
 
                        if (http_proxy_ssl_cert)
                                curl_easy_setopt(result, CURLOPT_PROXY_SSLCERT, http_proxy_ssl_cert);