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 a9cbaac0465b35f46df6ae3220ab4476bbb4589e..0000000000000000000000000000000000000000 --- 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 - -- -- --

This is GnuTLS

-- -- -- --
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
CompressionNULL
CipherAES-NNN-CBC
MACSHA1
CiphersuiteSRP_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 0000000000000000000000000000000000000000..16c8ae2b04fd2791b036d3dec54306c7ba32bb5f --- /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 ad0d61b94d491da2d3377d7aa464f9187f42fac7..0000000000000000000000000000000000000000 --- 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 532980eb568d8652351a071d8ffdd4f721268d97..613106dab3313d021dfea2b9cf6bcc989f9e0f3b 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 bbb253faae7f985224c9c12cd8ae60b054ddfba1..affe9f069ce63fd7472c4eebd4fe3a1e11fa02f9 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 f66b6c0a9485f72b3d5c91b158b55485ee76a453..56485fed9ba23f24aa198faa2899cbd556b616e1 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 4f664d3dcf543fca09002406844f2598b2dd34d2..caa8bc2f488bd9a157a2e21eafa3f0f5621d204b 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 0000000000000000000000000000000000000000..6d05c672310543288e8f91a2e8fd1ac3d3d32ebb --- /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 bdecdc719dd3c2f7665411ae9572aea62517deea..0000000000000000000000000000000000000000 --- 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 64ef0f39b31bf107a584a75e96f9f587ef2382a8..0000000000000000000000000000000000000000 --- 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 b40e660a085f4c6251c41ca6b4c4734dc175df54..0000000000000000000000000000000000000000 --- 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 a769dca23edf126cc7765b0523e2b22efe554d64..0000000000000000000000000000000000000000 --- 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 9f411aeefd1e98d5f3f0a66739b13debaa94c789..0000000000000000000000000000000000000000 --- 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 f79544a5eb8e75c0010405674f1e485bf410a2e4..0000000000000000000000000000000000000000 --- 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 9fdeb30bd4839bbf4bd06c01d44f7a7118bdde4d..0000000000000000000000000000000000000000 --- 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 2aa4952cee44ff443568a2c21e198c78becb8c14..0000000000000000000000000000000000000000 --- 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 fc9dc73f7d003e728330eb8732f685546fd5d06b..0000000000000000000000000000000000000000 --- 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 983d7865fef1db84bd03cbd3cd6afe9c1fdbb448..0000000000000000000000000000000000000000 --- 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 4783beb2231c087c78c631a0a176a123cf3080f9..0000000000000000000000000000000000000000 --- 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 1111b600f93c61b42ef10a840595393d3aa48572..0000000000000000000000000000000000000000 --- 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 4857fedd31c3774e83d20c04037726d723155441..0000000000000000000000000000000000000000 --- 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 b1e032a5320fd4f7ae20a63f2c55f9a4ad8a7418..0000000000000000000000000000000000000000 --- 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 f44f9ff9043a4fcabf7c379932e04136149c38ee..0000000000000000000000000000000000000000 --- 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 Binary files a/curl-7.61.1.tar.xz and /dev/null differ diff --git a/curl-7.66.0.tar.xz b/curl-7.66.0.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..264e6c5a683dd173fda670208a8c3148352fa08b Binary files /dev/null and b/curl-7.66.0.tar.xz differ diff --git a/curl-fix-memory-leak-reading-writeout-from-file.patch b/curl-fix-memory-leak-reading-writeout-from-file.patch deleted file mode 100644 index 0791282371b931a01bd53b33d809bb18d73f0f22..0000000000000000000000000000000000000000 --- a/curl-fix-memory-leak-reading-writeout-from-file.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 650281ed5ba335d16a932ccba53665551197880f Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 30 Nov 2018 11:59:04 +0100 -Subject: [PATCH 324/557] curl: fix memory leak reading --writeout from file - -If another string had been set first, the writout function for reading -the syntax from file would leak the previously allocated memory. - -Reported-by: Brian Carpenter -Fixes #3322 -Closes #3330 ---- - src/tool_getparam.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/tool_getparam.c b/src/tool_getparam.c -index cd21f77..c0d3a84 100644 ---- a/src/tool_getparam.c -+++ b/src/tool_getparam.c -@@ -2066,6 +2066,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ - fname = nextarg; - file = fopen(nextarg, FOPEN_READTEXT); - } -+ Curl_safefree(config->writeout); - err = file2string(&config->writeout, file); - if(file && (file != stdin)) - fclose(file); --- -1.8.3.1 - diff --git a/curl.spec b/curl.spec index 4c75ebd63a9aa26100e86f28fac0cbac13faedc7..6faad9eae1ea8b0b6d4c86f76a8a7615664973ff 100644 --- a/curl.spec +++ b/curl.spec @@ -4,109 +4,56 @@ %global openssl_version %(pkg-config --modversion openssl 2>/dev/null || echo 0) %global _configure ../configure -#Basic Information -Name: curl -Version: 7.61.1 -Release: 4 -Summary: curl is used in command lines or scripts to transfer data -License: MIT -URL: https://curl.haxx.se/ -Source: https://curl.haxx.se/download/curl-%{version}.tar.xz - -Patch1: 0001-curl-7.61.1-test320-gnutls.patch -Patch101: 0101-curl-7.32.0-multilib.patch -Patch102: 0102-curl-7.36.0-debug.patch -Patch103: 0103-curl-7.59.0-python3.patch -Patch104: 0104-curl-7.19.7-localhost6.patch - -Patch6000: fix-leak-when-writing-cookies-to-file.patch -Patch6001: fix-gcc8-warning.patch -Patch6002: fix-gcc8-warning-on-Windows.patch -Patch6003: fix-compiler-warning-on-64-bit-Windows.patch -Patch6004: urlglob-improve-error-message.patch -Patch6005: krb5-fix-memory-leak-in-krb_auth.patch -Patch6006: secure-Openwall-URLs.patch -Patch6007: http2-fix-memory-leaks-on-error-path.patch -Patch6008: memory-add-missing-curl_printf-header.patch -Patch6009: examples-Fix-memory-leaks-from-realloc-errors.patch -Patch6010: darwinssl-Fix-realloc-memleak.patch -Patch6011: nss-try-to-connect-even-if-libnssckbi.so-fails-to-lo.patch -Patch6012: Curl_saferealloc-Fixed-typo-in-docblock.patch -Patch6013: Curl_dedotdotify-always-nul-terminate-returned-strin.patch -Patch6014: Curl_retry_request-fix-memory-leak.patch -Patch6015: http-fix-memleak-in-rewind-error-path.patch -Patch6016: Curl_http2_done-fix-memleak-in-error-path.patch -Patch6017: multi-fix-location-URL-memleak-in-error-path.patch -Patch6018: multi-fix-memory-leak-in-content-encoding-related-er.patch -Patch6019: memory-ensure-to-check-allocation-results.patch -Patch6020: hostip-fix-check-on-Curl_shuffle_addr-return-value.patch -Patch6021: nonblock-fix-unused-parameter-warning.patch -Patch6022: tool_cb_hdr-handle-failure-of-rename.patch -Patch6023: multi-avoid-double-free.patch -Patch6024: netrc-free-temporary-strings-if-memory-allocation-fa.patch -Patch6025: ssh-free-the-session-on-init-failures.patch -Patch6026: multi-Fix-error-handling-in-the-SENDPROTOCONNECT-sta.patch -Patch6027: CVE-2018-16840-Curl_close-clear-data-multi_easy-on-free-to-avoid-us.patch -Patch6028: CVE-2018-16839-Curl_auth_create_plain_message-fix-too-large-input-c.patch -Patch6029: CVE-2018-16842-voutf-fix-bad-arethmetic-when-outputting-warnings-to.patch -Patch6030: curl_multibyte-fix-a-malloc-overcalculation.patch -Patch6031: curl_easy_perform-fix-timeout-handling.patch -Patch6032: configure-include-all-libraries-in-ssl-libs-fetch.patch -Patch6033: curl-fix-memory-leak-reading-writeout-from-file.patch -Patch6034: OS400-handle-memory-error-in-list-conversion.patch -Patch6035: smb-fix-incorrect-path-in-request-if-connection-reus.patch -Patch6036: wolfssl-Perform-cleanup.patch -Patch6037: libssh-free-sftp_canonicalize_path-data-correctly.patch -Patch6038: openvms-fix-OpenSSL-discovery-on-VAX.patch -Patch6039: timediff-fix-math-for-unsigned-time_t.patch -Patch6040: tool_cb_prg-avoid-integer-overflow.patch -Patch6041: openssl-fix-the-SSL_get_tlsext_status_ocsp_resp-call.patch -Patch6042: ssh-log-the-libssh2-error-message-when-ssh-session-s.patch -Patch6043: schannel-on-connection-close-there-might-not-be-a-tr.patch -Patch6044: CVE-2018-16890-NTLM-fix-size-check-condition-for-type2-received-dat.patch -Patch6045: CVE-2019-3822-ntlm-fix-_type3_message-size-check-to-avoid-buffer-o.patch -Patch6046: CVE-2019-3823-smtp-avoid-risk-of-buffer-overflow-in-strtol.patch -Patch6047: zsh.pl-escape-character.patch -Patch6048: examples-postinmemory-Potential-leak-of-memory-point.patch -Patch6049: mbedtls-release-sessionid-resources-on-error.patch -Patch6050: CVE-2019-5436.patch -Patch6051: CVE-2019-5481.patch -Patch6052: CVE-2019-5482.patch -Patch9000: 0001-fix-double-free-when-multi-perform.patch - -Provides: curl-full = %{version}-%{release} libcurl-full = %{version}-%{release} -Provides: webclient libcurl = %{version}-%{release} -Obsoletes: libcurl - -BuildRequires: automake brotli-devel coreutils gcc groff krb5-devel libidn2-devel libmetalink-devel -BuildRequires: libnghttp2-devel libpsl-devel libssh-devel make openldap-devel openssh-clients -BuildRequires: openssh-server openssl-devel pkgconfig python3-devel sed stunnel zlib-devel -BuildRequires: gnutls-utils nghttp2 perl(Cwd) perl(Digest::MD5) perl(Exporter) perl(File::Basename) -BuildRequires: perl(File::Copy) perl(File::Spec) perl(IPC::Open2) perl(MIME::Base64) perl(strict) -BuildRequires: perl(Time::Local) perl(Time::HiRes) perl(warnings) perl(vars) - +Name: curl +Version: 7.66.0 +Release: 1 +Summary: Curl is used in command lines or scripts to transfer data +License: MIT +URL: https://curl.haxx.se/ +Source: https://curl.haxx.se/download/curl-%{version}.tar.xz + +Patch1: 0001-curl-7.66.0-metalink-memleak.patch +Patch101: 0101-curl-7.32.0-multilib.patch +Patch102: 0102-curl-7.36.0-debug.patch +Patch103: 0103-curl-7.59.0-python3.patch +Patch104: 0104-curl-7.19.7-localhost6.patch +Patch105: 0105-curl-7.63.0-lib1560-valgrind.patch + +BuildRequires: automake brotli-devel coreutils gcc groff krb5-devel +BuildRequires: libidn2-devel libmetalink-devel libnghttp2-devel libpsl-devel +BuildRequires: libssh-devel make openldap-devel openssh-clients openssh-server +BuildRequires: openssl-devel perl-interpreter pkgconfig python3-devel sed +BuildRequires: stunnel zlib-devel gnutls-utils nghttp2 perl(IO::Compress::Gzip) +BuildRequires: perl(Getopt::Long) perl(Pod::Usage) perl(strict) perl(warnings) +BuildRequires: perl(Cwd) perl(Digest::MD5) perl(Exporter) perl(File::Basename) +BuildRequires: perl(File::Copy) perl(File::Spec) perl(IPC::Open2) perl(MIME::Base64) +BuildRequires: perl(Time::Local) perl(Time::HiRes) perl(vars) %ifarch x86_64 -BuildRequires: valgrind +BuildRequires: valgrind %endif -Requires: libpsl >= %{libpsl_version} -Requires: libssh >= %{libssh_version} openssl-libs >= 1:%{openssl_version} +Requires: libpsl >= %{libpsl_version} libssh >= %{libssh_version} +Requires: openssl-libs >= 1:%{openssl_version} + +Provides: curl-full = %{version}-%{release} libcurl-full = %{version}-%{release} +Provides: webclient libcurl = %{version}-%{release} +Obsoletes: libcurl < %{version}-%{release} %description cURL is a computer software project providing a library (libcurl) and command-line tool (curl) for transferring data using various protocols. -%package devel -Summary: Files needed for building applications with libcurl -Requires: curl = %{version}-%{release} -Provides: curl-devel = %{version}-%{release} -Provides: libcurl-devel = %{version}-%{release} -Obsoletes: curl-devel < %{version}-%{release} libcurl-devel +%package devel +Summary: Files needed for building applications with libcurl +Requires: curl = %{version}-%{release} +Provides: curl-devel = %{version}-%{release} +Provides: libcurl-devel = %{version}-%{release} +Obsoletes: curl-devel < %{version}-%{release} +Obsoletes: libcurl-devel < %{version}-%{release} -%description devel +%description devel The curl-devel package includes header files and libraries necessary for developing programs. - %package help Summary: Documents for autogen Buildarch: noarch @@ -130,7 +77,7 @@ printf "1112\n1455\n1801\n1900\n" >> tests/data/DISABLED sed -e 's/^35$/35,52/' -i tests/data/test323 %build -install -d build-{full,minimal} +install -d build-full export common_configure_opts=" \ --cache-file=../config.cache \ --disable-static \ @@ -141,20 +88,6 @@ export common_configure_opts=" \ --with-nghttp2 \ --with-ssl --with-ca-bundle=%{_sysconfdir}/pki/tls/certs/ca-bundle.crt" -# configure minimal build -( - cd build-minimal - %configure $common_configure_opts \ - --disable-ldap \ - --disable-ldaps \ - --disable-manual \ - --without-brotli \ - --without-libidn2 \ - --without-libmetalink \ - --without-libpsl \ - --without-libssh -) - # configure full build ( cd build-full @@ -171,20 +104,12 @@ export common_configure_opts=" \ sed -e 's/^runpath_var=.*/runpath_var=/' \ -e 's/^hardcode_libdir_flag_spec=".*"$/hardcode_libdir_flag_spec=""/' \ - -i build-{full,minimal}/libtool + -i build-full/libtool -%make_build V=1 -C build-minimal %make_build V=1 -C build-full -%check - %install -# curl-minimal files install -%make_install -C build-minimal -for i in ${RPM_BUILD_ROOT}%{_libdir}/*; do - mv -v $i $i.minimal -done -mv -v ${RPM_BUILD_ROOT}%{_bindir}/curl{,.minimal} +rm -f ${RPM_BUILD_ROOT}%{_libdir}/libcurl.{la,so} # install libcurl.m4 for devel install -D -m 644 docs/libcurl/libcurl.m4 $RPM_BUILD_ROOT%{_datadir}/aclocal/libcurl.m4 @@ -196,37 +121,24 @@ cd build-full # install zsh completion for curl LD_LIBRARY_PATH="$RPM_BUILD_ROOT%{_libdir}:$LD_LIBRARY_PATH" %make_install -C scripts -%pre - -%preun - -%post -/sbin/ldconfig - +# do not install /usr/share/fish/completions/curl.fish which is also installed +# by fish-3.0.2-1.module_f31+3716+57207597 and would trigger a conflict +rm -rf ${RPM_BUILD_ROOT}%{_datadir}/fish -%postun -/sbin/ldconfig +rm -f ${RPM_BUILD_ROOT}%{_libdir}/libcurl.la +%ldconfig_scriptlets %files %defattr(-,root,root) %license COPYING - %{_bindir}/curl -%{_datadir}/zsh/site-functions +%{_datadir}/zsh %{_libdir}/libcurl.so.4 %{_libdir}/libcurl.so.4.[0-9].[0-9] -%exclude %{_libdir}/libcurl.la - -%exclude %{_bindir}/curl.minimal -%exclude %{_libdir}/libcurl.so.4.minimal -%exclude %{_libdir}/libcurl.so.4.[0-9].[0-9].minimal -%exclude %{_libdir}/pkgconfig.minimal -%exclude %{_libdir}/libcurl.la.minimal -%exclude %{_libdir}/libcurl.so.minimal - %files devel +%defattr(-,root,root) %doc docs/examples/*.c docs/examples/Makefile.example docs/INTERNALS.md %doc docs/CONTRIBUTE.md docs/libcurl/ABI %{_bindir}/curl-config* @@ -236,16 +148,18 @@ LD_LIBRARY_PATH="$RPM_BUILD_ROOT%{_libdir}:$LD_LIBRARY_PATH" %make_install -C sc %{_datadir}/aclocal/libcurl.m4 %files help +%defattr(-,root,root) +%doc CHANGES README* +%doc docs/BUGS docs/FAQ docs/FEATURES docs/RESOURCES +%doc docs/TheArtOfHttpScripting docs/TODO %{_mandir}/man1/curl.1* %{_mandir}/man1/curl-config.1* %{_mandir}/man3/* -%doc CHANGES README* -%doc docs/BUGS docs/FAQ docs/FEATURES -%doc docs/MANUAL docs/RESOURCES -%doc docs/TheArtOfHttpScripting docs/TODO - %changelog +* Sat Jan 11 2020 openEuler Buildteam - 7.66.0-1 +- update to 7.66.0 + * Sat Dec 21 2019 openEuler Buildteam - 7.61.1-4 - Type:cves - ID:CVE-2019-5481 CVE-2019-5482 diff --git a/curl_easy_perform-fix-timeout-handling.patch b/curl_easy_perform-fix-timeout-handling.patch deleted file mode 100644 index a7773f090265925c9b6d8ab2407bd07cc5428059..0000000000000000000000000000000000000000 --- a/curl_easy_perform-fix-timeout-handling.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 34fe0e1622fd87f2945e734787bc29e314d253cc Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Sat, 24 Nov 2018 23:20:19 +0100 -Subject: [PATCH 314/557] curl_easy_perform: fix timeout handling - -curl_multi_wait() was erroneously used from within -curl_easy_perform(). It could lead to it believing there was no socket -to wait for and then instead sleep for a while instead of monitoring the -socket and then miss acting on that activity as swiftly as it should -(causing an up to 1000 ms delay). - -Reported-by: Antoni Villalonga -Fixes #3305 -Closes #3306 -Closes #3308 ---- - lib/easy.c | 7 ++++--- - lib/multi.c | 20 ++++++++++++++++++-- - lib/multiif.h | 8 ++++++++ - 3 files changed, 30 insertions(+), 5 deletions(-) - -diff --git a/lib/easy.c b/lib/easy.c -index d940b5d..e592d7a 100644 ---- a/lib/easy.c -+++ b/lib/easy.c -@@ -664,12 +664,12 @@ static CURLcode easy_transfer(struct Curl_multi *multi) - - while(!done && !mcode) { - int still_running = 0; -- int rc; -+ bool gotsocket = FALSE; - -- mcode = curl_multi_wait(multi, NULL, 0, 1000, &rc); -+ mcode = Curl_multi_wait(multi, NULL, 0, 1000, NULL, &gotsocket); - - if(!mcode) { -- if(!rc) { -+ if(!gotsocket) { - long sleep_ms; - - /* If it returns without any filedescriptor instantly, we need to -@@ -688,6 +688,7 @@ static CURLcode easy_transfer(struct Curl_multi *multi) - - /* only read 'still_running' if curl_multi_perform() return OK */ - if(!mcode && !still_running) { -+ int rc; - CURLMsg *msg = curl_multi_info_read(multi, &rc); - if(msg) { - result = msg->data.result; -diff --git a/lib/multi.c b/lib/multi.c -index c2ef6c1..cca1380 100644 ---- a/lib/multi.c -+++ b/lib/multi.c -@@ -985,11 +985,12 @@ CURLMcode curl_multi_fdset(struct Curl_multi *multi, - - #define NUM_POLLS_ON_STACK 10 - --CURLMcode curl_multi_wait(struct Curl_multi *multi, -+CURLMcode Curl_multi_wait(struct Curl_multi *multi, - struct curl_waitfd extra_fds[], - unsigned int extra_nfds, - int timeout_ms, -- int *ret) -+ int *ret, -+ bool *gotsocket) /* if any socket was checked */ - { - struct Curl_easy *data; - curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE]; -@@ -1003,6 +1004,9 @@ CURLMcode curl_multi_wait(struct Curl_multi *multi, - int retcode = 0; - struct pollfd a_few_on_stack[NUM_POLLS_ON_STACK]; - -+ if(gotsocket) -+ *gotsocket = FALSE; -+ - if(!GOOD_MULTI_HANDLE(multi)) - return CURLM_BAD_HANDLE; - -@@ -1135,9 +1139,21 @@ CURLMcode curl_multi_wait(struct Curl_multi *multi, - free(ufds); - if(ret) - *ret = retcode; -+ if(gotsocket && (extra_fds || curlfds)) -+ /* if any socket was checked */ -+ *gotsocket = TRUE; -+ - return CURLM_OK; - } - -+CURLMcode curl_multi_wait(struct Curl_multi *multi, -+ struct curl_waitfd extra_fds[], -+ unsigned int extra_nfds, -+ int timeout_ms, -+ int *ret) -+{ -+ return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, NULL); -+} - /* - * Curl_multi_connchanged() is called to tell that there is a connection in - * this multi handle that has changed state (pipelining become possible, the -diff --git a/lib/multiif.h b/lib/multiif.h -index c50063d..e44646b 100644 ---- a/lib/multiif.h -+++ b/lib/multiif.h -@@ -97,4 +97,12 @@ void Curl_multi_closed(struct Curl_easy *data, curl_socket_t s); - CURLMcode Curl_multi_add_perform(struct Curl_multi *multi, - struct Curl_easy *data, - struct connectdata *conn); -+ -+CURLMcode Curl_multi_wait(struct Curl_multi *multi, -+ struct curl_waitfd extra_fds[], -+ unsigned int extra_nfds, -+ int timeout_ms, -+ int *ret, -+ bool *gotsocket); /* if any socket was checked */ -+ - #endif /* HEADER_CURL_MULTIIF_H */ --- -1.8.3.1 - diff --git a/curl_multibyte-fix-a-malloc-overcalculation.patch b/curl_multibyte-fix-a-malloc-overcalculation.patch deleted file mode 100644 index 6cb9bf595ae3b8522c71342bfb544a9d27c8e3bd..0000000000000000000000000000000000000000 --- a/curl_multibyte-fix-a-malloc-overcalculation.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 28429fb1753d63a659f38577b39e0b5747f28939 Mon Sep 17 00:00:00 2001 -From: Jay Satiro -Date: Thu, 1 Nov 2018 02:53:22 -0400 -Subject: [PATCH 261/557] curl_multibyte: fix a malloc overcalculation - -Prior to this change twice as many bytes as necessary were malloc'd when -converting wchar to UTF8. To allay confusion in the future I also -changed the variable name for the amount of bytes from len to bytes. - -Closes https://github.com/curl/curl/pull/3209 ---- - lib/curl_multibyte.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c -index e78bb50..e48334f 100644 ---- a/lib/curl_multibyte.c -+++ b/lib/curl_multibyte.c -@@ -64,13 +64,13 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w) - char *str_utf8 = NULL; - - if(str_w) { -- int str_utf8_len = WideCharToMultiByte(CP_UTF8, 0, str_w, -1, NULL, -- 0, NULL, NULL); -- if(str_utf8_len > 0) { -- str_utf8 = malloc(str_utf8_len * sizeof(wchar_t)); -+ int bytes = WideCharToMultiByte(CP_UTF8, 0, str_w, -1, -+ NULL, 0, NULL, NULL); -+ if(bytes > 0) { -+ str_utf8 = malloc(bytes); - if(str_utf8) { -- if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, str_utf8_len, -- NULL, FALSE) == 0) { -+ if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, bytes, -+ NULL, NULL) == 0) { - free(str_utf8); - return NULL; - } --- -1.8.3.1 - diff --git a/darwinssl-Fix-realloc-memleak.patch b/darwinssl-Fix-realloc-memleak.patch deleted file mode 100644 index 18317635756dd564233daa9a67a00ce90afbaae2..0000000000000000000000000000000000000000 --- a/darwinssl-Fix-realloc-memleak.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a544df0b095d295e246f7aa5dcc613b80708d203 Mon Sep 17 00:00:00 2001 -From: kangenbo -Date: Fri, 8 Mar 2019 12:29:54 -0500 -Subject: [PATCH] darwinssl: Fix realloc memleak - -The reallocation was using the input pointer for the return value, which -leads to a memory leak on reallication failure. Fix by instead use the -safe internal API call Curl_saferealloc(). - ---- - lib/vtls/darwinssl.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/vtls/darwinssl.c b/lib/vtls/darwinssl.c -index 1aea0dc..e963f27 100644 ---- a/lib/vtls/darwinssl.c -+++ b/lib/vtls/darwinssl.c -@@ -116,6 +116,7 @@ - #include "vtls.h" - #include "darwinssl.h" - #include "curl_printf.h" -+#include "strdup.h" - - #include "curl_memory.h" - /* The last #include file should be: */ -@@ -2039,7 +2040,7 @@ static int read_cert(const char *file, unsigned char **out, size_t *outlen) - - if(len + n >= cap) { - cap *= 2; -- data = realloc(data, cap); -+ data = Curl_saferealloc(data, cap); - if(!data) { - close(fd); - return -1; --- -1.8.3.1 - diff --git a/examples-Fix-memory-leaks-from-realloc-errors.patch b/examples-Fix-memory-leaks-from-realloc-errors.patch deleted file mode 100644 index 3296a20a2d9649ce5aa672ca43fc1adeecfe065b..0000000000000000000000000000000000000000 --- a/examples-Fix-memory-leaks-from-realloc-errors.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 23524bf85b887adbc513bc015c9530355967bc04 Mon Sep 17 00:00:00 2001 -From: Kruzya -Date: Sat, 15 Sep 2018 08:55:11 +0300 -Subject: [PATCH 065/557] examples: Fix memory leaks from realloc errors - -Make sure to not overwrite the reallocated pointer in realloc() calls -to avoid a memleak on memory errors. ---- - docs/examples/crawler.c | 8 +++++++- - docs/examples/curlx.c | 12 ++++++++++-- - docs/examples/getinmemory.c | 7 ++++--- - docs/examples/postinmemory.c | 7 ++++--- - docs/examples/xmlstream.c | 7 ++++--- - 5 files changed, 29 insertions(+), 12 deletions(-) - -diff --git a/docs/examples/crawler.c b/docs/examples/crawler.c -index 0aeb865..d8fa5a4 100644 ---- a/docs/examples/crawler.c -+++ b/docs/examples/crawler.c -@@ -52,7 +52,13 @@ size_t grow_buffer(void *contents, size_t sz, size_t nmemb, void *ctx) - { - size_t realsize = sz * nmemb; - memory *mem = (memory*) ctx; -- mem->buf = realloc(mem->buf, mem->size + realsize); -+ char *ptr = realloc(mem->buf, mem->size + realsize); -+ if(!ptr) { -+ /* out of memory */ -+ printf("not enough memory (realloc returned NULL)\n"); -+ return 0; -+ } -+ mem->buf = ptr; - memcpy(&(mem->buf[mem->size]), contents, realsize); - mem->size += realsize; - return realsize; -diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c -index 141f5a8..49f52e6 100644 ---- a/docs/examples/curlx.c -+++ b/docs/examples/curlx.c -@@ -515,12 +515,20 @@ int main(int argc, char **argv) - curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p); - - { -+ char *ptr; - int lu; int i = 0; - while((lu = BIO_read(in, &binaryptr[i], tabLength-i)) >0) { - i += lu; - if(i == tabLength) { - tabLength += 100; -- binaryptr = realloc(binaryptr, tabLength); /* should be more careful */ -+ ptr = realloc(binaryptr, tabLength); /* should be more careful */ -+ if(!ptr) { -+ /* out of memory */ -+ BIO_printf(p.errorbio, "out of memory (realloc returned NULL)\n"); -+ goto fail; -+ } -+ binaryptr = ptr; -+ ptr = NULL; - } - } - tabLength = i; -@@ -551,7 +559,7 @@ int main(int argc, char **argv) - /*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/ - - /* free the header list*/ -- -+fail: - curl_slist_free_all(headers); - - /* always cleanup */ -diff --git a/docs/examples/getinmemory.c b/docs/examples/getinmemory.c -index f5e8942..a21a2aa 100644 ---- a/docs/examples/getinmemory.c -+++ b/docs/examples/getinmemory.c -@@ -5,7 +5,7 @@ - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * -- * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. -+ * Copyright (C) 1998 - 2018, 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 -@@ -42,13 +42,14 @@ WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) - size_t realsize = size * nmemb; - struct MemoryStruct *mem = (struct MemoryStruct *)userp; - -- mem->memory = realloc(mem->memory, mem->size + realsize + 1); -- if(mem->memory == NULL) { -+ char *ptr = realloc(mem->memory, mem->size + realsize + 1); -+ if(ptr == NULL) { - /* out of memory! */ - printf("not enough memory (realloc returned NULL)\n"); - return 0; - } - -+ mem->memory = ptr; - memcpy(&(mem->memory[mem->size]), contents, realsize); - mem->size += realsize; - mem->memory[mem->size] = 0; -diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c -index 488d227..176f24a 100644 ---- a/docs/examples/postinmemory.c -+++ b/docs/examples/postinmemory.c -@@ -5,7 +5,7 @@ - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * -- * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. -+ * Copyright (C) 1998 - 2018, 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 -@@ -39,13 +39,14 @@ WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) - size_t realsize = size * nmemb; - struct MemoryStruct *mem = (struct MemoryStruct *)userp; - -- mem->memory = realloc(mem->memory, mem->size + realsize + 1); -- if(mem->memory == NULL) { -+ char *ptr = realloc(mem->memory, mem->size + realsize + 1); -+ if(!ptr) { - /* out of memory! */ - printf("not enough memory (realloc returned NULL)\n"); - return 0; - } - -+ mem->memory = ptr; - memcpy(&(mem->memory[mem->size]), contents, realsize); - mem->size += realsize; - mem->memory[mem->size] = 0; -diff --git a/docs/examples/xmlstream.c b/docs/examples/xmlstream.c -index 9ee4a2e..296ae3b 100644 ---- a/docs/examples/xmlstream.c -+++ b/docs/examples/xmlstream.c -@@ -5,7 +5,7 @@ - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * -- * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. -+ * Copyright (C) 1998 - 2018, 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 -@@ -69,14 +69,15 @@ static void characterDataHandler(void *userData, const XML_Char *s, int len) - struct ParserStruct *state = (struct ParserStruct *) userData; - struct MemoryStruct *mem = &state->characters; - -- mem->memory = realloc(mem->memory, mem->size + len + 1); -- if(mem->memory == NULL) { -+ char *ptr = realloc(mem->memory, mem->size + len + 1); -+ if(!ptr) { - /* Out of memory. */ - fprintf(stderr, "Not enough memory (realloc returned NULL).\n"); - state->ok = 0; - return; - } - -+ mem->memory = ptr; - memcpy(&(mem->memory[mem->size]), s, len); - mem->size += len; - mem->memory[mem->size] = 0; --- -1.8.3.1 - diff --git a/examples-postinmemory-Potential-leak-of-memory-point.patch b/examples-postinmemory-Potential-leak-of-memory-point.patch deleted file mode 100644 index c0d4b38760921ce9b2be9496a8bee6897d68eb29..0000000000000000000000000000000000000000 --- a/examples-postinmemory-Potential-leak-of-memory-point.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 52d98194b539605a4bd5bfeddc367bff283ac28f Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Thu, 14 Feb 2019 11:53:02 +0100 -Subject: [PATCH 541/557] examples/postinmemory: Potential leak of memory - pointed to by 'chunk.memory' - -Detected by scan-build ---- - docs/examples/postinmemory.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c -index 25a1e8e..376f334 100644 ---- a/docs/examples/postinmemory.c -+++ b/docs/examples/postinmemory.c -@@ -106,10 +105,9 @@ int main(void) - /* always cleanup */ - curl_easy_cleanup(curl); - -- free(chunk.memory); -- - /* we're done with libcurl, so clean it up */ - curl_global_cleanup(); - } -+ free(chunk.memory); - return 0; - } --- -1.8.3.1 - diff --git a/fix-compiler-warning-on-64-bit-Windows.patch b/fix-compiler-warning-on-64-bit-Windows.patch deleted file mode 100644 index bd2d613ac6ccd8df8b861508322053e8c472a6be..0000000000000000000000000000000000000000 --- a/fix-compiler-warning-on-64-bit-Windows.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 621ce8280ff250b67f44b5be667c637c445cd9f3 Mon Sep 17 00:00:00 2001 -From: kangenbo -Date: Fri, 8 Mar 2019 11:35:06 -0500 -Subject: [PATCH] anyauthput: fix compiler warning on 64-bit Windows - -On Windows, the read function from is used, which has its byte -count parameter as unsigned int instead of size_t. - -Closes https://github.com/curl/curl/pull/2972 ---- - docs/examples/anyauthput.c | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - -diff --git a/docs/examples/anyauthput.c b/docs/examples/anyauthput.c -index eb91d99..14da10c 100644 ---- a/docs/examples/anyauthput.c -+++ b/docs/examples/anyauthput.c -@@ -26,15 +26,18 @@ - */ - #include - #include -+#include -+#include -+ -+#include -+ - #ifdef WIN32 - # include -+# define READ_3RD_ARG unsigned int - #else - # include -+# define READ_3RD_ARG size_t - #endif --#include --#include -- --#include - - #if LIBCURL_VERSION_NUM < 0x070c03 - #error "upgrade your libcurl to no less than 7.12.3" -@@ -83,7 +86,7 @@ static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream) - int *fdp = (int *)stream; - int fd = *fdp; - -- retcode = read(fd, ptr, size * nmemb); -+ retcode = read(fd, ptr, (READ_3RD_ARG)(size * nmemb)); - - nread = (curl_off_t)retcode; - --- -1.8.3.1 - diff --git a/fix-gcc8-warning-on-Windows.patch b/fix-gcc8-warning-on-Windows.patch deleted file mode 100644 index 18a62a261b70e8d471caf3e694872d14f2674102..0000000000000000000000000000000000000000 --- a/fix-gcc8-warning-on-Windows.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f7734f39b857f56abbd849e06e91fe2b46ed04c3 Mon Sep 17 00:00:00 2001 -From: kangenbo -Date: Fri, 8 Mar 2019 11:28:21 -0500 -Subject: [PATCH] lib: fix gcc8 warning on Windows - -Closes https://github.com/curl/curl/pull/2979 ---- - lib/curl_sspi.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/lib/curl_sspi.c b/lib/curl_sspi.c -index 11a7120..7d19342 100644 ---- a/lib/curl_sspi.c -+++ b/lib/curl_sspi.c -@@ -90,8 +90,9 @@ CURLcode Curl_sspi_global_init(void) - return CURLE_FAILED_INIT; - - /* Get address of the InitSecurityInterfaceA function from the SSPI dll */ -- pInitSecurityInterface = (INITSECURITYINTERFACE_FN) -- GetProcAddress(s_hSecDll, SECURITYENTRYPOINT); -+ pInitSecurityInterface = -+ CURLX_FUNCTION_CAST(INITSECURITYINTERFACE_FN, -+ (GetProcAddress(s_hSecDll, SECURITYENTRYPOINT))); - if(!pInitSecurityInterface) - return CURLE_FAILED_INIT; - --- -1.8.3.1 - diff --git a/fix-gcc8-warning.patch b/fix-gcc8-warning.patch deleted file mode 100644 index 6d772c21ef740ca7b0dab9e181f34dc75a6bc229..0000000000000000000000000000000000000000 --- a/fix-gcc8-warning.patch +++ /dev/null @@ -1,29 +0,0 @@ -From b504d96674ba3684882fcc1244a23b7439f12b63 Mon Sep 17 00:00:00 2001 -From: kangenbo -Date: Fri, 8 Mar 2019 11:01:34 -0500 -Subject: [PATCH] openssl: fix gcc8 warning - Use memcpy instead of strncpy to copy a string without termination, - since gcc8 warns about using strncpy to copy as many bytes from a - string as its length. - - Closes https://github.com/curl/curl/issues/2980 ---- - lib/vtls/openssl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c -index a487f55..955b661 100644 ---- a/lib/vtls/openssl.c -+++ b/lib/vtls/openssl.c -@@ -253,7 +253,7 @@ static void ossl_keylog_callback(const SSL *ssl, const char *line) - if(!buf) - return; - } -- strncpy(buf, line, linelen); -+ memcpy(buf, line, linelen); - buf[linelen] = '\n'; - buf[linelen + 1] = '\0'; - --- -1.8.3.1 - diff --git a/fix-leak-when-writing-cookies-to-file.patch b/fix-leak-when-writing-cookies-to-file.patch deleted file mode 100644 index 9ad3767a05f8247c034e2af84a0d1d5046beb3c7..0000000000000000000000000000000000000000 --- a/fix-leak-when-writing-cookies-to-file.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 315693699f5786dd8bfecfa25201fa68da1458cc Mon Sep 17 00:00:00 2001 -From: kangenbo -Date: Fri, 8 Mar 2019 10:55:48 -0500 -Subject: [PATCH] cookies: fix leak when writing cookies to file - ---- - lib/cookie.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/cookie.c b/lib/cookie.c -index fd7341f..9cf8a36 100644 ---- a/lib/cookie.c -+++ b/lib/cookie.c -@@ -1508,10 +1508,10 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere) - format_ptr = get_netscape_format(array[i]); - if(format_ptr == NULL) { - fprintf(out, "#\n# Fatal libcurl error\n"); -- if(!use_stdout) { -- free(array); -+ free(array); -+ if(!use_stdout) - fclose(out); -- } -+ - return 1; - } - fprintf(out, "%s\n", format_ptr); --- -1.8.3.1 - diff --git a/hostip-fix-check-on-Curl_shuffle_addr-return-value.patch b/hostip-fix-check-on-Curl_shuffle_addr-return-value.patch deleted file mode 100644 index cd4c5436c7d64ee4abc96e16924022abf81ea5e8..0000000000000000000000000000000000000000 --- a/hostip-fix-check-on-Curl_shuffle_addr-return-value.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3349a633b8b181bfd1825b36d8cca51f5a20defd Mon Sep 17 00:00:00 2001 -From: Rick Deist -Date: Sun, 7 Oct 2018 19:18:03 +0300 -Subject: [PATCH 160/557] hostip: fix check on Curl_shuffle_addr return value - -Closes #3110 ---- - lib/hostip.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/hostip.c b/lib/hostip.c -index 0dd0cbc..f589a0b 100644 ---- a/lib/hostip.c -+++ b/lib/hostip.c -@@ -454,7 +454,7 @@ Curl_cache_addr(struct Curl_easy *data, - /* shuffle addresses if requested */ - if(data->set.dns_shuffle_addresses) { - CURLcode result = Curl_shuffle_addr(data, &addr); -- if(!result) -+ if(result) - return NULL; - } - --- -1.8.3.1 - diff --git a/http-fix-memleak-in-rewind-error-path.patch b/http-fix-memleak-in-rewind-error-path.patch deleted file mode 100644 index b81a45c7b8bb82e07fd3106ba74706daf17dd981..0000000000000000000000000000000000000000 --- a/http-fix-memleak-in-rewind-error-path.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 4058cf2a7f7e2590c26588c4eb476ac5c029cb5a Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Tue, 25 Sep 2018 07:49:35 +0200 -Subject: [PATCH 100/557] http: fix memleak in rewind error path - -If the rewind would fail, a strdup() would not get freed. - -Detected by OSS-Fuzz - -Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10665 -Closes #3044 ---- - lib/http.c | 15 +++++++-------- - 1 file changed, 7 insertions(+), 8 deletions(-) - -diff --git a/lib/http.c b/lib/http.c -index 02ba133..47e4719 100644 ---- a/lib/http.c -+++ b/lib/http.c -@@ -537,14 +537,6 @@ CURLcode Curl_http_auth_act(struct connectdata *conn) - } - - if(pickhost || pickproxy) { -- /* In case this is GSS auth, the newurl field is already allocated so -- we must make sure to free it before allocating a new one. As figured -- out in bug #2284386 */ -- Curl_safefree(data->req.newurl); -- data->req.newurl = strdup(data->change.url); /* clone URL */ -- if(!data->req.newurl) -- return CURLE_OUT_OF_MEMORY; -- - if((data->set.httpreq != HTTPREQ_GET) && - (data->set.httpreq != HTTPREQ_HEAD) && - !conn->bits.rewindaftersend) { -@@ -552,6 +544,13 @@ CURLcode Curl_http_auth_act(struct connectdata *conn) - if(result) - return result; - } -+ /* In case this is GSS auth, the newurl field is already allocated so -+ we must make sure to free it before allocating a new one. As figured -+ out in bug #2284386 */ -+ Curl_safefree(data->req.newurl); -+ data->req.newurl = strdup(data->change.url); /* clone URL */ -+ if(!data->req.newurl) -+ return CURLE_OUT_OF_MEMORY; - } - else if((data->req.httpcode < 300) && - (!data->state.authhost.done) && --- -1.8.3.1 - diff --git a/http2-fix-memory-leaks-on-error-path.patch b/http2-fix-memory-leaks-on-error-path.patch deleted file mode 100644 index 2eca86eb8caf84e191282e0187e014b100a265fe..0000000000000000000000000000000000000000 --- a/http2-fix-memory-leaks-on-error-path.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 955e575f4e0a20a752e4fe1951f9d1107edd3925 Mon Sep 17 00:00:00 2001 -From: kangenbo -Date: Fri, 8 Mar 2019 12:06:11 -0500 -Subject: [PATCH] http2: fix memory leaks on error-path - ---- - lib/http2.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/lib/http2.c b/lib/http2.c -index d769193..dfc780e 100644 ---- a/lib/http2.c -+++ b/lib/http2.c -@@ -2060,8 +2060,11 @@ CURLcode Curl_http2_setup(struct connectdata *conn) - - stream->stream_id = -1; - -- if(!stream->header_recvbuf) -+ if(!stream->header_recvbuf) { - stream->header_recvbuf = Curl_add_buffer_init(); -+ if(!stream->header_recvbuf) -+ return CURLE_OUT_OF_MEMORY; -+ } - - if((conn->handler == &Curl_handler_http2_ssl) || - (conn->handler == &Curl_handler_http2)) -@@ -2073,8 +2076,11 @@ CURLcode Curl_http2_setup(struct connectdata *conn) - conn->handler = &Curl_handler_http2; - - result = Curl_http2_init(conn); -- if(result) -+ if(result) { -+ Curl_add_buffer_free(stream->header_recvbuf); -+ stream->header_recvbuf = NULL; - return result; -+ } - - infof(conn->data, "Using HTTP2, server supports multi-use\n"); - stream->upload_left = 0; --- -1.8.3.1 - diff --git a/krb5-fix-memory-leak-in-krb_auth.patch b/krb5-fix-memory-leak-in-krb_auth.patch deleted file mode 100644 index 93ff57cf265676330df4ae124f31521c19ef9f0d..0000000000000000000000000000000000000000 --- a/krb5-fix-memory-leak-in-krb_auth.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 3c5ee47fc206036283bdbcbe4588464bc9a7a5ae Mon Sep 17 00:00:00 2001 -From: Daniel Gustafsson -Date: Thu, 13 Sep 2018 10:10:55 +0200 -Subject: [PATCH 054/557] krb5: fix memory leak in krb_auth - -The FTP command allocated by aprintf() must be freed after usage. - -Reviewed-by: Daniel Stenberg ---- - lib/krb5.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/krb5.c b/lib/krb5.c -index 8b5a247..46c5608 100644 ---- a/lib/krb5.c -+++ b/lib/krb5.c -@@ -265,6 +265,7 @@ krb5_auth(void *app_data, struct connectdata *conn) - result = CURLE_OUT_OF_MEMORY; - - free(p); -+ free(cmd); - - if(result) { - ret = -2; --- -1.8.3.1 - diff --git a/libssh-free-sftp_canonicalize_path-data-correctly.patch b/libssh-free-sftp_canonicalize_path-data-correctly.patch deleted file mode 100644 index 415f31a4c129c09bc3ac3c3e1c2b48c9a3e2232c..0000000000000000000000000000000000000000 --- a/libssh-free-sftp_canonicalize_path-data-correctly.patch +++ /dev/null @@ -1,68 +0,0 @@ -From d18a5afaf07fdc093c6a6131cc7926a3d5a55407 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 21 Dec 2018 14:22:42 +0100 -Subject: [PATCH 386/557] libssh: free sftp_canonicalize_path() data correctly - -Assisted-by: Harry Sintonen - -Fixes #3402 -Closes #3403 ---- - lib/ssh-libssh.c | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - -diff --git a/lib/ssh-libssh.c b/lib/ssh-libssh.c -index e38c01a..2e920f0 100644 ---- a/lib/ssh-libssh.c -+++ b/lib/ssh-libssh.c -@@ -95,6 +95,13 @@ - #include "memdebug.h" - #include "curl_path.h" - -+/* A recent macro provided by libssh. Or make our own. */ -+#ifndef SSH_STRING_FREE_CHAR -+/* !checksrc! disable ASSIGNWITHINCONDITION 1 */ -+#define SSH_STRING_FREE_CHAR(x) \ -+ do { if((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0) -+#endif -+ - /* Local functions: */ - static CURLcode myssh_connect(struct connectdata *conn, bool *done); - static CURLcode myssh_multi_statemach(struct connectdata *conn, -@@ -1661,7 +1668,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block) - sshc->sftp_session = NULL; - } - -- Curl_safefree(sshc->homedir); -+ SSH_STRING_FREE_CHAR(sshc->homedir); - conn->data->state.most_recent_ftp_entrypath = NULL; - - state(conn, SSH_SESSION_DISCONNECT); -@@ -1829,7 +1836,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block) - - ssh_disconnect(sshc->ssh_session); - -- Curl_safefree(sshc->homedir); -+ SSH_STRING_FREE_CHAR(sshc->homedir); - conn->data->state.most_recent_ftp_entrypath = NULL; - - state(conn, SSH_SESSION_FREE); -@@ -1866,14 +1873,11 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block) - - Curl_safefree(sshc->rsa_pub); - Curl_safefree(sshc->rsa); -- - Curl_safefree(sshc->quote_path1); - Curl_safefree(sshc->quote_path2); -- -- Curl_safefree(sshc->homedir); -- - Curl_safefree(sshc->readdir_line); - Curl_safefree(sshc->readdir_linkPath); -+ SSH_STRING_FREE_CHAR(sshc->homedir); - - /* the code we are about to return */ - result = sshc->actualcode; --- -1.8.3.1 - diff --git a/mbedtls-release-sessionid-resources-on-error.patch b/mbedtls-release-sessionid-resources-on-error.patch deleted file mode 100644 index 3d602e8eed58b09cacef9b17b837ddcc0f71344c..0000000000000000000000000000000000000000 --- a/mbedtls-release-sessionid-resources-on-error.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0299b262cd9c75adab546f4851c03995d98d61e1 Mon Sep 17 00:00:00 2001 -From: Daniel Gustafsson -Date: Sat, 16 Feb 2019 22:30:31 +0100 -Subject: [PATCH 552/557] mbedtls: release sessionid resources on error -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If mbedtls_ssl_get_session() fails, it may still have allocated -memory that needs to be freed to avoid leaking. Call the library -API function to release session resources on this errorpath as -well as on Curl_ssl_addsessionid() errors. - -Closes: #3574 -Reported-by: MichaƂ Antoniak -Reviewed-by: Daniel Stenberg ---- - lib/vtls/mbedtls.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/lib/vtls/mbedtls.c b/lib/vtls/mbedtls.c -index c36c93e..27a9402 100644 ---- a/lib/vtls/mbedtls.c -+++ b/lib/vtls/mbedtls.c -@@ -716,6 +716,8 @@ mbed_connect_step3(struct connectdata *conn, - - ret = mbedtls_ssl_get_session(&BACKEND->ssl, our_ssl_sessionid); - if(ret) { -+ if(ret != MBEDTLS_ERR_SSL_ALLOC_FAILED) -+ mbedtls_ssl_session_free(our_ssl_sessionid); - free(our_ssl_sessionid); - failf(data, "mbedtls_ssl_get_session returned -0x%x", -ret); - return CURLE_SSL_CONNECT_ERROR; -@@ -729,6 +731,7 @@ mbed_connect_step3(struct connectdata *conn, - retcode = Curl_ssl_addsessionid(conn, our_ssl_sessionid, 0, sockindex); - Curl_ssl_sessionid_unlock(conn); - if(retcode) { -+ mbedtls_ssl_session_free(our_ssl_sessionid); - free(our_ssl_sessionid); - failf(data, "failed to store ssl session"); - return retcode; --- -1.8.3.1 - diff --git a/memory-add-missing-curl_printf-header.patch b/memory-add-missing-curl_printf-header.patch deleted file mode 100644 index df3ff0a4cd5eb5fcba7c741411b8917434d1d4c9..0000000000000000000000000000000000000000 --- a/memory-add-missing-curl_printf-header.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 927cb3708e29fd88dcfadb9444d0dc93dc2aa4b2 Mon Sep 17 00:00:00 2001 -From: Daniel Gustafsson -Date: Mon, 17 Sep 2018 09:28:10 +0200 -Subject: [PATCH 064/557] memory: add missing curl_printf header - -ftp_send_command() was using vsnprintf() without including the libcurl -*rintf() replacement header. Fix by including curl_printf.h and also -add curl_memory.h while at it since memdebug.h depends on it. - -Closes #2999 -Reviewed-by: Daniel Stenberg ---- - lib/security.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/lib/security.c b/lib/security.c -index 5f52515..6165d0a 100644 ---- a/lib/security.c -+++ b/lib/security.c -@@ -61,7 +61,9 @@ - #include "strcase.h" - #include "warnless.h" - #include "strdup.h" --/* The last #include file should be: */ -+/* The last 3 #include files should be in this order */ -+#include "curl_printf.h" -+#include "curl_memory.h" - #include "memdebug.h" - - static const struct { --- -1.8.3.1 - diff --git a/memory-ensure-to-check-allocation-results.patch b/memory-ensure-to-check-allocation-results.patch deleted file mode 100644 index b9b5ad162f70584d919aa4d08ccdcb5a6b44f51c..0000000000000000000000000000000000000000 --- a/memory-ensure-to-check-allocation-results.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 2873971d6251b7c1eb278df1ee2b944d7c3fcdba Mon Sep 17 00:00:00 2001 -From: Daniel Gustafsson -Date: Wed, 3 Oct 2018 00:56:29 +0200 -Subject: [PATCH 129/557] memory: ensure to check allocation results - -The result of a memory allocation should always be checked, as we may -run under memory pressure where even a small allocation can fail. This -adds checking and error handling to a few cases where the allocation -wasn't checked for success. In the ftp case, the freeing of the path -variable is moved ahead of the allocation since there is little point -in keeping it around across the strdup, and the separation makes for -more readable code. In nwlib, the lock is aslo freed in the error path. - -Also bumps the copyright years on affected files. - -Closes #3084 -Reviewed-by: Jay Satiro -Reviewed-by: Daniel Stenberg ---- - lib/ftp.c | 4 +++- - lib/http2.c | 2 ++ - lib/nwlib.c | 7 +++++-- - lib/vauth/digest.c | 4 +++- - lib/vtls/schannel_verify.c | 4 ++++ - 5 files changed, 17 insertions(+), 4 deletions(-) - -diff --git a/lib/ftp.c b/lib/ftp.c -index a966817..793d991 100644 ---- a/lib/ftp.c -+++ b/lib/ftp.c -@@ -3213,9 +3213,11 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status, - ftpc->prevpath[dlen] = 0; /* terminate */ - } - else { -+ free(path); - /* we never changed dir */ - ftpc->prevpath = strdup(""); -- free(path); -+ if(!ftpc->prevpath) -+ return CURLE_OUT_OF_MEMORY; - } - if(ftpc->prevpath) - infof(data, "Remembering we are in dir \"%s\"\n", ftpc->prevpath); -diff --git a/lib/http2.c b/lib/http2.c -index 29edfba..ed47b73 100644 ---- a/lib/http2.c -+++ b/lib/http2.c -@@ -924,6 +924,8 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame, - stream->push_headers_alloc = 10; - stream->push_headers = malloc(stream->push_headers_alloc * - sizeof(char *)); -+ if(!stream->push_headers) -+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; - stream->push_headers_used = 0; - } - else if(stream->push_headers_used == -diff --git a/lib/nwlib.c b/lib/nwlib.c -index 215d933..7bf5f51 100644 ---- a/lib/nwlib.c -+++ b/lib/nwlib.c -@@ -5,7 +5,7 @@ - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * -- * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. -+ * Copyright (C) 1998 - 2018, 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 -@@ -195,7 +195,7 @@ int GetOrSetUpData(int id, libdata_t **appData, - if(!app_data->tenbytes || !app_data->lock) { - if(app_data->lock) - NXMutexFree(app_data->lock); -- -+ free(app_data->tenbytes); - free(app_data); - app_data = (libdata_t *) NULL; - err = ENOMEM; -@@ -213,6 +213,9 @@ int GetOrSetUpData(int id, libdata_t **appData, - err = set_app_data(gLibId, app_data); - - if(err) { -+ if(app_data->lock) -+ NXMutexFree(app_data->lock); -+ free(app_data->tenbytes); - free(app_data); - app_data = (libdata_t *) NULL; - err = ENOMEM; -diff --git a/lib/vauth/digest.c b/lib/vauth/digest.c -index fae5a49..ab5156e 100644 ---- a/lib/vauth/digest.c -+++ b/lib/vauth/digest.c -@@ -5,7 +5,7 @@ - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * -- * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. -+ * Copyright (C) 1998 - 2018, 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 -@@ -781,6 +781,8 @@ static CURLcode _Curl_auth_create_digest_http_message( - */ - - hashthis = (unsigned char *) aprintf("%s:%s", request, uripath); -+ if(!hashthis) -+ return CURLE_OUT_OF_MEMORY; - - if(digest->qop && strcasecompare(digest->qop, "auth-int")) { - /* We don't support auth-int for PUT or POST at the moment. -diff --git a/lib/vtls/schannel_verify.c b/lib/vtls/schannel_verify.c -index cfc4adf..2516f56 100644 ---- a/lib/vtls/schannel_verify.c -+++ b/lib/vtls/schannel_verify.c -@@ -319,6 +319,10 @@ static CURLcode verify_host(struct Curl_easy *data, - * embedded null bytes. This appears to be undocumented behavior. - */ - cert_hostname_buff = (LPTSTR)malloc(len * sizeof(TCHAR)); -+ if(!cert_hostname_buff) { -+ result = CURLE_OUT_OF_MEMORY; -+ goto cleanup; -+ } - actual_len = CertGetNameString(pCertContextServer, - CERT_NAME_DNS_TYPE, - name_flags, --- -1.8.3.1 - diff --git a/multi-Fix-error-handling-in-the-SENDPROTOCONNECT-sta.patch b/multi-Fix-error-handling-in-the-SENDPROTOCONNECT-sta.patch deleted file mode 100644 index 748b3ff6d1291f7001914b999ef266ba0c430a40..0000000000000000000000000000000000000000 --- a/multi-Fix-error-handling-in-the-SENDPROTOCONNECT-sta.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 3793761a3777095d643e9f2da951615e1178782c Mon Sep 17 00:00:00 2001 -From: Michael Kaufmann -Date: Thu, 25 Oct 2018 13:07:03 +0200 -Subject: [PATCH 216/557] multi: Fix error handling in the SENDPROTOCONNECT - state - -If Curl_protocol_connect() returns an error code, -handle the error instead of switching to the next state. - -Closes #3170 ---- - lib/multi.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/multi.c b/lib/multi.c -index 7c691a1..0db2a97 100644 ---- a/lib/multi.c -+++ b/lib/multi.c -@@ -1608,7 +1608,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, - - case CURLM_STATE_SENDPROTOCONNECT: - result = Curl_protocol_connect(data->easy_conn, &protocol_connect); -- if(!protocol_connect) -+ if(!result && !protocol_connect) - /* switch to waiting state */ - multistate(data, CURLM_STATE_PROTOCONNECT); - else if(!result) { --- -1.8.3.1 - diff --git a/multi-avoid-double-free.patch b/multi-avoid-double-free.patch deleted file mode 100644 index c035da251cd84b69441b42c73b79374979a58feb..0000000000000000000000000000000000000000 --- a/multi-avoid-double-free.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 42c2b14aefb9bd580fe5128147bf52840e61c292 Mon Sep 17 00:00:00 2001 -From: kangenbo -Date: Mon, 18 Mar 2019 17:22:21 -0400 -Subject: [PATCH] 0191 - ---- - lib/multi.c | 12 ++++-------- - 1 file changed, 4 insertions(+), 8 deletions(-) - -diff --git a/lib/multi.c b/lib/multi.c -index 8e920fc..3b85fee 100644 ---- a/lib/multi.c -+++ b/lib/multi.c -@@ -1707,7 +1707,6 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, - char *newurl = NULL; - followtype follow = FOLLOW_NONE; - CURLcode drc; -- bool retry = FALSE; - - drc = Curl_retry_request(data->easy_conn, &newurl); - if(drc) { -@@ -1715,15 +1714,13 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, - result = drc; - stream_error = TRUE; - } -- else -- retry = (newurl)?TRUE:FALSE; - - Curl_posttransfer(data); - drc = multi_done(&data->easy_conn, result, FALSE); - - /* When set to retry the connection, we must to go back to - * the CONNECT state */ -- if(retry) { -+ if(newurl) { - if(!drc || (drc == CURLE_SEND_ERROR)) { - follow = FOLLOW_RETRY; - drc = Curl_follow(data, newurl, follow); -@@ -1986,16 +1983,14 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, - else - follow = FOLLOW_RETRY; - result = multi_done(&data->easy_conn, CURLE_OK, FALSE); -- if(result) -- /* Curl_follow() would otherwise free this */ -- free(newurl); -- else { -+ if(!result) { - result = Curl_follow(data, newurl, follow); - if(!result) { - multistate(data, CURLM_STATE_CONNECT); - rc = CURLM_CALL_MULTI_PERFORM; - } - } -+ free(newurl); - } - else { - /* after the transfer is done, go DONE */ -@@ -2007,6 +2002,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, - newurl = data->req.location; - data->req.location = NULL; - result = Curl_follow(data, newurl, FOLLOW_FAKE); -+ free(newurl); - if(result) { - stream_error = TRUE; - result = multi_done(&data->easy_conn, result, TRUE); --- -1.8.3.1 - diff --git a/multi-fix-location-URL-memleak-in-error-path.patch b/multi-fix-location-URL-memleak-in-error-path.patch deleted file mode 100644 index 5fecab3009f77c12a6d3988614a0fe15cc37a66a..0000000000000000000000000000000000000000 --- a/multi-fix-location-URL-memleak-in-error-path.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 454fa3fd7be9b4a8d51d19d3515a3a935c3bf400 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 28 Sep 2018 10:58:28 +0200 -Subject: [PATCH 108/557] multi: fix location URL memleak in error path - -Follow-up to #3044 - fix a leak OSS-Fuzz detected -Closes #3057 ---- - lib/multi.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/lib/multi.c b/lib/multi.c -index d5e09aa..f202609 100644 ---- a/lib/multi.c -+++ b/lib/multi.c -@@ -1984,7 +1984,10 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, - else - follow = FOLLOW_RETRY; - result = multi_done(&data->easy_conn, CURLE_OK, FALSE); -- if(!result) { -+ if(result) -+ /* Curl_follow() would otherwise free this */ -+ free(newurl); -+ else { - result = Curl_follow(data, newurl, follow); - if(!result) { - multistate(data, CURLM_STATE_CONNECT); --- -1.8.3.1 - diff --git a/multi-fix-memory-leak-in-content-encoding-related-er.patch b/multi-fix-memory-leak-in-content-encoding-related-er.patch deleted file mode 100644 index 2be44c2f23a4903178e21452310097e8abc87b38..0000000000000000000000000000000000000000 --- a/multi-fix-memory-leak-in-content-encoding-related-er.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 2dfc0dd6b59db0816821508418addcf62863c84c Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Sat, 29 Sep 2018 11:32:07 +0200 -Subject: [PATCH 111/557] multi: fix memory leak in content encoding related - error path - -... a missing multi_done() call. - -Credit to OSS-Fuzz -Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10728 -Closes #3063 ---- - lib/multi.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/lib/multi.c b/lib/multi.c -index f202609..9a98435 100644 ---- a/lib/multi.c -+++ b/lib/multi.c -@@ -2005,12 +2005,16 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, - newurl = data->req.location; - data->req.location = NULL; - result = Curl_follow(data, newurl, FOLLOW_FAKE); -- if(result) -+ if(result) { - stream_error = TRUE; -+ result = multi_done(&data->easy_conn, result, TRUE); -+ } - } - -- multistate(data, CURLM_STATE_DONE); -- rc = CURLM_CALL_MULTI_PERFORM; -+ if(!result) { -+ multistate(data, CURLM_STATE_DONE); -+ rc = CURLM_CALL_MULTI_PERFORM; -+ } - } - } - else if(comeback) --- -1.8.3.1 - diff --git a/netrc-free-temporary-strings-if-memory-allocation-fa.patch b/netrc-free-temporary-strings-if-memory-allocation-fa.patch deleted file mode 100644 index e64c0f5d0218a6f79b64f062d72ed68f0ef549a6..0000000000000000000000000000000000000000 --- a/netrc-free-temporary-strings-if-memory-allocation-fa.patch +++ /dev/null @@ -1,111 +0,0 @@ -From d48e6b7f9558ae2a21c74f9054221af8f5c6b607 Mon Sep 17 00:00:00 2001 -From: Michael Kaufmann -Date: Wed, 10 Oct 2018 22:38:50 +0200 -Subject: [PATCH 200/557] netrc: free temporary strings if memory allocation - fails - -- Change the inout parameters after all needed memory has been - allocated. Do not change them if something goes wrong. -- Free the allocated temporary strings if strdup() fails. - -Closes #3122 ---- - lib/netrc.c | 48 +++++++++++++++++++++++++++++++++++++++--------- - 1 file changed, 39 insertions(+), 9 deletions(-) - -diff --git a/lib/netrc.c b/lib/netrc.c -index a407bda..1724b35 100644 ---- a/lib/netrc.c -+++ b/lib/netrc.c -@@ -57,7 +57,11 @@ int Curl_parsenetrc(const char *host, - { - FILE *file; - int retcode = 1; -- int specific_login = (*loginp && **loginp != 0); -+ char *login = *loginp; -+ char *password = *passwordp; -+ bool specific_login = (login && *login != 0); -+ bool login_alloc = FALSE; -+ bool password_alloc = FALSE; - bool netrc_alloc = FALSE; - enum host_lookup_state state = NOTHING; - -@@ -125,7 +129,7 @@ int Curl_parsenetrc(const char *host, - continue; - while(!done && tok) { - -- if((*loginp && **loginp) && (*passwordp && **passwordp)) { -+ if((login && *login) && (password && *password)) { - done = TRUE; - break; - } -@@ -158,26 +162,34 @@ int Curl_parsenetrc(const char *host, - /* we are now parsing sub-keywords concerning "our" host */ - if(state_login) { - if(specific_login) { -- state_our_login = strcasecompare(*loginp, tok); -+ state_our_login = strcasecompare(login, tok); - } - else { -- free(*loginp); -- *loginp = strdup(tok); -- if(!*loginp) { -+ if(login_alloc) { -+ free(login); -+ login_alloc = FALSE; -+ } -+ login = strdup(tok); -+ if(!login) { - retcode = -1; /* allocation failed */ - goto out; - } -+ login_alloc = TRUE; - } - state_login = 0; - } - else if(state_password) { - if(state_our_login || !specific_login) { -- free(*passwordp); -- *passwordp = strdup(tok); -- if(!*passwordp) { -+ if(password_alloc) { -+ free(password); -+ password_alloc = FALSE; -+ } -+ password = strdup(tok); -+ if(!password) { - retcode = -1; /* allocation failed */ - goto out; - } -+ password_alloc = TRUE; - } - state_password = 0; - } -@@ -198,6 +210,24 @@ int Curl_parsenetrc(const char *host, - } /* while fgets() */ - - out: -+ if(!retcode) { -+ if(login_alloc) { -+ if(*loginp) -+ free(*loginp); -+ *loginp = login; -+ } -+ if(password_alloc) { -+ if(*passwordp) -+ free(*passwordp); -+ *passwordp = password; -+ } -+ } -+ else { -+ if(login_alloc) -+ free(login); -+ if(password_alloc) -+ free(password); -+ } - fclose(file); - } - --- -1.8.3.1 - diff --git a/nonblock-fix-unused-parameter-warning.patch b/nonblock-fix-unused-parameter-warning.patch deleted file mode 100644 index 75604b53f85cdd48c16c7a0ad2e1087ecc46fa2c..0000000000000000000000000000000000000000 --- a/nonblock-fix-unused-parameter-warning.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 6c413648ec440230d2988be2d9ed8b70f8dba24b Mon Sep 17 00:00:00 2001 -From: Marcel Raad -Date: Sun, 14 Oct 2018 21:07:45 +0200 -Subject: [PATCH 181/557] nonblock: fix unused parameter warning - -If USE_BLOCKING_SOCKETS is defined, curlx_nonblock's arguments are not -used. ---- - lib/nonblock.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/nonblock.c b/lib/nonblock.c -index 5959281..4d105c1 100644 ---- a/lib/nonblock.c -+++ b/lib/nonblock.c -@@ -48,7 +48,8 @@ int curlx_nonblock(curl_socket_t sockfd, /* operate on this */ - int nonblock /* TRUE or FALSE */) - { - #if defined(USE_BLOCKING_SOCKETS) -- -+ (void)sockfd; -+ (void)nonblock; - return 0; /* returns success */ - - #elif defined(HAVE_FCNTL_O_NONBLOCK) --- -1.8.3.1 - diff --git a/nss-try-to-connect-even-if-libnssckbi.so-fails-to-lo.patch b/nss-try-to-connect-even-if-libnssckbi.so-fails-to-lo.patch deleted file mode 100644 index 0cd017598743629b34f71060ef3f6ccbf5bce6ee..0000000000000000000000000000000000000000 --- a/nss-try-to-connect-even-if-libnssckbi.so-fails-to-lo.patch +++ /dev/null @@ -1,35 +0,0 @@ -From eb0b3acbc1beb08489222ed713ac387ca900fe90 Mon Sep 17 00:00:00 2001 -From: Kamil Dudka -Date: Wed, 19 Sep 2018 10:05:56 +0200 -Subject: [PATCH 073/557] nss: try to connect even if libnssckbi.so fails to - load - -One can still use CA certificates stored in NSS database. - -Reported-by: Maxime Legros -Bug: https://curl.haxx.se/mail/lib-2018-09/0077.html - -Closes #3016 ---- - lib/vtls/nss.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/lib/vtls/nss.c b/lib/vtls/nss.c -index 4eb6a77..0c5a806 100644 ---- a/lib/vtls/nss.c -+++ b/lib/vtls/nss.c -@@ -1578,8 +1578,9 @@ static CURLcode nss_load_ca_certificates(struct connectdata *conn, - infof(data, "%s %s\n", (result) ? "failed to load" : "loaded", - trust_library); - if(result == CURLE_FAILED_INIT) -- /* make the error non-fatal if we are not going to verify peer */ -- result = CURLE_SSL_CACERT_BADFILE; -+ /* If libnssckbi.so is not available (or fails to load), one can still -+ use CA certificates stored in NSS database. Ignore the failure. */ -+ result = CURLE_OK; - } - else if(!use_trust_module && trust_module) { - /* libnssckbi.so not needed but already loaded --> unload it! */ --- -1.8.3.1 - diff --git a/openssl-fix-the-SSL_get_tlsext_status_ocsp_resp-call.patch b/openssl-fix-the-SSL_get_tlsext_status_ocsp_resp-call.patch deleted file mode 100644 index d232a542b760c267907036b73ae38beb5000670b..0000000000000000000000000000000000000000 --- a/openssl-fix-the-SSL_get_tlsext_status_ocsp_resp-call.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 16a3307e813fa82776dc265201ffc7dac1c842a7 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Tue, 15 Jan 2019 23:57:25 +0100 -Subject: [PATCH 451/557] openssl: fix the SSL_get_tlsext_status_ocsp_resp call - -.... to not pass in a const in the second argument as that's not how it -is supposed to be used and might cause compiler warnings. - -Reported-by: Pavel Pavlov -Fixes #3477 -Closes #3478 ---- - lib/vtls/openssl.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c -index 45e72d6..9d11b89 100644 ---- a/lib/vtls/openssl.c -+++ b/lib/vtls/openssl.c -@@ -1692,6 +1692,7 @@ static CURLcode verifystatus(struct connectdata *conn, - struct ssl_connect_data *connssl) - { - int i, ocsp_status; -+ unsigned char *status; - const unsigned char *p; - CURLcode result = CURLE_OK; - struct Curl_easy *data = conn->data; -@@ -1701,14 +1702,14 @@ static CURLcode verifystatus(struct connectdata *conn, - X509_STORE *st = NULL; - STACK_OF(X509) *ch = NULL; - -- long len = SSL_get_tlsext_status_ocsp_resp(BACKEND->handle, &p); -+ long len = SSL_get_tlsext_status_ocsp_resp(BACKEND->handle, &status); - -- if(!p) { -+ if(!status) { - failf(data, "No OCSP response received"); - result = CURLE_SSL_INVALIDCERTSTATUS; - goto end; - } -- -+ p = status; - rsp = d2i_OCSP_RESPONSE(NULL, &p, len); - if(!rsp) { - failf(data, "Invalid OCSP response"); --- -1.8.3.1 - diff --git a/openvms-fix-OpenSSL-discovery-on-VAX.patch b/openvms-fix-OpenSSL-discovery-on-VAX.patch deleted file mode 100644 index 65a690b44b4ca9ea3d37ea5be09c790f4de485b7..0000000000000000000000000000000000000000 --- a/openvms-fix-OpenSSL-discovery-on-VAX.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 35221ecb14e1bb6c201ddf05d051fd15d8632fb3 Mon Sep 17 00:00:00 2001 -From: Daniel Gustafsson -Date: Tue, 25 Dec 2018 22:27:29 +0100 -Subject: [PATCH 394/557] openvms: fix OpenSSL discovery on VAX - -The DCL code had a typo in one of the commands which would make the -OpenSSL discovery on VAX fail. The correct syntax is F$ENVIRONMENT. - -Closes #3407 -Reviewed-by: Viktor Szakats ---- - packages/vms/generate_config_vms_h_curl.com | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/packages/vms/generate_config_vms_h_curl.com b/packages/vms/generate_config_vms_h_curl.com -index 6e1b202..ef9efc2 100644 ---- a/packages/vms/generate_config_vms_h_curl.com -+++ b/packages/vms/generate_config_vms_h_curl.com -@@ -406,7 +406,7 @@ $ write cvh "#define USE_OPENSSL 1" - $ write cvh "#endif" - $ if arch_name .eqs. "VAX" - $ then --$ old_mes = f$enviroment("message") -+$ old_mes = f$environment("message") - $ set message/notext/nofaci/noseve/noident - $ search/output=nla0: ssl$include:*.h CONF_MFLAGS_IGNORE_MISSING_FILE - $ status = $severity --- -1.8.3.1 - diff --git a/schannel-on-connection-close-there-might-not-be-a-tr.patch b/schannel-on-connection-close-there-might-not-be-a-tr.patch deleted file mode 100644 index e6031cae20771a94807e0fc7c30d8078cf12b7a3..0000000000000000000000000000000000000000 --- a/schannel-on-connection-close-there-might-not-be-a-tr.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 6ee672970972a40603d8141293ca91c4d4854187 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 18 Jan 2019 11:21:25 +0100 -Subject: [PATCH 457/557] schannel: on connection close there might not be a - transfer - -Reported-by: Marcel Raad -Fixes #3412 -Closes #3483 ---- - lib/vtls/schannel.c | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c -index 56fd93e..ab7f83f 100644 ---- a/lib/vtls/schannel.c -+++ b/lib/vtls/schannel.c -@@ -7,7 +7,7 @@ - * - * Copyright (C) 2012 - 2016, Marc Hoersken, - * Copyright (C) 2012, Mark Salisbury, -- * Copyright (C) 2012 - 2018, Daniel Stenberg, , et al. -+ * Copyright (C) 2012 - 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 -@@ -2013,9 +2013,16 @@ static int Curl_schannel_shutdown(struct connectdata *conn, int sockindex) - - /* free SSPI Schannel API credential handle */ - if(BACKEND->cred) { -- Curl_ssl_sessionid_lock(conn); -+ /* -+ * When this function is called from Curl_schannel_close() the connection -+ * might not have an associated transfer so the check for conn->data is -+ * necessary. -+ */ -+ if(conn->data) -+ Curl_ssl_sessionid_lock(conn); - Curl_schannel_session_free(BACKEND->cred); -- Curl_ssl_sessionid_unlock(conn); -+ if(conn->data) -+ Curl_ssl_sessionid_unlock(conn); - BACKEND->cred = NULL; - } - --- -1.8.3.1 - diff --git a/secure-Openwall-URLs.patch b/secure-Openwall-URLs.patch deleted file mode 100644 index 62f68836fd48bbcee5f1906477b48d6bbb69e2e7..0000000000000000000000000000000000000000 --- a/secure-Openwall-URLs.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 420087bb306528530ebdbf7f7806312882b1adba Mon Sep 17 00:00:00 2001 -From: Viktor Szakats -Date: Fri, 14 Sep 2018 18:48:35 +0000 -Subject: [PATCH 059/557] secure Openwall URLs - ---- - docs/SECURITY-PROCESS.md | 2 +- - lib/md4.c | 2 +- - lib/md5.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/docs/SECURITY-PROCESS.md b/docs/SECURITY-PROCESS.md -index 6ef7757..6cae503 100644 ---- a/docs/SECURITY-PROCESS.md -+++ b/docs/SECURITY-PROCESS.md -@@ -61,7 +61,7 @@ announcement. - Figure out the CWE (Common Weakness Enumeration) number for the flaw. - - - Request a CVE number from -- [distros@openwall](http://oss-security.openwall.org/wiki/mailing-lists/distros) -+ [distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros) - when also informing and preparing them for the upcoming public security - vulnerability announcement - attach the advisory draft for information. Note - that 'distros' won't accept an embargo longer than 14 days and they do not -diff --git a/lib/md4.c b/lib/md4.c -index 2bb7dcc..d350602 100644 ---- a/lib/md4.c -+++ b/lib/md4.c -@@ -3,7 +3,7 @@ - * MD4 Message-Digest Algorithm (RFC 1320). - * - * Homepage: -- http://openwall.info/wiki/people/solar/software/public-domain-source-code/md4 -+ https://openwall.info/wiki/people/solar/software/public-domain-source-code/md4 - * - * Author: - * Alexander Peslyak, better known as Solar Designer -diff --git a/lib/md5.c b/lib/md5.c -index b819d39..45f45bb 100644 ---- a/lib/md5.c -+++ b/lib/md5.c -@@ -177,7 +177,7 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx) - * MD5 Message-Digest Algorithm (RFC 1321). - * - * Homepage: -- http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 -+ https://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 - * - * Author: - * Alexander Peslyak, better known as Solar Designer --- -1.8.3.1 - diff --git a/smb-fix-incorrect-path-in-request-if-connection-reus.patch b/smb-fix-incorrect-path-in-request-if-connection-reus.patch deleted file mode 100644 index 0fb8c007ec51ea8524a4e99415033f43e564a62c..0000000000000000000000000000000000000000 --- a/smb-fix-incorrect-path-in-request-if-connection-reus.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 462037ad487c0457451e66afd0cb50a9f70c0c28 Mon Sep 17 00:00:00 2001 -From: Matus Uzak -Date: Tue, 18 Dec 2018 22:28:20 +0100 -Subject: [PATCH 377/557] smb: fix incorrect path in request if connection - reused - -Follow-up to 09e401e01bf9. If connection gets reused, then data member -will be copied, but not the proto member. As a result, in smb_do(), -path has been set from the original proto.share data. - -Closes #3388 ---- - lib/smb.c | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -diff --git a/lib/smb.c b/lib/smb.c -index e4f266e..76c99a2 100644 ---- a/lib/smb.c -+++ b/lib/smb.c -@@ -947,15 +947,10 @@ static int smb_getsock(struct connectdata *conn, curl_socket_t *socks, - static CURLcode smb_do(struct connectdata *conn, bool *done) - { - struct smb_conn *smbc = &conn->proto.smbc; -- struct smb_request *req = conn->data->req.protop; - - *done = FALSE; - if(smbc->share) { -- req->path = strchr(smbc->share, '\0'); -- if(req->path) { -- req->path++; -- return CURLE_OK; -- } -+ return CURLE_OK; - } - return CURLE_URL_MALFORMAT; - } -@@ -964,6 +959,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn) - { - CURLcode result = CURLE_OK; - struct Curl_easy *data = conn->data; -+ struct smb_request *req = data->req.protop; - struct smb_conn *smbc = &conn->proto.smbc; - char *path; - char *slash; -@@ -992,6 +988,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn) - /* Parse the path for the file path converting any forward slashes into - backslashes */ - *slash++ = 0; -+ req->path = slash; - - for(; *slash; slash++) { - if(*slash == '/') --- -1.8.3.1 - diff --git a/ssh-free-the-session-on-init-failures.patch b/ssh-free-the-session-on-init-failures.patch deleted file mode 100644 index b2ec6a7fd71b2ccdcfb7d8a71a462d4a508c0f6c..0000000000000000000000000000000000000000 --- a/ssh-free-the-session-on-init-failures.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 5c8c310edb1e5dbf41c5d2d68622b63f7700488e Mon Sep 17 00:00:00 2001 -From: Daniel Gustafsson -Date: Fri, 26 Oct 2018 15:39:15 +0200 -Subject: [PATCH 211/557] ssh: free the session on init failures - -Ensure to clear the session object in case the libssh2 initialization -fails. - -It could be argued that the libssh2 error function should be called to -get a proper error message in this case. But since the only error path -in libssh2_knownhost_init() is memory a allocation failure it's safest -to avoid since the libssh2 error handling allocates memory. - -Closes #3179 -Reviewed-by: Daniel Stenberg ---- - lib/ssh.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/ssh.c b/lib/ssh.c -index a4b2ca4..da89619 100644 ---- a/lib/ssh.c -+++ b/lib/ssh.c -@@ -2926,7 +2926,7 @@ static CURLcode ssh_connect(struct connectdata *conn, bool *done) - int rc; - ssh->kh = libssh2_knownhost_init(ssh->ssh_session); - if(!ssh->kh) { -- /* eeek. TODO: free the ssh_session! */ -+ libssh2_session_free(ssh->ssh_session); - return CURLE_FAILED_INIT; - } - --- -1.8.3.1 - diff --git a/ssh-log-the-libssh2-error-message-when-ssh-session-s.patch b/ssh-log-the-libssh2-error-message-when-ssh-session-s.patch deleted file mode 100644 index 83cc33c8f03baf8bf2ca57757ca3c7dee62d46d6..0000000000000000000000000000000000000000 --- a/ssh-log-the-libssh2-error-message-when-ssh-session-s.patch +++ /dev/null @@ -1,36 +0,0 @@ -From b095a1ca63ab4962e7256616ff02607c5a77e089 Mon Sep 17 00:00:00 2001 -From: JDepooter -Date: Wed, 16 Jan 2019 17:18:20 -0800 -Subject: [PATCH 456/557] ssh: log the libssh2 error message when ssh session - startup fails - -When a ssh session startup fails, it is useful to know why it has -failed. This commit changes the message from: - "Failure establishing ssh session" -to something like this, for example: - "Failure establishing ssh session: -5, Unable to exchange encryption keys" - -Closes #3481 ---- - lib/ssh.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/lib/ssh.c b/lib/ssh.c -index f3b0a58..8c68adc 100644 ---- a/lib/ssh.c -+++ b/lib/ssh.c -@@ -667,7 +667,10 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block) - break; - } - if(rc) { -- failf(data, "Failure establishing ssh session"); -+ char *err_msg = NULL; -+ (void)libssh2_session_last_error(sshc->ssh_session, &err_msg, NULL, 0); -+ failf(data, "Failure establishing ssh session: %d, %s", rc, err_msg); -+ - state(conn, SSH_SESSION_FREE); - sshc->actualcode = CURLE_FAILED_INIT; - break; --- -1.8.3.1 - diff --git a/timediff-fix-math-for-unsigned-time_t.patch b/timediff-fix-math-for-unsigned-time_t.patch deleted file mode 100644 index 92773d1ff3e83c8d35485571d555120ffa4b23ea..0000000000000000000000000000000000000000 --- a/timediff-fix-math-for-unsigned-time_t.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 1a93153783c0ae626acf0b9041eeb2cb2fe7944a Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Tue, 8 Jan 2019 17:34:45 +0100 -Subject: [PATCH 423/557] timediff: fix math for unsigned time_t - -Bug: https://curl.haxx.se/mail/lib-2018-12/0088.html - -Closes #3449 ---- - lib/timeval.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/timeval.c b/lib/timeval.c -index 2d7c782..f1cbfe6 100644 ---- a/lib/timeval.c -+++ b/lib/timeval.c -@@ -163,7 +163,7 @@ struct curltime Curl_now(void) - */ - timediff_t Curl_timediff(struct curltime newer, struct curltime older) - { -- timediff_t diff = newer.tv_sec-older.tv_sec; -+ timediff_t diff = (timediff_t)newer.tv_sec-older.tv_sec; - if(diff >= (TIME_MAX/1000)) - return TIME_MAX; - else if(diff <= (TIME_MIN/1000)) -@@ -177,7 +177,7 @@ timediff_t Curl_timediff(struct curltime newer, struct curltime older) - */ - timediff_t Curl_timediff_us(struct curltime newer, struct curltime older) - { -- timediff_t diff = newer.tv_sec-older.tv_sec; -+ timediff_t diff = (timediff_t)newer.tv_sec-older.tv_sec; - if(diff >= (TIME_MAX/1000000)) - return TIME_MAX; - else if(diff <= (TIME_MIN/1000000)) --- -1.8.3.1 - diff --git a/tool_cb_hdr-handle-failure-of-rename.patch b/tool_cb_hdr-handle-failure-of-rename.patch deleted file mode 100644 index 2aaed2dc3e2af229be233a94b751c0b228f24877..0000000000000000000000000000000000000000 --- a/tool_cb_hdr-handle-failure-of-rename.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 6b6ba1dc29857f5eb4c31fed3d63619fea99d5f4 Mon Sep 17 00:00:00 2001 -From: Kamil Dudka -Date: Mon, 15 Oct 2018 16:03:46 +0200 -Subject: [PATCH 186/557] tool_cb_hdr: handle failure of rename() - -Detected by Coverity. - -Closes #3140 -Reviewed-by: Jay Satiro ---- - src/tool_cb_hdr.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/src/tool_cb_hdr.c b/src/tool_cb_hdr.c -index 983258c..7a7a836 100644 ---- a/src/tool_cb_hdr.c -+++ b/src/tool_cb_hdr.c -@@ -132,15 +132,24 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata) - filename = parse_filename(p, len); - if(filename) { - if(outs->stream) { -+ int rc; - /* already opened and possibly written to */ - if(outs->fopened) - fclose(outs->stream); - outs->stream = NULL; - - /* rename the initial file name to the new file name */ -- rename(outs->filename, filename); -+ rc = rename(outs->filename, filename); -+ if(rc != 0) { -+ warnf(outs->config->global, "Failed to rename %s -> %s: %s\n", -+ outs->filename, filename, strerror(errno)); -+ } - if(outs->alloc_filename) -- free(outs->filename); -+ Curl_safefree(outs->filename); -+ if(rc != 0) { -+ free(filename); -+ return failure; -+ } - } - outs->is_cd_filename = TRUE; - outs->s_isreg = TRUE; --- -1.8.3.1 - diff --git a/tool_cb_prg-avoid-integer-overflow.patch b/tool_cb_prg-avoid-integer-overflow.patch deleted file mode 100644 index c6f42c8abdd9e89df98ae683841bd3744804241f..0000000000000000000000000000000000000000 --- a/tool_cb_prg-avoid-integer-overflow.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 61faa0b420c236480bc9ef6fd52b4ecc1e0f8d17 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Fri, 11 Jan 2019 00:25:46 +0100 -Subject: [PATCH 437/557] tool_cb_prg: avoid integer overflow - -When calculating the progress bar width. - -Reported-by: Peng Li -Fixes #3456 -Closes #3458 ---- - src/tool_cb_prg.c | 19 ++++++++++++++++--- - 1 file changed, 16 insertions(+), 3 deletions(-) - -diff --git a/src/tool_cb_prg.c b/src/tool_cb_prg.c -index 15ff5b2..0539e98 100644 ---- a/src/tool_cb_prg.c -+++ b/src/tool_cb_prg.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 -@@ -106,6 +106,13 @@ static void fly(struct ProgressData *bar, bool moved) - - #define MAX_BARLENGTH 256 - -+#if (SIZEOF_CURL_OFF_T == 4) -+# define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFF) -+#else -+ /* assume CURL_SIZEOF_CURL_OFF_T == 8 */ -+# define CURL_OFF_T_MAX CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF) -+#endif -+ - int tool_progress_cb(void *clientp, - curl_off_t dltotal, curl_off_t dlnow, - curl_off_t ultotal, curl_off_t ulnow) -@@ -119,10 +126,16 @@ int tool_progress_cb(void *clientp, - curl_off_t point; - - /* expected transfer size */ -- total = dltotal + ultotal + bar->initial_size; -+ if((CURL_OFF_T_MAX - bar->initial_size) < (dltotal + ultotal)) -+ total = CURL_OFF_T_MAX; -+ else -+ total = dltotal + ultotal + bar->initial_size; - - /* we've come this far */ -- point = dlnow + ulnow + bar->initial_size; -+ if((CURL_OFF_T_MAX - bar->initial_size) < (dlnow + ulnow)) -+ point = CURL_OFF_T_MAX; -+ else -+ point = dlnow + ulnow + bar->initial_size; - - if(bar->calls) { - /* after first call... */ --- -1.8.3.1 - diff --git a/urlglob-improve-error-message.patch b/urlglob-improve-error-message.patch deleted file mode 100644 index 5d7db074c83fe580b4b8b15ee1645453e0dfab29..0000000000000000000000000000000000000000 --- a/urlglob-improve-error-message.patch +++ /dev/null @@ -1,71 +0,0 @@ -From ddb06ffc0f680322ce746c6e8d524dee4de84955 Mon Sep 17 00:00:00 2001 -From: Daniel Stenberg -Date: Tue, 11 Sep 2018 22:03:47 +0200 -Subject: [PATCH 045/557] urlglob: improve error message - -to help user understand what the problem is - -Reported-by: Daniel Shahaf - -Fixes #2763 -Closes #2977 ---- - src/tool_urlglob.c | 11 ++++++----- - tests/data/test75 | 4 +++- - 2 files changed, 9 insertions(+), 6 deletions(-) - -diff --git a/src/tool_urlglob.c b/src/tool_urlglob.c -index cb87706..e4a5c33 100644 ---- a/src/tool_urlglob.c -+++ b/src/tool_urlglob.c -@@ -5,7 +5,7 @@ - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * -- * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. -+ * Copyright (C) 1998 - 2018, 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 -@@ -459,18 +459,19 @@ CURLcode glob_url(URLGlob **glob, char *url, unsigned long *urlnum, - *urlnum = amount; - else { - if(error && glob_expand->error) { -- char text[128]; -+ char text[512]; - const char *t; - if(glob_expand->pos) { -- snprintf(text, sizeof(text), "%s in column %zu", glob_expand->error, -- glob_expand->pos); -+ snprintf(text, sizeof(text), "%s in URL position %zu:\n%s\n%*s^", -+ glob_expand->error, -+ glob_expand->pos, url, glob_expand->pos - 1, " "); - t = text; - } - else - t = glob_expand->error; - - /* send error description to the error-stream */ -- fprintf(error, "curl: (%d) [globbing] %s\n", res, t); -+ fprintf(error, "curl: (%d) %s\n", res, t); - } - /* it failed, we cleanup */ - glob_cleanup(glob_expand); -diff --git a/tests/data/test75 b/tests/data/test75 -index d8836b9..115963d 100644 ---- a/tests/data/test75 -+++ b/tests/data/test75 -@@ -44,7 +44,9 @@ perl %SRCDIR/libtest/test75.pl http://%HOSTIP:%HTTPPORT/ 22 - 3 - - --curl: (3) [globbing] bad range in column 47 -+curl: (3) bad range in URL position 47: -+http://a-site-never-accessed.example.org/[2-1] -+ ^ - - - --- -1.8.3.1 - diff --git a/wolfssl-Perform-cleanup.patch b/wolfssl-Perform-cleanup.patch deleted file mode 100644 index c008c038be6d374fcb1ee742b428716eaee9e3a7..0000000000000000000000000000000000000000 --- a/wolfssl-Perform-cleanup.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 982a897b4bc22fa49da2501af8242e8c8ce1792c Mon Sep 17 00:00:00 2001 -From: David Garske -Date: Wed, 19 Dec 2018 08:30:44 -0800 -Subject: [PATCH 381/557] wolfssl: Perform cleanup - -This adds a cleanup callback for cyassl. Resolves possible memory leak -when using ECC fixed point cache. - -Closes #3395 -Reviewed-by: Daniel Stenberg -Reviewed-by: Daniel Gustafsson ---- - lib/vtls/cyassl.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/lib/vtls/cyassl.c b/lib/vtls/cyassl.c -index 0d45afb..ea96cf6 100644 ---- a/lib/vtls/cyassl.c -+++ b/lib/vtls/cyassl.c -@@ -794,6 +794,12 @@ static int Curl_cyassl_init(void) - } - - -+static void Curl_cyassl_cleanup(void) -+{ -+ CyaSSL_Cleanup(); -+} -+ -+ - static bool Curl_cyassl_data_pending(const struct connectdata* conn, - int connindex) - { -@@ -1004,7 +1010,7 @@ const struct Curl_ssl Curl_ssl_cyassl = { - sizeof(struct ssl_backend_data), - - Curl_cyassl_init, /* init */ -- Curl_none_cleanup, /* cleanup */ -+ Curl_cyassl_cleanup, /* cleanup */ - Curl_cyassl_version, /* version */ - Curl_none_check_cxn, /* check_cxn */ - Curl_cyassl_shutdown, /* shutdown */ --- -1.8.3.1 - diff --git a/zsh.pl-escape-character.patch b/zsh.pl-escape-character.patch deleted file mode 100644 index b84aa8693de49236c36205f3c394ad593747d45a..0000000000000000000000000000000000000000 --- a/zsh.pl-escape-character.patch +++ /dev/null @@ -1,38 +0,0 @@ -From b3cc8017b7364f588365be2b2629c49c142efdb7 Mon Sep 17 00:00:00 2001 -From: Alessandro Ghedini -Date: Tue, 5 Feb 2019 21:06:26 +0000 -Subject: [PATCH 492/557] zsh.pl: escape ':' character - -':' is interpreted as separator by zsh, so if used as part of the argument -or option's description it needs to be escaped. - -The problem can be reproduced as follows: - - % curl --reso - % curl -E - -Bug: https://bugs.debian.org/921452 ---- - scripts/zsh.pl | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/scripts/zsh.pl b/scripts/zsh.pl -index 941b322..0f9cbec 100755 ---- a/scripts/zsh.pl -+++ b/scripts/zsh.pl -@@ -45,9 +45,12 @@ sub parse_main_opts { - - my $option = ''; - -+ $arg =~ s/\:/\\\:/g if defined $arg; -+ - $desc =~ s/'/'\\''/g if defined $desc; - $desc =~ s/\[/\\\[/g if defined $desc; - $desc =~ s/\]/\\\]/g if defined $desc; -+ $desc =~ s/\:/\\\:/g if defined $desc; - - $option .= '{' . trim($short) . ',' if defined $short; - $option .= trim($long) if defined $long; --- -1.8.3.1 -