git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] curl: fix symbolic constant typechecks with curl_easy_setopt()

From
Jeff King <peff@peff.net>
Date
Jun 4, 2025, 20:56 UTC
Message-ID
<20250604205622.GC1510819@coredump.intra.peff.net>
In-Reply-To
<20250604205505.GA1510724@coredump.intra.peff.net>

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>
---
 http.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/http.c b/http.c
index cce2ea7287..ecbc47ea4b 100644
--- 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);
-- 
2.50.0.rc1.276.g7db1193dde
Previous: Jeff KingNext: Junio C Hamano
Message 10 of 16 in “silencing warnings with curl 8.14”
  1. 0/3 silencing warnings with curl 8.14Jeff King, Jun 4, 2025
  2. 1/3 curl: fix integer constant typechecks with curl_easy_setopt()Jeff King, Jun 4, 2025
  3. Johannes SchindelinJun 5, 2025
  4. Junio C HamanoJun 5, 2025
  5. Jeff KingJun 5, 2025
  6. Jeff KingJun 5, 2025
  7. Junio C HamanoJun 5, 2025
  8. Jeff KingJun 5, 2025
  9. 2/3 curl: fix integer variable typechecks with curl_easy_setopt()Jeff King, Jun 4, 2025
  10. 3/3 curl: fix symbolic constant typechecks with curl_easy_setopt()Jeff King, Jun 4, 2025
  11. Junio C HamanoJun 4, 2025
  12. Daniel StenbergJun 5, 2025
  13. Jeff KingJun 5, 2025
  14. Collin FunkJun 4, 2025
  15. Ramsay JonesJun 4, 2025
  16. Patrick SteinhardtJun 5, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.