diff options
author | Martin Bašti <mbasti@redhat.com> | 2020-08-27 23:09:56 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-09-03 08:01:56 +0200 |
commit | 3eff1c5092e542819ac7e6454a70c94b36ab2a40 (patch) | |
tree | 28b8cfa8273ad82c4e232bb36833f9db5011cba5 /lib | |
parent | 63a111a2770c04d9575386a87a34878226fe9c0e (diff) | |
download | curl-3eff1c5092e542819ac7e6454a70c94b36ab2a40.tar.gz |
http_proxy: do not crash with HTTPS_PROXY and NO_PROXY set
... in case NO_PROXY takes an effect
Without this patch, the following command crashes:
$ GIT_CURL_VERBOSE=1 NO_PROXY=github.com HTTPS_PROXY=https://example.com \
git clone https://github.com/curl/curl.git
Minimal libcurl-based reproducer:
#include <curl/curl.h>
int main() {
CURL *curl = curl_easy_init();
if(curl) {
CURLcode ret;
curl_easy_setopt(curl, CURLOPT_URL, "https://github.com/");
curl_easy_setopt(curl, CURLOPT_PROXY, "example.com");
/* set the proxy type */
curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTPS);
curl_easy_setopt(curl, CURLOPT_NOPROXY, "github.com");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
ret = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return ret;
}
return -1;
}
Assisted-by: Kamil Dudka
Bug: https://bugzilla.redhat.com/1873327
Closes #5902
Diffstat (limited to 'lib')
-rw-r--r-- | lib/url.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -2556,6 +2556,9 @@ static CURLcode create_conn_helper_init_proxy(struct connectdata *conn) conn->bits.socksproxy = FALSE; conn->bits.proxy_user_passwd = FALSE; conn->bits.tunnel_proxy = FALSE; + /* CURLPROXY_HTTPS does not have its own flag in conn->bits, yet we need + to signal that CURLPROXY_HTTPS is not used for this connection */ + conn->http_proxy.proxytype = CURLPROXY_HTTP; } out: |