From 7026c36ae4e0631db2d9f12941d1ecc8704900c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Sat, 12 Sep 2020 01:36:22 +0700 Subject: [PATCH] curl: backport fix for crash with NO_PROXY Backported from https://github.com/curl/curl/commit/3eff1c5092e542819ac7e6454a70c94b36ab --- srcpkgs/curl/patches/fix-crash-no-proxy.patch | 54 +++++++++++++++++++ srcpkgs/curl/template | 2 +- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/curl/patches/fix-crash-no-proxy.patch diff --git a/srcpkgs/curl/patches/fix-crash-no-proxy.patch b/srcpkgs/curl/patches/fix-crash-no-proxy.patch new file mode 100644 index 00000000000..a1b763ce1e0 --- /dev/null +++ b/srcpkgs/curl/patches/fix-crash-no-proxy.patch @@ -0,0 +1,54 @@ +From 3eff1c5092e542819ac7e6454a70c94b36ab2a40 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Ba=C5=A1ti?= +Date: Thu, 27 Aug 2020 23:09:56 +0200 +Subject: [PATCH] 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 + + 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 +--- + lib/url.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/lib/url.c b/lib/url.c +index d342c4e6986..2f02a0a16a3 100644 +--- a/lib/url.c ++++ b/lib/url.c +@@ -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: diff --git a/srcpkgs/curl/template b/srcpkgs/curl/template index b9301476049..08629c4f93e 100644 --- a/srcpkgs/curl/template +++ b/srcpkgs/curl/template @@ -1,7 +1,7 @@ # Template file for 'curl' pkgname=curl version=7.72.0 -revision=1 +revision=2 build_style=gnu-configure configure_args="ac_cv_sizeof_off_t=8 --enable-threaded-resolver --enable-ipv6 $(vopt_with rtmp) $(vopt_with gssapi) $(vopt_enable ldap) $(vopt_with gnutls)