Skip to content

Commit 811ff97

Browse files
committed
http: report errs when curl_easy_setopt fails for CURLOPT_SSL_OPTIONS
Signed-off-by: Hans Zandbelt <[email protected]>
1 parent 3530a84 commit 811ff97

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
12/15/2024
22
- add Coverity Github action
3+
- http: report errors when curl_easy_setopt fails for CURLOPT_SSL_OPTIONS
34

45
12/13/2024
56
- address warnings from static code analysis tool Coverity

src/http.c

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -611,59 +611,62 @@ char *oidc_http_form_encoded_data(request_rec *r, const apr_table_t *params) {
611611

612612
#define OIDC_CURLOPT_SSL_OPTIONS "CURLOPT_SSL_OPTIONS"
613613

614-
#define OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, option, key, val) \
614+
#define OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, option, key, val) \
615615
if (_oidc_strstr(env_var_value, option) != NULL) { \
616616
oidc_debug(r, "curl_easy_setopt (%d) %s (%d)", key, option, val); \
617-
curl_easy_setopt(curl, key, val); \
617+
code = curl_easy_setopt(curl, key, val); \
618+
if (code != CURLE_OK) \
619+
oidc_error(r, "curl_easy_setopt for '%s' failed with: %s", option, curl_easy_strerror(code)); \
618620
}
619621

620622
static void oidc_http_set_curl_ssl_options(request_rec *r, CURL *curl) {
621623
const char *env_var_value = NULL;
624+
CURLcode code = CURLE_OK;
622625
if (r->subprocess_env != NULL)
623626
env_var_value = apr_table_get(r->subprocess_env, OIDC_CURLOPT_SSL_OPTIONS);
624627
if (env_var_value == NULL)
625628
return;
626629
oidc_debug(r, "SSL options environment variable %s=%s found", OIDC_CURLOPT_SSL_OPTIONS, env_var_value);
627630
#if LIBCURL_VERSION_NUM >= 0x071900
628-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURLSSLOPT_ALLOW_BEAST", CURLOPT_SSL_OPTIONS,
631+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURLSSLOPT_ALLOW_BEAST", CURLOPT_SSL_OPTIONS,
629632
CURLSSLOPT_ALLOW_BEAST)
630633
#endif
631634
#if LIBCURL_VERSION_NUM >= 0x072c00
632-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURLSSLOPT_NO_REVOKE", CURLOPT_SSL_OPTIONS,
635+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURLSSLOPT_NO_REVOKE", CURLOPT_SSL_OPTIONS,
633636
CURLSSLOPT_NO_REVOKE)
634637
#endif
635638
#if LIBCURL_VERSION_NUM >= 0x074400
636-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURLSSLOPT_NO_PARTIALCHAIN", CURLOPT_SSL_OPTIONS,
639+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURLSSLOPT_NO_PARTIALCHAIN", CURLOPT_SSL_OPTIONS,
637640
CURLSSLOPT_NO_PARTIALCHAIN)
638641
#endif
639642
#if LIBCURL_VERSION_NUM >= 0x074600
640-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURLSSLOPT_REVOKE_BEST_EFFORT", CURLOPT_SSL_OPTIONS,
643+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURLSSLOPT_REVOKE_BEST_EFFORT", CURLOPT_SSL_OPTIONS,
641644
CURLSSLOPT_REVOKE_BEST_EFFORT)
642645
#endif
643646
#if LIBCURL_VERSION_NUM >= 0x074700
644-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURLSSLOPT_NATIVE_CA", CURLOPT_SSL_OPTIONS,
647+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURLSSLOPT_NATIVE_CA", CURLOPT_SSL_OPTIONS,
645648
CURLSSLOPT_NATIVE_CA)
646649
#endif
647650
#if LIBCURL_VERSION_NUM >= 0x072200
648-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_TLSv1_0", CURLOPT_SSLVERSION,
651+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_TLSv1_0", CURLOPT_SSLVERSION,
649652
CURL_SSLVERSION_TLSv1_0)
650-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_TLSv1_1", CURLOPT_SSLVERSION,
653+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_TLSv1_1", CURLOPT_SSLVERSION,
651654
CURL_SSLVERSION_TLSv1_1)
652-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_TLSv1_2", CURLOPT_SSLVERSION,
655+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_TLSv1_2", CURLOPT_SSLVERSION,
653656
CURL_SSLVERSION_TLSv1_2)
654657
#endif
655658
#if LIBCURL_VERSION_NUM >= 0x073400
656-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_TLSv1_3", CURLOPT_SSLVERSION,
659+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_TLSv1_3", CURLOPT_SSLVERSION,
657660
CURL_SSLVERSION_TLSv1_3)
658661
#endif
659662
#if LIBCURL_VERSION_NUM >= 0x073600
660-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_0", CURLOPT_SSLVERSION,
663+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_0", CURLOPT_SSLVERSION,
661664
CURL_SSLVERSION_MAX_TLSv1_0)
662-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_1", CURLOPT_SSLVERSION,
665+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_1", CURLOPT_SSLVERSION,
663666
CURL_SSLVERSION_MAX_TLSv1_1)
664-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_2", CURLOPT_SSLVERSION,
667+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_2", CURLOPT_SSLVERSION,
665668
CURL_SSLVERSION_MAX_TLSv1_2)
666-
OIDC_HTTP_SET_CURL_OPTION(r, curl, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_3", CURLOPT_SSLVERSION,
669+
OIDC_HTTP_SET_CURL_OPTION(r, curl, code, env_var_value, "CURL_SSLVERSION_MAX_TLSv1_3", CURLOPT_SSLVERSION,
667670
CURL_SSLVERSION_MAX_TLSv1_3)
668671
#endif
669672
}

0 commit comments

Comments
 (0)