From 79b277fe02a5ea0604d0b124391a9e5048210dc4 Mon Sep 17 00:00:00 2001
From: h00465007
Date: Sat, 11 Jan 2020 21:42:06 +0800
Subject: [PATCH] update to 7.66.0
---
0001-curl-7.61.1-test320-gnutls.patch | 63 ------
0001-curl-7.66.0-metalink-memleak.patch | 71 +++++++
0001-fix-double-free-when-multi-perform.patch | 24 ---
0101-curl-7.32.0-multilib.patch | 2 +-
0102-curl-7.36.0-debug.patch | 4 +-
0103-curl-7.59.0-python3.patch | 93 +-------
0104-curl-7.19.7-localhost6.patch | 4 +-
0105-curl-7.63.0-lib1560-valgrind.patch | 39 ++++
..._plain_message-fix-too-large-input-c.patch | 29 ---
...-data-multi_easy-on-free-to-avoid-us.patch | 36 ----
...ethmetic-when-outputting-warnings-to.patch | 29 ---
...eck-condition-for-type2-received-dat.patch | 34 ---
...message-size-check-to-avoid-buffer-o.patch | 39 ----
...id-risk-of-buffer-overflow-in-strtol.patch | 47 -----
CVE-2019-5436.patch | 25 ---
CVE-2019-5481.patch | 40 ----
CVE-2019-5482.patch | 59 ------
...-always-nul-terminate-returned-strin.patch | 25 ---
...http2_done-fix-memleak-in-error-path.patch | 44 ----
Curl_retry_request-fix-memory-leak.patch | 36 ----
Curl_saferealloc-Fixed-typo-in-docblock.patch | 26 ---
...ndle-memory-error-in-list-conversion.patch | 50 -----
...lude-all-libraries-in-ssl-libs-fetch.patch | 61 ------
curl-7.61.1.tar.xz | Bin 2360392 -> 0 bytes
curl-7.66.0.tar.xz | Bin 0 -> 2414840 bytes
...mory-leak-reading-writeout-from-file.patch | 30 ---
curl.spec | 198 +++++-------------
curl_easy_perform-fix-timeout-handling.patch | 120 -----------
...ltibyte-fix-a-malloc-overcalculation.patch | 41 ----
darwinssl-Fix-realloc-memleak.patch | 37 ----
...Fix-memory-leaks-from-realloc-errors.patch | 163 --------------
...emory-Potential-leak-of-memory-point.patch | 30 ---
fix-compiler-warning-on-64-bit-Windows.patch | 52 -----
fix-gcc8-warning-on-Windows.patch | 29 ---
fix-gcc8-warning.patch | 29 ---
fix-leak-when-writing-cookies-to-file.patch | 30 ---
...ck-on-Curl_shuffle_addr-return-value.patch | 26 ---
http-fix-memleak-in-rewind-error-path.patch | 51 -----
http2-fix-memory-leaks-on-error-path.patch | 42 ----
krb5-fix-memory-leak-in-krb_auth.patch | 27 ---
...ftp_canonicalize_path-data-correctly.patch | 68 ------
...release-sessionid-resources-on-error.patch | 44 ----
memory-add-missing-curl_printf-header.patch | 33 ---
...y-ensure-to-check-allocation-results.patch | 128 -----------
...handling-in-the-SENDPROTOCONNECT-sta.patch | 30 ---
multi-avoid-double-free.patch | 68 ------
...x-location-URL-memleak-in-error-path.patch | 30 ---
...-leak-in-content-encoding-related-er.patch | 42 ----
...rary-strings-if-memory-allocation-fa.patch | 111 ----------
nonblock-fix-unused-parameter-warning.patch | 28 ---
...ct-even-if-libnssckbi.so-fails-to-lo.patch | 35 ----
...SSL_get_tlsext_status_ocsp_resp-call.patch | 48 -----
openvms-fix-OpenSSL-discovery-on-VAX.patch | 30 ---
...ection-close-there-might-not-be-a-tr.patch | 48 -----
secure-Openwall-URLs.patch | 53 -----
...t-path-in-request-if-connection-reus.patch | 55 -----
ssh-free-the-session-on-init-failures.patch | 35 ----
...sh2-error-message-when-ssh-session-s.patch | 36 ----
timediff-fix-math-for-unsigned-time_t.patch | 37 ----
tool_cb_hdr-handle-failure-of-rename.patch | 47 -----
tool_cb_prg-avoid-integer-overflow.patch | 63 ------
urlglob-improve-error-message.patch | 71 -------
wolfssl-Perform-cleanup.patch | 44 ----
zsh.pl-escape-character.patch | 38 ----
64 files changed, 176 insertions(+), 2831 deletions(-)
delete mode 100644 0001-curl-7.61.1-test320-gnutls.patch
create mode 100644 0001-curl-7.66.0-metalink-memleak.patch
delete mode 100644 0001-fix-double-free-when-multi-perform.patch
create mode 100644 0105-curl-7.63.0-lib1560-valgrind.patch
delete mode 100644 CVE-2018-16839-Curl_auth_create_plain_message-fix-too-large-input-c.patch
delete mode 100644 CVE-2018-16840-Curl_close-clear-data-multi_easy-on-free-to-avoid-us.patch
delete mode 100644 CVE-2018-16842-voutf-fix-bad-arethmetic-when-outputting-warnings-to.patch
delete mode 100644 CVE-2018-16890-NTLM-fix-size-check-condition-for-type2-received-dat.patch
delete mode 100644 CVE-2019-3822-ntlm-fix-_type3_message-size-check-to-avoid-buffer-o.patch
delete mode 100644 CVE-2019-3823-smtp-avoid-risk-of-buffer-overflow-in-strtol.patch
delete mode 100644 CVE-2019-5436.patch
delete mode 100644 CVE-2019-5481.patch
delete mode 100644 CVE-2019-5482.patch
delete mode 100644 Curl_dedotdotify-always-nul-terminate-returned-strin.patch
delete mode 100644 Curl_http2_done-fix-memleak-in-error-path.patch
delete mode 100644 Curl_retry_request-fix-memory-leak.patch
delete mode 100644 Curl_saferealloc-Fixed-typo-in-docblock.patch
delete mode 100644 OS400-handle-memory-error-in-list-conversion.patch
delete mode 100644 configure-include-all-libraries-in-ssl-libs-fetch.patch
delete mode 100644 curl-7.61.1.tar.xz
create mode 100644 curl-7.66.0.tar.xz
delete mode 100644 curl-fix-memory-leak-reading-writeout-from-file.patch
delete mode 100644 curl_easy_perform-fix-timeout-handling.patch
delete mode 100644 curl_multibyte-fix-a-malloc-overcalculation.patch
delete mode 100644 darwinssl-Fix-realloc-memleak.patch
delete mode 100644 examples-Fix-memory-leaks-from-realloc-errors.patch
delete mode 100644 examples-postinmemory-Potential-leak-of-memory-point.patch
delete mode 100644 fix-compiler-warning-on-64-bit-Windows.patch
delete mode 100644 fix-gcc8-warning-on-Windows.patch
delete mode 100644 fix-gcc8-warning.patch
delete mode 100644 fix-leak-when-writing-cookies-to-file.patch
delete mode 100644 hostip-fix-check-on-Curl_shuffle_addr-return-value.patch
delete mode 100644 http-fix-memleak-in-rewind-error-path.patch
delete mode 100644 http2-fix-memory-leaks-on-error-path.patch
delete mode 100644 krb5-fix-memory-leak-in-krb_auth.patch
delete mode 100644 libssh-free-sftp_canonicalize_path-data-correctly.patch
delete mode 100644 mbedtls-release-sessionid-resources-on-error.patch
delete mode 100644 memory-add-missing-curl_printf-header.patch
delete mode 100644 memory-ensure-to-check-allocation-results.patch
delete mode 100644 multi-Fix-error-handling-in-the-SENDPROTOCONNECT-sta.patch
delete mode 100644 multi-avoid-double-free.patch
delete mode 100644 multi-fix-location-URL-memleak-in-error-path.patch
delete mode 100644 multi-fix-memory-leak-in-content-encoding-related-er.patch
delete mode 100644 netrc-free-temporary-strings-if-memory-allocation-fa.patch
delete mode 100644 nonblock-fix-unused-parameter-warning.patch
delete mode 100644 nss-try-to-connect-even-if-libnssckbi.so-fails-to-lo.patch
delete mode 100644 openssl-fix-the-SSL_get_tlsext_status_ocsp_resp-call.patch
delete mode 100644 openvms-fix-OpenSSL-discovery-on-VAX.patch
delete mode 100644 schannel-on-connection-close-there-might-not-be-a-tr.patch
delete mode 100644 secure-Openwall-URLs.patch
delete mode 100644 smb-fix-incorrect-path-in-request-if-connection-reus.patch
delete mode 100644 ssh-free-the-session-on-init-failures.patch
delete mode 100644 ssh-log-the-libssh2-error-message-when-ssh-session-s.patch
delete mode 100644 timediff-fix-math-for-unsigned-time_t.patch
delete mode 100644 tool_cb_hdr-handle-failure-of-rename.patch
delete mode 100644 tool_cb_prg-avoid-integer-overflow.patch
delete mode 100644 urlglob-improve-error-message.patch
delete mode 100644 wolfssl-Perform-cleanup.patch
delete mode 100644 zsh.pl-escape-character.patch
diff --git a/0001-curl-7.61.1-test320-gnutls.patch b/0001-curl-7.61.1-test320-gnutls.patch
deleted file mode 100644
index a9cbaac..0000000
--- a/0001-curl-7.61.1-test320-gnutls.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 3cd5b375e31fb98e4782dc3a77e7316ad9eb26cf Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Thu, 4 Oct 2018 15:34:13 +0200
-Subject: [PATCH] test320: strip out more HTML when comparing
-
-To make the test case work with different gnutls-serv versions better.
-
-Reported-by: Kamil Dudka
-Fixes #3093
-Closes #3094
-
-Upstream-commit: 94ad57b0246b5658c2a9139dbe6a80efa4c4e2f3
-Signed-off-by: Kamil Dudka
----
- tests/data/test320 | 24 ++++--------------------
- 1 file changed, 4 insertions(+), 20 deletions(-)
-
-diff --git a/tests/data/test320 b/tests/data/test320
-index 457a11eb2..87311d4f2 100644
---- a/tests/data/test320
-+++ b/tests/data/test320
-@@ -62,34 +62,18 @@ simple TLS-SRP HTTPS GET, check user in response
- HTTP/1.0 200 OK
- Content-type: text/html
-
--
--
--
--
--
--
--If your browser supports session resuming, then you should see the same session ID, when you press the reload button.
--Connected as user 'jsmith'.
--
--
|
--| Key Exchange: | SRP |
--| Compression | NULL |
--| Cipher | AES-NNN-CBC |
--| MAC | SHA1 |
--| Ciphersuite | SRP_SHA_AES_NNN_CBC_SHA1 |
--
Your HTTP header was:
Host: %HOSTIP:%HTTPTLSPORT
-+FINE
- User-Agent: curl-test-suite
- Accept: */*
-
--
--
--
-
-
--s/^Session ID:.*//
-+s/^
Connected as user 'jsmith'.*/FINE/
- s/Protocol version:.*[0-9]//
- s/GNUTLS/GnuTLS/
- s/(AES[-_])\d\d\d([-_]CBC)/$1NNN$2/
-+s/^<.*\n//
-+s/^\n//
-
-
-
---
-2.17.1
-
diff --git a/0001-curl-7.66.0-metalink-memleak.patch b/0001-curl-7.66.0-metalink-memleak.patch
new file mode 100644
index 0000000..16c8ae2
--- /dev/null
+++ b/0001-curl-7.66.0-metalink-memleak.patch
@@ -0,0 +1,71 @@
+From 855ebacdffbc421b121563ae1ecd9fde736bfaf2 Mon Sep 17 00:00:00 2001
+From: Kamil Dudka
+Date: Wed, 11 Sep 2019 16:32:11 +0200
+Subject: [PATCH] curl: fix memory leaked by parse_metalink()
+
+This commit fixes a regression introduced by curl-7_65_3-5-gb88940850.
+Detected by tests 2005, 2008, 2009, 2010, 2011, and 2012 with valgrind
+and libmetalink enabled.
+
+Closes #4326
+
+Upstream-commit: 1ca91bcdb588dc6c25d345f2411fdba314433732
+Signed-off-by: Kamil Dudka
+---
+ src/tool_metalink.c | 2 +-
+ src/tool_metalink.h | 3 +++
+ src/tool_operate.c | 4 ++++
+ 3 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/tool_metalink.c b/src/tool_metalink.c
+index 0740407f9..cd5a7d650 100644
+--- a/src/tool_metalink.c
++++ b/src/tool_metalink.c
+@@ -965,7 +965,7 @@ static void delete_metalink_resource(metalink_resource *res)
+ Curl_safefree(res);
+ }
+
+-static void delete_metalinkfile(metalinkfile *mlfile)
++void delete_metalinkfile(metalinkfile *mlfile)
+ {
+ metalink_resource *res;
+ if(mlfile == NULL) {
+diff --git a/src/tool_metalink.h b/src/tool_metalink.h
+index 1e367033c..f5ec306f7 100644
+--- a/src/tool_metalink.h
++++ b/src/tool_metalink.h
+@@ -105,6 +105,8 @@ extern const digest_params SHA256_DIGEST_PARAMS[1];
+ * Counts the resource in the metalinkfile.
+ */
+ int count_next_metalink_resource(metalinkfile *mlfile);
++
++void delete_metalinkfile(metalinkfile *mlfile);
+ void clean_metalink(struct OperationConfig *config);
+
+ /*
+@@ -158,6 +160,7 @@ void metalink_cleanup(void);
+ #else /* USE_METALINK */
+
+ #define count_next_metalink_resource(x) 0
++#define delete_metalinkfile(x) (void)x
+ #define clean_metalink(x) (void)x
+
+ /* metalink_cleanup() takes no arguments */
+diff --git a/src/tool_operate.c b/src/tool_operate.c
+index d2ad9642d..09dfc0c84 100644
+--- a/src/tool_operate.c
++++ b/src/tool_operate.c
+@@ -2073,6 +2073,10 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
+ result = post_transfer(global, share, per, result, &retry);
+ if(retry)
+ continue;
++
++ /* Release metalink related resources here */
++ delete_metalinkfile(per->mlfile);
++
+ per = del_transfer(per);
+
+ /* Bail out upon critical errors or --fail-early */
+--
+2.20.1
+
diff --git a/0001-fix-double-free-when-multi-perform.patch b/0001-fix-double-free-when-multi-perform.patch
deleted file mode 100644
index ad0d61b..0000000
--- a/0001-fix-double-free-when-multi-perform.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 8df95297b910daa93627eb3edb89f863e6867b93 Mon Sep 17 00:00:00 2001
-From: wangjia
-Date: Sat, 30 Mar 2019 01:14:21 -0400
-Subject: [PATCH] fix double free when multi perform
-
----
- lib/multi.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/multi.c b/lib/multi.c
-index 49b8b19..228a3da 100644
---- a/lib/multi.c
-+++ b/lib/multi.c
-@@ -2034,7 +2034,6 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
- else if(comeback)
- rc = CURLM_CALL_MULTI_PERFORM;
-
-- free(newurl);
- break;
- }
-
---
-2.19.1
-
diff --git a/0101-curl-7.32.0-multilib.patch b/0101-curl-7.32.0-multilib.patch
index 532980e..613106d 100644
--- a/0101-curl-7.32.0-multilib.patch
+++ b/0101-curl-7.32.0-multilib.patch
@@ -22,7 +22,7 @@ index 150004d..95d0759 100644
;;
--prefix)
-@@ -143,32 +143,17 @@ while test $# -gt 0; do
+@@ -155,32 +155,17 @@ while test $# -gt 0; do
;;
--libs)
diff --git a/0102-curl-7.36.0-debug.patch b/0102-curl-7.36.0-debug.patch
index bbb253f..affe9f0 100644
--- a/0102-curl-7.36.0-debug.patch
+++ b/0102-curl-7.36.0-debug.patch
@@ -12,7 +12,7 @@ diff --git a/configure b/configure
index 8f079a3..53b4774 100755
--- a/configure
+++ b/configure
-@@ -16414,18 +16414,11 @@ $as_echo "yes" >&6; }
+@@ -16301,18 +16301,11 @@ $as_echo "yes" >&6; }
gccvhi=`echo $gccver | cut -d . -f1`
gccvlo=`echo $gccver | cut -d . -f2`
compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null`
@@ -38,7 +38,7 @@ diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4
index 0cbba7a..9175b5b 100644
--- a/m4/curl-compilers.m4
+++ b/m4/curl-compilers.m4
-@@ -157,18 +157,11 @@ AC_DEFUN([CURL_CHECK_COMPILER_GNU_C], [
+@@ -166,18 +166,11 @@ AC_DEFUN([CURL_CHECK_COMPILER_GNU_C], [
gccvhi=`echo $gccver | cut -d . -f1`
gccvlo=`echo $gccver | cut -d . -f2`
compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null`
diff --git a/0103-curl-7.59.0-python3.patch b/0103-curl-7.59.0-python3.patch
index f66b6c0..56485fe 100644
--- a/0103-curl-7.59.0-python3.patch
+++ b/0103-curl-7.59.0-python3.patch
@@ -1,88 +1,23 @@
-From bdba7b54224814055185513de1e7ff6619031553 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka
-Date: Thu, 15 Mar 2018 13:21:40 +0100
-Subject: [PATCH 1/2] tests/http_pipe.py: migrate to Python 3
-
----
- tests/http_pipe.py | 4 ++--
- tests/runtests.pl | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/tests/http_pipe.py b/tests/http_pipe.py
-index bc32173..75ac165 100755
---- a/tests/http_pipe.py
-+++ b/tests/http_pipe.py
-@@ -383,13 +383,13 @@ class PipelineRequestHandler(socketserver.BaseRequestHandler):
- self.request.setblocking(True)
- if not new_data:
- return
-- new_requests = self._request_parser.ParseAdditionalData(new_data)
-+ new_requests = self._request_parser.ParseAdditionalData(new_data.decode('utf8'))
- self._response_builder.QueueRequests(
- new_requests, self._request_parser.were_all_requests_http_1_1)
- self._num_queued += len(new_requests)
- self._last_queued_time = time.time()
- elif fileno in wlist:
-- num_bytes_sent = self.request.send(self._send_buffer[0:4096])
-+ num_bytes_sent = self.request.send(self._send_buffer[0:4096].encode('utf8'))
- self._send_buffer = self._send_buffer[num_bytes_sent:]
- time.sleep(0.05)
-
-diff --git a/tests/runtests.pl b/tests/runtests.pl
-index d6aa5ca..4d395ef 100755
---- a/tests/runtests.pl
-+++ b/tests/runtests.pl
-@@ -1439,7 +1439,7 @@ sub runhttpserver {
- elsif($alt eq "pipe") {
- # basically the same, but another ID
- $idnum = 3;
-- $exe = "python $srcdir/http_pipe.py";
-+ $exe = "python3 $srcdir/http_pipe.py";
- $verbose_flag .= "1 ";
- }
- elsif($alt eq "unix") {
---
-2.14.3
-
-
From 3c4c7340e455b7256c0786759422f34ec3e2d440 Mon Sep 17 00:00:00 2001
From: Kamil Dudka
Date: Thu, 15 Mar 2018 14:49:56 +0100
-Subject: [PATCH 2/2] tests/{negtelnet,smb}server.py: migrate to Python 3
+Subject: [PATCH] tests/{negtelnet,smb}server.py: migrate to Python 3
Unfortunately, smbserver.py does not work with Python 3 because
there is no 'impacket' module available for Python 3:
https://github.com/CoreSecurity/impacket/issues/61
---
- tests/negtelnetserver.py | 12 ++++++------
- tests/smbserver.py | 4 ++--
- 2 files changed, 8 insertions(+), 8 deletions(-)
+ tests/negtelnetserver.py | 4 ++--
+ tests/smbserver.py | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/tests/negtelnetserver.py b/tests/negtelnetserver.py
index 8cfd409..72ee771 100755
--- a/tests/negtelnetserver.py
+++ b/tests/negtelnetserver.py
-@@ -23,7 +23,7 @@ IDENT = "NTEL"
-
- # The strings that indicate the test framework is checking our aliveness
- VERIFIED_REQ = b"verifiedserver"
--VERIFIED_RSP = b"WE ROOLZ: {pid}"
-+VERIFIED_RSP = "WE ROOLZ: {pid}"
-
-
- def telnetserver(options):
-@@ -34,7 +34,7 @@ def telnetserver(options):
- if options.pidfile:
- pid = os.getpid()
- with open(options.pidfile, "w") as f:
-- f.write(b"{0}".format(pid))
-+ f.write("{0}".format(pid))
-
- local_bind = (HOST, options.port)
- log.info("Listening on %s", local_bind)
@@ -73,11 +73,11 @@ class NegotiatingTelnetHandler(socketserver.BaseRequestHandler):
- response_data = VERIFIED_RSP.format(pid=os.getpid())
+ response_data = response.encode('ascii')
else:
log.debug("Received normal request - echoing back")
- response_data = data.strip()
@@ -95,24 +30,6 @@ index 8cfd409..72ee771 100755
except IOError:
log.exception("IOError hit during request")
-@@ -132,7 +132,7 @@ class Negotiator(object):
- return buffer
-
- def byte_to_int(self, byte):
-- return struct.unpack(b'B', byte)[0]
-+ return int(byte)
-
- def no_neg(self, byte, byte_int, buffer):
- # Not negotiating anything thus far. Check to see if we
-@@ -197,7 +197,7 @@ class Negotiator(object):
- self.tcp.sendall(packed_message)
-
- def pack(self, arr):
-- return struct.pack(b'{0}B'.format(len(arr)), *arr)
-+ return struct.pack('{0}B'.format(len(arr)), *arr)
-
- def send_iac(self, arr):
- message = [NegTokens.IAC]
diff --git a/tests/smbserver.py b/tests/smbserver.py
index 195ae39..b09cd44 100755
--- a/tests/smbserver.py
diff --git a/0104-curl-7.19.7-localhost6.patch b/0104-curl-7.19.7-localhost6.patch
index 4f664d3..caa8bc2 100644
--- a/0104-curl-7.19.7-localhost6.patch
+++ b/0104-curl-7.19.7-localhost6.patch
@@ -14,8 +14,8 @@ index e441278..b0958b6 100644
+-g "http://%HOST6IP:%HTTP6PORT/1083" --interface localhost6
--perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test server host address';} else {exec './server/resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
-+perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test server host address';} else {exec './server/resolve --ipv6 localhost6'; print 'Cannot run precheck resolve';}"
+-perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test client host address';} else {exec './server/resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
++perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test client host address';} else {exec './server/resolve --ipv6 localhost6'; print 'Cannot run precheck resolve';}"
diff --git a/0105-curl-7.63.0-lib1560-valgrind.patch b/0105-curl-7.63.0-lib1560-valgrind.patch
new file mode 100644
index 0000000..6d05c67
--- /dev/null
+++ b/0105-curl-7.63.0-lib1560-valgrind.patch
@@ -0,0 +1,39 @@
+From f55cca0e86f59ec11ffafd5c0503c39ca3723e2e Mon Sep 17 00:00:00 2001
+From: Kamil Dudka
+Date: Mon, 4 Feb 2019 17:32:56 +0100
+Subject: [PATCH] libtest: compile lib1560.c with -fno-builtin-strcmp
+
+... to prevent valgrind from reporting false positives on x86_64:
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x10BCAA: part2id (lib1560.c:489)
+ by 0x10BCAA: updateurl (lib1560.c:521)
+ by 0x10BCAA: set_parts (lib1560.c:630)
+ by 0x10BCAA: test (lib1560.c:802)
+ by 0x4923412: (below main) (in /usr/lib64/libc-2.28.9000.so)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x10BCC3: part2id (lib1560.c:491)
+ by 0x10BCC3: updateurl (lib1560.c:521)
+ by 0x10BCC3: set_parts (lib1560.c:630)
+ by 0x10BCC3: test (lib1560.c:802)
+ by 0x4923412: (below main) (in /usr/lib64/libc-2.28.9000.so)
+---
+ tests/libtest/Makefile.inc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
+index 080421b..ea3b806 100644
+--- a/tests/libtest/Makefile.inc
++++ b/tests/libtest/Makefile.inc
+@@ -531,6 +531,7 @@ lib1559_SOURCES = lib1559.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+ lib1559_LDADD = $(TESTUTIL_LIBS)
+
+ lib1560_SOURCES = lib1560.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
++lib1560_CFLAGS = $(AM_CFLAGS) -fno-builtin-strcmp
+ lib1560_LDADD = $(TESTUTIL_LIBS)
+
+ lib1591_SOURCES = lib1591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+--
+2.17.2
+
diff --git a/CVE-2018-16839-Curl_auth_create_plain_message-fix-too-large-input-c.patch b/CVE-2018-16839-Curl_auth_create_plain_message-fix-too-large-input-c.patch
deleted file mode 100644
index bdecdc7..0000000
--- a/CVE-2018-16839-Curl_auth_create_plain_message-fix-too-large-input-c.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From f3a24d7916b9173c69a3e0ee790102993833d6c5 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Fri, 28 Sep 2018 16:08:16 +0200
-Subject: [PATCH 225/557] Curl_auth_create_plain_message: fix
- too-large-input-check
-
-CVE-2018-16839
-Reported-by: Harry Sintonen
-Bug: https://curl.haxx.se/docs/CVE-2018-16839.html
----
- lib/vauth/cleartext.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/vauth/cleartext.c b/lib/vauth/cleartext.c
-index a10edbd..be6d611 100644
---- a/lib/vauth/cleartext.c
-+++ b/lib/vauth/cleartext.c
-@@ -74,7 +74,7 @@ CURLcode Curl_auth_create_plain_message(struct Curl_easy *data,
- plen = strlen(passwdp);
-
- /* Compute binary message length. Check for overflows. */
-- if((ulen > SIZE_T_MAX/2) || (plen > (SIZE_T_MAX/2 - 2)))
-+ if((ulen > SIZE_T_MAX/4) || (plen > (SIZE_T_MAX/2 - 2)))
- return CURLE_OUT_OF_MEMORY;
- plainlen = 2 * ulen + plen + 2;
-
---
-1.8.3.1
-
diff --git a/CVE-2018-16840-Curl_close-clear-data-multi_easy-on-free-to-avoid-us.patch b/CVE-2018-16840-Curl_close-clear-data-multi_easy-on-free-to-avoid-us.patch
deleted file mode 100644
index 64ef0f3..0000000
--- a/CVE-2018-16840-Curl_close-clear-data-multi_easy-on-free-to-avoid-us.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 81d135d67155c5295b1033679c606165d4e28f3f Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Thu, 18 Oct 2018 15:07:15 +0200
-Subject: [PATCH 224/557] Curl_close: clear data->multi_easy on free to avoid
- use-after-free
-
-Regression from b46cfbc068 (7.59.0)
-CVE-2018-16840
-Reported-by: Brian Carpenter (Geeknik Labs)
-
-Bug: https://curl.haxx.se/docs/CVE-2018-16840.html
----
- lib/url.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/lib/url.c b/lib/url.c
-index 723b898..0d5a13f 100644
---- a/lib/url.c
-+++ b/lib/url.c
-@@ -319,10 +319,12 @@ CURLcode Curl_close(struct Curl_easy *data)
- and detach this handle from there. */
- curl_multi_remove_handle(data->multi, data);
-
-- if(data->multi_easy)
-+ if(data->multi_easy) {
- /* when curl_easy_perform() is used, it creates its own multi handle to
- use and this is the one */
- curl_multi_cleanup(data->multi_easy);
-+ data->multi_easy = NULL;
-+ }
-
- /* Destroy the timeout list that is held in the easy handle. It is
- /normally/ done by curl_multi_remove_handle() but this is "just in
---
-1.8.3.1
-
diff --git a/CVE-2018-16842-voutf-fix-bad-arethmetic-when-outputting-warnings-to.patch b/CVE-2018-16842-voutf-fix-bad-arethmetic-when-outputting-warnings-to.patch
deleted file mode 100644
index b40e660..0000000
--- a/CVE-2018-16842-voutf-fix-bad-arethmetic-when-outputting-warnings-to.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From d530e92f59ae9bb2d47066c3c460b25d2ffeb211 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Sun, 28 Oct 2018 01:33:23 +0200
-Subject: [PATCH 232/557] voutf: fix bad arethmetic when outputting warnings to
- stderr
-
-CVE-2018-16842
-Reported-by: Brian Carpenter
-Bug: https://curl.haxx.se/docs/CVE-2018-16842.html
----
- src/tool_msgs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/tool_msgs.c b/src/tool_msgs.c
-index 832ed81..f5e1df2 100644
---- a/src/tool_msgs.c
-+++ b/src/tool_msgs.c
-@@ -67,7 +67,7 @@ static void voutf(struct GlobalConfig *config,
- (void)fwrite(ptr, cut + 1, 1, config->errors);
- fputs("\n", config->errors);
- ptr += cut + 1; /* skip the space too */
-- len -= cut;
-+ len -= cut + 1;
- }
- else {
- fputs(ptr, config->errors);
---
-1.8.3.1
-
diff --git a/CVE-2018-16890-NTLM-fix-size-check-condition-for-type2-received-dat.patch b/CVE-2018-16890-NTLM-fix-size-check-condition-for-type2-received-dat.patch
deleted file mode 100644
index a769dca..0000000
--- a/CVE-2018-16890-NTLM-fix-size-check-condition-for-type2-received-dat.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From b780b30d1377adb10bbe774835f49e9b237fb9bb Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Wed, 2 Jan 2019 20:33:08 +0100
-Subject: [PATCH 478/557] NTLM: fix size check condition for type2 received
- data
-
-Bug: https://curl.haxx.se/docs/CVE-2018-16890.html
-Reported-by: Wenxiang Qian
-CVE-2018-16890
----
- lib/vauth/ntlm.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/lib/vauth/ntlm.c b/lib/vauth/ntlm.c
-index c3d55ed..0ad4d97 100644
---- a/lib/vauth/ntlm.c
-+++ b/lib/vauth/ntlm.c
-@@ -182,10 +182,11 @@ static CURLcode ntlm_decode_type2_target(struct Curl_easy *data,
- target_info_len = Curl_read16_le(&buffer[40]);
- target_info_offset = Curl_read32_le(&buffer[44]);
- if(target_info_len > 0) {
-- if(((target_info_offset + target_info_len) > size) ||
-+ if((target_info_offset >= size) ||
-+ ((target_info_offset + target_info_len) > size) ||
- (target_info_offset < 48)) {
- infof(data, "NTLM handshake failure (bad type-2 message). "
-- "Target Info Offset Len is set incorrect by the peer\n");
-+ "Target Info Offset Len is set incorrect by the peer\n");
- return CURLE_BAD_CONTENT_ENCODING;
- }
-
---
-1.8.3.1
-
diff --git a/CVE-2019-3822-ntlm-fix-_type3_message-size-check-to-avoid-buffer-o.patch b/CVE-2019-3822-ntlm-fix-_type3_message-size-check-to-avoid-buffer-o.patch
deleted file mode 100644
index 9f411ae..0000000
--- a/CVE-2019-3822-ntlm-fix-_type3_message-size-check-to-avoid-buffer-o.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 50c9484278c63b958655a717844f0721263939cc Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Thu, 3 Jan 2019 12:59:28 +0100
-Subject: [PATCH 479/557] ntlm: fix *_type3_message size check to avoid buffer
- overflow
-
-Bug: https://curl.haxx.se/docs/CVE-2019-3822.html
-Reported-by: Wenxiang Qian
-CVE-2019-3822
----
- lib/vauth/ntlm.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/lib/vauth/ntlm.c b/lib/vauth/ntlm.c
-index 0ad4d97..6a8fc5a 100644
---- a/lib/vauth/ntlm.c
-+++ b/lib/vauth/ntlm.c
-@@ -779,11 +779,14 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
- });
-
- #ifdef USE_NTRESPONSES
-- if(size < (NTLM_BUFSIZE - ntresplen)) {
-- DEBUGASSERT(size == (size_t)ntrespoff);
-- memcpy(&ntlmbuf[size], ptr_ntresp, ntresplen);
-- size += ntresplen;
-+ /* ntresplen + size should not be risking an integer overflow here */
-+ if(ntresplen + size > sizeof(ntlmbuf)) {
-+ failf(data, "incoming NTLM message too big");
-+ return CURLE_OUT_OF_MEMORY;
- }
-+ DEBUGASSERT(size == (size_t)ntrespoff);
-+ memcpy(&ntlmbuf[size], ptr_ntresp, ntresplen);
-+ size += ntresplen;
-
- DEBUG_OUT({
- fprintf(stderr, "\n ntresp=");
---
-1.8.3.1
-
diff --git a/CVE-2019-3823-smtp-avoid-risk-of-buffer-overflow-in-strtol.patch b/CVE-2019-3823-smtp-avoid-risk-of-buffer-overflow-in-strtol.patch
deleted file mode 100644
index f79544a..0000000
--- a/CVE-2019-3823-smtp-avoid-risk-of-buffer-overflow-in-strtol.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 39df4073e5413fcdbb5a38da0c1ce6f1c0ceb484 Mon Sep 17 00:00:00 2001
-From: Daniel Gustafsson
-Date: Sat, 19 Jan 2019 00:42:47 +0100
-Subject: [PATCH 480/557] smtp: avoid risk of buffer overflow in strtol
-
-If the incoming len 5, but the buffer does not have a termination
-after 5 bytes, the strtol() call may keep reading through the line
-buffer until is exceeds its boundary. Fix by ensuring that we are
-using a bounded read with a temporary buffer on the stack.
-
-Bug: https://curl.haxx.se/docs/CVE-2019-3823.html
-Reported-by: Brian Carpenter (Geeknik Labs)
-CVE-2019-3823
----
- lib/smtp.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/lib/smtp.c b/lib/smtp.c
-index 84fc68e..d55647b 100644
---- a/lib/smtp.c
-+++ b/lib/smtp.c
-@@ -5,7 +5,7 @@
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
-- * Copyright (C) 1998 - 2018, Daniel Stenberg, , et al.
-+ * Copyright (C) 1998 - 2019, Daniel Stenberg, , et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
-@@ -207,8 +207,12 @@ static bool smtp_endofresp(struct connectdata *conn, char *line, size_t len,
- Section 4. Examples of RFC-4954 but some e-mail servers ignore this and
- only send the response code instead as per Section 4.2. */
- if(line[3] == ' ' || len == 5) {
-+ char tmpline[6];
-+
- result = TRUE;
-- *resp = curlx_sltosi(strtol(line, NULL, 10));
-+ memset(tmpline, '\0', sizeof(tmpline));
-+ memcpy(tmpline, line, (len == 5 ? 5 : 3));
-+ *resp = curlx_sltosi(strtol(tmpline, NULL, 10));
-
- /* Make sure real server never sends internal value */
- if(*resp == 1)
---
-1.8.3.1
-
diff --git a/CVE-2019-5436.patch b/CVE-2019-5436.patch
deleted file mode 100644
index 9fdeb30..0000000
--- a/CVE-2019-5436.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 5c89b6583079cd4cccbdf59929fa14515397430a Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Fri, 3 May 2019 22:20:37 +0200
-Subject: [PATCH] tftp: use the current blksize for recvfrom()
-
-bug: CVE-2019-XXXXX
-Reported-by: l00p3r
----
- lib/tftp.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: curl-7.64.0/lib/tftp.c
-===================================================================
---- curl-7.64.0.orig/lib/tftp.c 2019-05-16 08:35:01.353786616 -0400
-+++ curl-7.64.0/lib/tftp.c 2019-05-16 08:35:01.353786616 -0400
-@@ -1005,7 +1005,7 @@ static CURLcode tftp_connect(struct conn
- state->sockfd = state->conn->sock[FIRSTSOCKET];
- state->state = TFTP_STATE_START;
- state->error = TFTP_ERR_NONE;
-- state->blksize = TFTP_BLKSIZE_DEFAULT;
-+ state->blksize = blksize;
- state->requested_blksize = blksize;
-
- ((struct sockaddr *)&state->local_addr)->sa_family =
-
diff --git a/CVE-2019-5481.patch b/CVE-2019-5481.patch
deleted file mode 100644
index 2aa4952..0000000
--- a/CVE-2019-5481.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 9069838b30fb3b48af0123e39f664cea683254a5 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Tue, 3 Sep 2019 22:59:32 +0200
-Subject: [PATCH] security:read_data fix bad realloc()
-
-... that could end up a double-free
-
-CVE-2019-5481
-Bug: https://curl.haxx.se/docs/CVE-2019-5481.html
----
- lib/security.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/lib/security.c b/lib/security.c
-index 550ea2da8d..c5e4e135df 100644
---- a/lib/security.c
-+++ b/lib/security.c
-@@ -191,7 +191,6 @@ static CURLcode read_data(struct connectdata *conn,
- struct krb5buffer *buf)
- {
- int len;
-- void *tmp = NULL;
- CURLcode result;
-
- result = socket_read(fd, &len, sizeof(len));
-@@ -201,12 +200,11 @@ static CURLcode read_data(struct connectdata *conn,
- if(len) {
- /* only realloc if there was a length */
- len = ntohl(len);
-- tmp = Curl_saferealloc(buf->data, len);
-+ buf->data = Curl_saferealloc(buf->data, len);
- }
-- if(tmp == NULL)
-+ if(!len || !buf->data)
- return CURLE_OUT_OF_MEMORY;
-
-- buf->data = tmp;
- result = socket_read(fd, buf->data, len);
- if(result)
- return result;
diff --git a/CVE-2019-5482.patch b/CVE-2019-5482.patch
deleted file mode 100644
index fc9dc73..0000000
--- a/CVE-2019-5482.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From facb0e4662415b5f28163e853dc6742ac5fafb3d Mon Sep 17 00:00:00 2001
-From: Thomas Vegas <>
-Date: Sat, 31 Aug 2019 17:30:51 +0200
-Subject: [PATCH] tftp: Alloc maximum blksize, and use default unless OACK is
- received
-
-Fixes potential buffer overflow from 'recvfrom()', should the server
-return an OACK without blksize.
-
-Bug: https://curl.haxx.se/docs/CVE-2019-5482.html
-CVE-2019-5482
----
- lib/tftp.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/lib/tftp.c b/lib/tftp.c
-index a7176cec80..346f293dc5 100644
---- a/lib/tftp.c
-+++ b/lib/tftp.c
-@@ -985,6 +985,7 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
- {
- tftp_state_data_t *state;
- int blksize;
-+ int need_blksize;
-
- blksize = TFTP_BLKSIZE_DEFAULT;
-
-@@ -999,15 +1000,20 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
- return CURLE_TFTP_ILLEGAL;
- }
-
-+ need_blksize = blksize;
-+ /* default size is the fallback when no OACK is received */
-+ if(need_blksize < TFTP_BLKSIZE_DEFAULT)
-+ need_blksize = TFTP_BLKSIZE_DEFAULT;
-+
- if(!state->rpacket.data) {
-- state->rpacket.data = calloc(1, blksize + 2 + 2);
-+ state->rpacket.data = calloc(1, need_blksize + 2 + 2);
-
- if(!state->rpacket.data)
- return CURLE_OUT_OF_MEMORY;
- }
-
- if(!state->spacket.data) {
-- state->spacket.data = calloc(1, blksize + 2 + 2);
-+ state->spacket.data = calloc(1, need_blksize + 2 + 2);
-
- if(!state->spacket.data)
- return CURLE_OUT_OF_MEMORY;
-@@ -1021,7 +1027,7 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
- state->sockfd = state->conn->sock[FIRSTSOCKET];
- state->state = TFTP_STATE_START;
- state->error = TFTP_ERR_NONE;
-- state->blksize = blksize;
-+ state->blksize = TFTP_BLKSIZE_DEFAULT; /* Unless updated by OACK response */
- state->requested_blksize = blksize;
-
- ((struct sockaddr *)&state->local_addr)->sa_family =
diff --git a/Curl_dedotdotify-always-nul-terminate-returned-strin.patch b/Curl_dedotdotify-always-nul-terminate-returned-strin.patch
deleted file mode 100644
index 983d786..0000000
--- a/Curl_dedotdotify-always-nul-terminate-returned-strin.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From c558db3c39db1817f78ac1bd81ec03a99447d423 Mon Sep 17 00:00:00 2001
-From: kangenbo
-Date: Mon, 18 Mar 2019 12:47:43 -0400
-Subject: [PATCH] 0095
-
----
- lib/dotdot.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/lib/dotdot.c b/lib/dotdot.c
-index cbb308d..2c6177a 100644
---- a/lib/dotdot.c
-+++ b/lib/dotdot.c
-@@ -62,6 +62,8 @@ char *Curl_dedotdotify(const char *input)
- if(!out)
- return NULL; /* out of memory */
-
-+ *out = 0; /* zero terminates, for inputs like "./" */
-+
- /* get a cloned copy of the input */
- clone = strdup(input);
- if(!clone) {
---
-1.8.3.1
-
diff --git a/Curl_http2_done-fix-memleak-in-error-path.patch b/Curl_http2_done-fix-memleak-in-error-path.patch
deleted file mode 100644
index 4783beb..0000000
--- a/Curl_http2_done-fix-memleak-in-error-path.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From d26605818339acb190572a5c4291945160063ff0 Mon Sep 17 00:00:00 2001
-From: kangenbo
-Date: Mon, 18 Mar 2019 13:41:26 -0400
-Subject: [PATCH] 0101
-
----
- lib/http2.c | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/lib/http2.c b/lib/http2.c
-index dfc780e..eb395f9 100644
---- a/lib/http2.c
-+++ b/lib/http2.c
-@@ -1085,12 +1085,8 @@ void Curl_http2_done(struct connectdata *conn, bool premature)
- struct HTTP *http = data->req.protop;
- struct http_conn *httpc = &conn->proto.httpc;
-
-- if(!httpc->h2) /* not HTTP/2 ? */
-- return;
--
-- if(data->state.drain)
-- drained_transfer(data, httpc);
--
-+ /* there might be allocated resources done before this got the 'h2' pointer
-+ setup */
- if(http->header_recvbuf) {
- Curl_add_buffer_free(http->header_recvbuf);
- http->header_recvbuf = NULL; /* clear the pointer */
-@@ -1106,6 +1102,12 @@ void Curl_http2_done(struct connectdata *conn, bool premature)
- }
- }
-
-+ if(!httpc->h2) /* not HTTP/2 ? */
-+ return;
-+
-+ if(data->state.drain)
-+ drained_transfer(data, httpc);
-+
- if(premature) {
- /* RST_STREAM */
- if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE,
---
-1.8.3.1
-
diff --git a/Curl_retry_request-fix-memory-leak.patch b/Curl_retry_request-fix-memory-leak.patch
deleted file mode 100644
index 1111b60..0000000
--- a/Curl_retry_request-fix-memory-leak.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ef695fc30144c8b92700c0161cdafd141c70ae60 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg
-Date: Mon, 24 Sep 2018 14:05:24 +0200
-Subject: [PATCH 098/557] Curl_retry_request: fix memory leak
-
-Detected by OSS-Fuzz
-
-Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10648
-Closes #3042
----
- lib/transfer.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/lib/transfer.c b/lib/transfer.c
-index 6a80bf3..efd9292 100644
---- a/lib/transfer.c
-+++ b/lib/transfer.c
-@@ -1705,8 +1705,13 @@ CURLcode Curl_retry_request(struct connectdata *conn,
-
- if(conn->handler->protocol&PROTO_FAMILY_HTTP) {
- struct HTTP *http = data->req.protop;
-- if(http->writebytecount)
-- return Curl_readrewind(conn);
-+ if(http->writebytecount) {
-+ CURLcode result = Curl_readrewind(conn);
-+ if(result) {
-+ Curl_safefree(*url);
-+ return result;
-+ }
-+ }
- }
- }
- return CURLE_OK;
---
-1.8.3.1
-
diff --git a/Curl_saferealloc-Fixed-typo-in-docblock.patch b/Curl_saferealloc-Fixed-typo-in-docblock.patch
deleted file mode 100644
index 4857fed..0000000
--- a/Curl_saferealloc-Fixed-typo-in-docblock.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 39c9140cceaffd98c683e1f426cc451909703554 Mon Sep 17 00:00:00 2001
-From: Erik Minekus
-Date: Fri, 21 Sep 2018 14:20:18 +0200
-Subject: [PATCH 081/557] Curl_saferealloc: Fixed typo in docblock
-
-Closes #3029
----
- lib/strdup.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/strdup.c b/lib/strdup.c
-index 19cb044..51e7978 100644
---- a/lib/strdup.c
-+++ b/lib/strdup.c
-@@ -81,7 +81,7 @@ void *Curl_memdup(const void *src, size_t length)
- * Curl_saferealloc(ptr, size)
- *
- * Does a normal realloc(), but will free the data pointer if the realloc
-- * fails. If 'size' is zero, it will free the data and return a failure.
-+ * fails. If 'size' is non-zero, it will free the data and return a failure.
- *
- * This convenience function is provided and used to help us avoid a common
- * mistake pattern when we could pass in a zero, catch the NULL return and end
---
-1.8.3.1
-
diff --git a/OS400-handle-memory-error-in-list-conversion.patch b/OS400-handle-memory-error-in-list-conversion.patch
deleted file mode 100644
index b1e032a..0000000
--- a/OS400-handle-memory-error-in-list-conversion.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From a58b27740fd78fee88b35104fa71b7019280ccff Mon Sep 17 00:00:00 2001
-From: Daniel Gustafsson
-Date: Thu, 13 Dec 2018 10:15:00 +0100
-Subject: [PATCH 363/557] OS400: handle memory error in list conversion
-
-Curl_slist_append_nodup() returns NULL when it fails to create a new
-item for the specified list, and since the coding here reassigned the
-new list on top of the old list it would result in a dangling pointer
-and lost memory. Also, in case we hit an allocation failure at some
-point during the conversion, with allocation succeeding again on the
-subsequent call(s) we will return a truncated list around the malloc
-failure point. Fix by assigning to a temporary list pointer, which can
-be checked (which is the common pattern for slist appending), and free
-all the resources on allocation failure.
-
-Closes #3372
-Reviewed-by: Daniel Stenberg
----
- packages/OS400/ccsidcurl.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c
-index b1d3ba8..ca711d0 100644
---- a/packages/OS400/ccsidcurl.c
-+++ b/packages/OS400/ccsidcurl.c
-@@ -219,13 +219,20 @@ slist_convert(int dccsid, struct curl_slist * from, int sccsid)
- struct curl_slist * to = (struct curl_slist *) NULL;
-
- for(; from; from = from->next) {
-+ struct curl_slist *nl;
- char * cp = dynconvert(dccsid, from->data, -1, sccsid);
-
- if(!cp) {
- curl_slist_free_all(to);
- return (struct curl_slist *) NULL;
- }
-- to = Curl_slist_append_nodup(to, cp);
-+ nl = Curl_slist_append_nodup(to, cp);
-+ if(!nl) {
-+ curl_slist_free_all(to);
-+ free(cp);
-+ return NULL;
-+ }
-+ to = nl;
- }
- return to;
- }
---
-1.8.3.1
-
diff --git a/configure-include-all-libraries-in-ssl-libs-fetch.patch b/configure-include-all-libraries-in-ssl-libs-fetch.patch
deleted file mode 100644
index f44f9ff..0000000
--- a/configure-include-all-libraries-in-ssl-libs-fetch.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 0fac7a10fd08281f659df82a9d1c779bf61d7401 Mon Sep 17 00:00:00 2001
-From: James Knight
-Date: Tue, 30 Oct 2018 03:17:44 -0400
-Subject: [PATCH 318/557] configure: include all libraries in ssl-libs fetch
-
-When compiling a collection of SSL libraries to link against (SSL_LIBS),
-ensure all libraries are included. The call `--libs-only-l` can produce
-only a subset of found in a `--libs` call (e.x. pthread may be excluded).
-Adding `--libs-only-other` ensures other libraries are also included in
-the list. This corrects select build environments compiling against a
-static version of OpenSSL. Before the change, the following could be
-observed:
-
- checking for openssl options with pkg-config... found
- configure: pkg-config: SSL_LIBS: "-lssl -lz -ldl -lcrypto -lz -ldl "
- configure: pkg-config: SSL_LDFLAGS: "-L/home/jdknight//staging/usr/lib -L/home/jdknight//staging/usr/lib "
- configure: pkg-config: SSL_CPPFLAGS: "-I/home/jdknight//staging/usr/include "
- checking for HMAC_Update in -lcrypto... no
- checking for HMAC_Init_ex in -lcrypto... no
- checking OpenSSL linking with -ldl... no
- checking OpenSSL linking with -ldl and -lpthread... no
- configure: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.
- configure: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.
- ...
- SSL support: no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )
- ...
-
-And include the other libraries when compiling SSL_LIBS succeeds with:
-
- checking for openssl options with pkg-config... found
- configure: pkg-config: SSL_LIBS: "-lssl -lz -ldl -pthread -lcrypto -lz -ldl -pthread "
- configure: pkg-config: SSL_LDFLAGS: "-L/home/jdknight//staging/usr/lib -L/home/jdknight//staging/usr/lib "
- configure: pkg-config: SSL_CPPFLAGS: "-I/home/jdknight//staging/usr/include "
- checking for HMAC_Update in -lcrypto... yes
- checking for SSL_connect in -lssl... yes
- ...
- SSL support: enabled (OpenSSL)
- ...
-
-Signed-off-by: James Knight
-Closes #3193
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 80f8ae1..b0bd9a3 100755
---- a/configure.ac
-+++ b/configure.ac
-@@ -1623,7 +1623,7 @@ if test -z "$ssl_backends" -o "x$OPT_SSL" != xno &&
-
- if test "$PKGCONFIG" != "no" ; then
- SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
-- $PKGCONFIG --libs-only-l openssl 2>/dev/null`
-+ $PKGCONFIG --libs-only-l --libs-only-other openssl 2>/dev/null`
-
- SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
- $PKGCONFIG --libs-only-L openssl 2>/dev/null`
---
-1.8.3.1
-
diff --git a/curl-7.61.1.tar.xz b/curl-7.61.1.tar.xz
deleted file mode 100644
index 11fe1c1748a3456136986d99235837e0cbb1584a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2360392
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