From e12a1e4e5df66fad8a011ebe46d26f9e06347983 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Fri, 6 Sep 2024 18:47:32 +0200 Subject: [PATCH] oidc_child: use CURLOPT_PROTOCOLS_STR if available Since curl version 7.85.0 CURLOPT_PROTOCOLS is deprecated and should be replaced by CURLOPT_PROTOCOLS_STR. Resolves: https://github.com/SSSD/sssd/issues/6922 --- src/external/libcurl.m4 | 12 ++++++++++++ src/oidc_child/oidc_child_curl.c | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/src/external/libcurl.m4 b/src/external/libcurl.m4 index 4d28d595e03..9fafb1c8c3b 100644 --- a/src/external/libcurl.m4 +++ b/src/external/libcurl.m4 @@ -2,3 +2,15 @@ AC_SUBST(CURL_LIBS) AC_SUBST(CURL_CFLAGS) PKG_CHECK_MODULES([CURL], [libcurl], [found_libcurl=yes], [found_libcurl=no]) + +AC_MSG_CHECKING([whether libcurl knows CURLOPT_PROTOCOLS_STR]) + +AC_LINK_IFELSE( + [AC_LANG_SOURCE([ +#include +int main () { + return CURLOPT_PROTOCOLS_STR; +}])], + [AC_MSG_RESULT([yes]); AC_DEFINE_UNQUOTED([HAVE_CURLOPT_PROTOCOLS_STR], [1], [CURLOPT_PROTOCOLS_STR available]) ], + [AC_MSG_RESULT([no])] +) diff --git a/src/oidc_child/oidc_child_curl.c b/src/oidc_child/oidc_child_curl.c index 0e48acabe62..ad6d206346f 100644 --- a/src/oidc_child/oidc_child_curl.c +++ b/src/oidc_child/oidc_child_curl.c @@ -122,7 +122,11 @@ static errno_t set_http_opts(CURL *curl_ctx, struct devicecode_ctx *dc_ctx, int ret; /* Only allow https */ +#ifdef HAVE_CURLOPT_PROTOCOLS_STR + res = curl_easy_setopt(curl_ctx, CURLOPT_PROTOCOLS_STR, "https"); +#else res = curl_easy_setopt(curl_ctx, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS); +#endif if (res != CURLE_OK) { DEBUG(SSSDBG_OP_FAILURE, "Failed to enforce HTTPS.\n"); ret = EIO;