Browse Source

Update contrib/libs/curl to 7.85.0

robot-contrib 2 years ago
parent
commit
f904cb56d9

+ 359 - 268
contrib/libs/curl/RELEASE-NOTES

@@ -1,147 +1,184 @@
-curl and libcurl 7.84.0
+curl and libcurl 7.85.0
 
- Public curl releases:         209
+ Public curl releases:         210
  Command line options:         248
- curl_easy_setopt() options:   297
+ curl_easy_setopt() options:   299
  Public functions in libcurl:  88
- Contributors:                 2652
+ Contributors:                 2690
 
 This release includes the following changes:
 
- o curl: add --rate to set max request rate per time unit [69]
- o curl: deprecate --random-file and --egd-file [12]
- o curl_version_info: add CURL_VERSION_THREADSAFE [100]
- o CURLINFO_CAPATH/CAINFO: get the default CA paths from libcurl [9]
- o lib: make curl_global_init() threadsafe when possible [101]
- o libssh2: add CURLOPT_SSH_HOSTKEYFUNCTION [78]
- o opts: deprecate RANDOM_FILE and EGDSOCKET [13]
- o socks: support unix sockets for socks proxy [2]
+ o quic: add support via wolfSSL [142]
+ o schannel: Add TLS 1.3 support [96]
+ o setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR [30]
 
 This release includes the following bugfixes:
 
- o aws-sigv4: fix potentional NULL pointer arithmetic [48]
- o bindlocal: don't use a random port if port number would wrap [14]
- o c-hyper: mark status line as status for Curl_client_write() [58]
- o ci: avoid `cmake -Hpath` [114]
- o CI: bump FreeBSD 13.0 to 13.1 [127]
- o ci: update github actions [36]
- o cmake: add libpsl support [3]
- o cmake: do not add libcurl.rc to the static libcurl library [53]
- o cmake: enable curl.rc for all Windows targets [55]
- o cmake: fix detecting libidn2 [56]
- o cmake: support adding a suffix to the OS value [54]
- o configure: skip libidn2 detection when winidn is used [89]
- o configure: use the SED value to invoke sed [28]
- o configure: warn about rustls being experimental [103]
- o content_encoding: return error on too many compression steps [106]
- o cookie: address secure domain overlay [7]
- o cookie: apply limits [83]
- o copyright.pl: parse and use .reuse/dep5 for skips [105]
- o copyright: make repository REUSE compliant [119]
- o curl.1: add a few see also --tls-max [52]
- o curl.1: mention exit code zero too [44]
- o curl: re-enable --no-remote-name [31]
- o curl_easy_pause.3: remove explanation of progress function [97]
- o curl_getdate.3: document that some illegal dates pass through [34]
- o Curl_parsenetrc: don't access local pwbuf outside of scope [27]
- o curl_url_set.3: clarify by default using known schemes only [120]
- o CURLOPT_ALTSVC.3: document the file format [118]
- o CURLOPT_FILETIME.3: fix the protocols this works with
- o CURLOPT_HTTPHEADER.3: improve comment in example [66]
- o CURLOPT_NETRC.3: document the .netrc file format
- o CURLOPT_PORT.3: We discourage using this option [92]
- o CURLOPT_RANGE.3: remove ranged upload advice [99]
- o digest: added detection of more syntax error in server headers [81]
- o digest: tolerate missing "realm" [80]
- o digest: unquote realm and nonce before processing [82]
- o DISABLED: disable 1021 for hyper again
- o docs/cmdline-opts: add copyright and license identifier to each file [112]
- o docs/CONTRIBUTE.md: document the 'needs-votes' concept [79]
- o docs: clarify data replacement policy for MIME API [16]
- o doh: remove UNITTEST macro definition [67]
- o examples/crawler.c: use the curl license [73]
- o examples: remove fopen.c and rtsp.c [76]
- o FAQ: Clarify Windows double quote usage [42]
- o fopen: add Curl_fopen() for better overwriting of files [72]
- o ftp: restore protocol state after http proxy CONNECT [110]
- o ftp: when failing to do a secure GSSAPI login, fail hard [62]
- o GHA/hyper: enable debug in the build
- o gssapi: improve handling of errors from gss_display_status [45]
- o gssapi: initialize gss_buffer_desc strings
- o headers api: remove EXPERIMENTAL tag [35]
- o http2: always debug print stream id in decimal with %u [46]
- o http2: reject overly many push-promise headers [63]
- o http: restore header folding behavior [64]
- o hyper: use 'alt-used' [71]
- o krb5: return error properly on decode errors [107]
- o lib: make more protocol specific struct fields #ifdefed [84]
- o libcurl-security.3: add "Secrets in memory" [30]
- o libcurl-security.3: document CRLF header injection [98]
- o libssh: skip the fake-close when libssh does the right thing [102]
- o links: update dead links to the curl-wiki [21]
- o log2changes: do not indent empty lines [ci skip] [37]
- o macos9: remove partial support [22]
- o Makefile.am: fix portability issues [1]
- o Makefile.m32: delete obsolete options, improve -On [ci skip] [65]
- o Makefile.m32: delete two obsolete OpenSSL options [ci skip] [39]
- o Makefile.m32: stop forcing XP target with ipv6 enabled [ci skip] [116]
- o max-time.d: clarify max-time sets max transfer time [70]
- o mprintf: ignore clang non-literal format string [19]
- o netrc: check %USERPROFILE% as well on Windows [77]
- o netrc: support quoted strings [33]
- o ngtcp2: allow curl to send larger UDP datagrams [29]
- o ngtcp2: correct use of ngtcp2 and nghttp3 signed integer types [25]
- o ngtcp2: enable Linux GSO [91]
- o ngtcp2: extend QUIC transport parameters buffer [4]
- o ngtcp2: fix alert_read_func return value [26]
- o ngtcp2: fix typo in preprocessor condition [121]
- o ngtcp2: handle error from ngtcp2_conn_submit_crypto_data [5]
- o ngtcp2: send appropriate connection close error code [6]
- o ngtcp2: support boringssl crypto backend [17]
- o ngtcp2: use helper funcs to simplify TLS handshake integration [68]
- o ntlm: provide a fixed fake host name [32]
- o projects: fix third-party SSL library build paths for Visual Studio [125]
- o quic: add Curl_quic_idle [18]
- o quiche: support ca-fallback [49]
- o rand: stop detecting /dev/urandom in cross-builds [113]
- o remote-name.d: mention --output-dir [88]
- o runtests.pl: add the --repeat parameter to the --help output [43]
- o runtests: fix skipping tests not done event-based [95]
- o runtests: skip starting the ssh server if user name is lacking [104]
- o scripts/copyright.pl: fix the exclusion to not ignore man pages [75]
- o sectransp: check for a function defined when __BLOCKS__ is undefined [20]
- o select: return error from "lethal" poll/select errors [93]
- o server/sws: support spaces in the HTTP request path
- o speed-limit/time.d: mention these affect transfers in either direction [74]
- o strcase: some optimisations [8]
- o test 2081: add a valid reply for the second request [60]
- o test 675: add missing CR so the test passes when run through Privoxy [61]
- o test414: add the '--resolve' keyword [23]
- o test681: verify --no-remote-name [90]
- o tests 266, 116 and 1540: add a small write delay
- o tests/data/test1501: kill ftp server after slow LIST response [59]
- o tests/getpart: fix getpartattr to work with "data" and "data2"
- o tests/server/sws.c: change the HTTP writedelay unit to milliseconds [47]
- o test{440,441,493,977}: add "HTTP proxy" keywords [40]
- o tool_getparam: fix --parallel-max maximum value constraint [51]
- o tool_operate: make sure --fail-with-body works with --retry [24]
- o transfer: fix potential NULL pointer dereference [15]
- o transfer: maintain --path-as-is after redirects [96]
- o transfer: upload performance; avoid tiny send [124]
- o url: free old conn better on reuse [41]
- o url: remove redundant #ifdefs in allocate_conn()
- o url: URL encode the path when extracted, if spaces were set
- o urlapi: make curl_url_set(url, CURLUPART_URL, NULL, 0) clear all parts [126]
- o urlapi: support CURLU_URLENCODE for curl_url_get()
- o urldata: reduce size of a few struct fields [86]
- o urldata: remove three unused booleans from struct UserDefined [87]
- o urldata: store tcp_keepidle and tcp_keepintvl as ints [85]
- o version: allow stricmp() for sorting the feature list [57]
- o vtls: make curl_global_sslset thread-safe [94]
- o wolfssh.h: removed [10]
- o wolfssl: correct the failf() message when a handle can't be made [38]
- o wolfSSL: explicitly use compatibility layer [11]
- o x509asn1: mark msnprintf return as unchecked [50]
+ o amigaos: fix threaded resolver on AmigaOS 4.x [133]
+ o amissl: allow AmiSSL to be used with AmigaOS 4.x builds [115]
+ o amissl: make AmiSSL v5 a minimum requirement [117]
+ o asyn-ares: make a single alloc out of hostname + async data [123]
+ o asyn-thread: fix socket leak on OOM [128]
+ o asyn-thread: make getaddrinfo_complete return CURLcode [53]
+ o base64: base64url encoding has no padding [41]
+ o BUGS.md: improve language [62]
+ o build: improve OS string in CMake and `config-win32.h` [15]
+ o cert.d: clarify that escape character works for file paths [161]
+ o cirrus.yml: replace py38-pip with py39-pip [63]
+ o cirrus/freebsd-ci: bootstrap the pip installer [104]
+ o cmake: add detection of threadsafe feature [163]
+ o cmake: do not force Windows target versions [28]
+ o cmake: fix build for mingw cross compile [33]
+ o cmake: link curl to its dependencies with PRIVATE [57]
+ o cmake: remove APPEND in export(TARGETS) [58]
+ o cmake: set feature PSL if present [168]
+ o cmake: support ngtcp2 boringssl backend [18]
+ o cmdline-opts/gen.pl: improve performance [97]
+ o config: remove the check for and use of SIZEOF_SHORT [129]
+ o configure: -pthread not available on AmigaOS 4.x [118]
+ o configure: check for the stdatomic.h header in configure [7]
+ o configure: fix --disable-headers-api [55]
+ o configure: fix broken m4 syntax in TLS options [145]
+ o configure: fixup bsdsocket detection code for AmigaOS 4.x [110]
+ o configure: if asked to use TLS, fail if no TLS lib was detected [156]
+ o configure: introduce CURL_SIZEOF [130]
+ o connect: add quic connection information [100]
+ o connect: close the happy eyeballs loser connection when using QUIC [109]
+ o connect: revert the use of IP*_RECVERR [102]
+ o connect: set socktype/protocol correctly [114]
+ o cookie: reject cookies with "control bytes" [152]
+ o cookie: treat a blank domain in Set-Cookie: as non-existing [40]
+ o cookie: use %zu to infof() for size_t values [26]
+ o curl-compilers.m4: make icc use -diag* options and disable two warnings [84]
+ o curl-config: quote directories with potential space [132]
+ o curl-confopts: remove leftover AC_REQUIREs [91]
+ o curl-functions.m4: check whether atomics can link [86]
+ o curl-wolfssl.m4: add options header when building test code [87]
+ o curl.h: CURLE_CONV_FAILED is obsoleted [4]
+ o curl.h: include <sys/select.h> on SunOS [151]
+ o curl: output warning when a cookie is dropped due to size [5]
+ o curl: writeout: fix repeated header outputs [47]
+ o Curl_close: call Curl_resolver_cancel to avoid memory-leak [124]
+ o curl_easy_header: Add CURLH_PSEUDO to sanity check [94]
+ o curl_mime_data.3: polish the wording [6]
+ o curl_multi_timeout.3: clarify usage [48]
+ o CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples [121]
+ o CURLOPT_BUFFERSIZE.3: add upload buffersize to see also [159]
+ o CURLOPT_CONNECT_ONLY.3: clarify multi API use [64]
+ o CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name [16]
+ o digest: fix memory leak, fix not quoted 'opaque' [66]
+ o digest: fix missing increment of 'nc' value for auth-int [39]
+ o digest: pass over leading spaces in qop values [119]
+ o digest: reject broken header with session protocol but without qop [120]
+ o docs/cmdline-opts/gen.pl: encode leading single and double quotes [138]
+ o docs/cmdline-opts: fix example and categories for --form-escape [125]
+ o docs/cmdline: mark fail and fail-with-body as mutually exclusive [98]
+ o docs: add dns category to --resolve [95]
+ o docs: explain curl_easy_escape/unescape curl handle is ignored [23]
+ o docs: remove him/her/he/she from documentation [103]
+ o doh: move doh related struct definitions to doh.h [45]
+ o doh: use https protocol by default [51]
+ o easy_lock.h: include sched.h if available to fix build [13]
+ o easy_lock.h: use __asm__ instead of asm to fix build [11]
+ o easy_lock: fix build for mingw [34]
+ o easy_lock: fix build with icc [54]
+ o easy_lock: fix the #ifdef conditional for ia32_pause [8]
+ o easy_lock: switch to using atomic_int instead of bool [9]
+ o easyoptions: fix icc warning [42]
+ o escape: remove outdated comment [25]
+ o examples/curlx.c: remove [150]
+ o file: add handling of native AmigaOS paths [108]
+ o file: fix icc enumerated type mixed with another type warning [92]
+ o ftp: use a correct expire ID for timer expiry [88]
+ o getinfo: return better error on NULL as first argument [21]
+ o GHA: add two Intel compiler CI jobs [85]
+ o GHA: move libressl CI from zuul to GitHub [144]
+ o gha: move over ngtcp2-gnutls CI job from zuul [162]
+ o GHA: mv CI torture test from Zuul [135]
+ o h2h3: fix overriding the 'TE: Trailers' header [43]
+ o hostip: resolve *.localhost to 127.0.0.1/::1 [127]
+ o HTTP3.md: update to msh3 v0.4.0 [126]
+ o http: typecast the httpreq assignment to avoid icc compiler warning [76]
+ o http_aws_sigv4.c: remove two unusued includes [36]
+ o http_chunks: remove an assign + typecast [82]
+ o hyper: customize test1274 to how hyper unfolds headers [131]
+ o hyper: enable obs-folded multiline headers [101]
+ o hyper: use wakers for curl pause/resume [2]
+ o imap: use ISALNUM() for alphanumeric checks [134]
+ o ldap: adapt to conn->port now being an 'int' [106]
+ o lib/curl_path.c: add ISC to license expression [1]
+ o lib3026: reduce the number of threads to 100 [44]
+ o libcurl-security.3: fix typo on macro "SH_" [12]
+ o libssh2: make atime/mtime date overflow return error [148]
+ o libssh2: provide symlink name in SFTP dir listing [155]
+ o libssh: ignore deprecation warnings [157]
+ o libssh: make atime/mtime date overflow return error [149]
+ o Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip] [17]
+ o Makefile.m32: add `NGTCP2_LIBS` option [ci skip] [38]
+ o makefile.m32: add support for custom ARCH [ci skip] [27]
+ o Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip] [141]
+ o Makefile.m32: do not set the libcurl.rc debug flag [ci skip] [3]
+ o Makefile.m32: stop trying to build libcares.a [ci skip] [46]
+ o memdebug: add annotation attributes [143]
+ o mprintf: fix *dyn_vprintf() when out-of-memory [90]
+ o mprintf: make dprintf_formatf never return negative [49]
+ o msh3: fix the QUIC disconnect function [107]
+ o multi: fix the return code from Curl_pgrsDone() [80]
+ o multi: have curl_multi_remove_handle close CONNECT_ONLY transfer [136]
+ o multi: use a pipe instead of a socketpair on apple platforms [154]
+ o multi: use larger dns hash table for multi interface [140]
+ o multi_wait: fix and improve Curl_poll error handling on Windows [146]
+ o multi_wait: fix skipping to populate revents for extra_fds [147]
+ o netrc.d: remove spurious quote [37]
+ o netrc: Use the password from lines without login [166]
+ o ngtcp2: Fix build error due to change in nghttp3 prototypes [61]
+ o ngtcp2: fix incompatible function pointer types [10]
+ o ngtcp2: Fix missing initialization of nghttp3_nv.flags [31]
+ o ngtcp2: fix stall or busy loop on STOP_SENDING with upload data [19]
+ o ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks [59]
+ o openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL [24]
+ o openssl: add cert path in error message [160]
+ o openssl: add details to "unable to set client certificate" error [116]
+ o openssl: fix BoringSSL symbol conflicts with LDAP and Schannel [52]
+ o quiche: fix build failure [99]
+ o select: do not return fatal error on EINTR from poll() [32]
+ o sendf: fix paused header writes since after the header API [89]
+ o sendf: make Curl_debug a void function [81]
+ o sendf: skip storing HTTP headers if HTTP disabled [73]
+ o sendf: store the header type in an usigned char to avoid icc warnings [79]
+ o splay: avoid using -1 in unsigned variable [78]
+ o test3026: add support for Windows using native Win32 threads [65]
+ o test3026: require 'threadsafe' [56]
+ o test44[2-4]: add '--resolve' to the keywords [122]
+ o tests/server/sockfilt.c: avoid race condition without a mutex [139]
+ o tests: fix http2 tests to use CRLF headers [153]
+ o tests: several enumerated type cleanups [67]
+ o THANKS: merged two entries for Evgeny Grin
+ o tidy-up: delete unused build configuration macros [93]
+ o tool: reintroduce set file comment code for AmigaOS [111]
+ o tool_cfgable: make 'synthetic_error' a plain bool [70]
+ o tool_formparse: fix variable may be used before its value is set [72]
+ o tool_getparam: make --doh-url "" switch it off [60]
+ o tool_getparam: repair cleanarg [22]
+ o tool_operate: better cleanup of easy handle in exit path [20]
+ o tool_paramhlp: fix "enumerated type mixed with another type" [68]
+ o tool_paramhlp: make check_protocol return ParameterError [71]
+ o tool_progress: avoid division by zero in parallel progress meter [35]
+ o tool_writeout: fix enumerated type mixed with another type [69]
+ o trace: 0x7F character is non-printable [50]
+ o unit1303: four tests should have TRUE for 'connecting' [158]
+ o url: enumerated type mixed with another type [74]
+ o url: really use the user provided in the url when netrc entry exists [165]
+ o url: reject URLs with hostnames longer than 65535 bytes [137]
+ o url: treat missing usernames in netrc as empty [167]
+ o urldata: change second proxytype field to unsigned char to match [75]
+ o urldata: make 'negnpn' use less storage [112]
+ o urldata: make state.httpreq an unsigned char [77]
+ o urldata: make three *_proto struct fields smaller [113]
+ o urldata: move smaller fields down in connectdata struct [105]
+ o urldata: reduce size of several struct fields [14]
+ o vtls: make Curl_ssl_backend() return the enum type curl_sslbackend [83]
+ o windows: improve random source [29]
 
 This release includes the following known bugs:
 
@@ -150,139 +187,193 @@ This release includes the following known bugs:
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
-  Andrea Pappacoda, Balakrishnan Balasubramanian, Boris Verkhovskiy,
-  Carlo Alberto, Christian Weisgerber, Dan Fandrich, Daniel Gustafsson,
-  Daniel Stenberg, Egor Pugin, Emanuele Torre, Emil Engler, Evgeny Grin,
-  Fabian Keil, Frank Gevaerts, Frazer Smith, Gisle Vanem, Glenn Strauss,
-  Gregor Jasny, Harry Sintonen, Illarion Taev, ImpatientHippo on GitHub,
-  Jakub Bochenski, Kamil Dudka, Karlson2k on github, KotlinIsland on github,
-  Ladar Levison, Marcel Raad, Marc Hörsken, Marcus T, Max Mehl, michael musset,
-  Nick Zitzmann, Nuru on github, Patrick Monnerat, Petr Pisar, Philip H,
-  Pierrick Charron, Ray Satiro, Ricardo M. Correia, Simon Berger,
-  Stefan Eissing, Steve Holme, Tatsuhiro Tsujikawa, Thomas Guillem, Tom Eccles,
-  Viktor Szakats, Vincent Torri, vvb2060 on github, Willem Hoek,
-  Wolf Vollprecht, Elms
-  (51 contributors)
+  Adam Sampson, Alessandro Ghedini, Alexandre Bury, Andreas Sommer,
+  Andrew Lambert, Axel Chong, Brad Forschinger, Brian Carpenter,
+  Cering on github, Chris Paulson-Ellis, Chris Young, Daniel Katz,
+  Daniel Stenberg, David Carlier, dEajL3kA on github, Domen Kožar,
+  Dominik Thalhammer, Don J Olmstead, Dustin Howett, Emanuele Torre,
+  Emil Engler, Érico Nogueira Rolim, Even Rouault, Evgeny Grin (Karlson2k),
+  Fabian Fischer, Fabian Keil, Gisle Vanem, Gwen Shapira, Harry Sintonen,
+  highmtworks on github, Ivan Tsybulin, Jacob Tolar, Jakub Zakrzewski,
+  Jilayne Lovejoy, Joshua Root, jurisuk on github, jvvprasad78 on github,
+  Kai Pastor, Litter White, lwthiker on github, Marcel Raad, Marc Hörsken,
+  Marco Kamner, MasterInQuestion on github, Matthew Thompson, Maxim Ivanov,
+  Michael Trebilcock, Michał Antoniak, Nao Yonashiro, Nick Banks,
+  Oliver Roberts, opensignature on github, Orgad Shaneh, Patrick Monnerat,
+  Philip H, privetryan on github, Ray Satiro, rcombs on github, Rosen Penev,
+  Ryan Schmidt, Ryan Sleevi, rzrymiak on github, Samuel Henrique,
+  Sean McArthur, Sergey Ogryzkov, Somnath Kundu, Stefan Eissing,
+  Sukanya Hanumanthu, Tatsuhiro Tsujikawa, Ted Lyngmo, TheKnarf on github,
+  Thomas Weißschuh, Tobias Nygren, Viktor Szakats, vlubart on github, Wu Zheng,
+  Wyatt O'Day, Xiaoke Wang, yiyuaner on github
+  (79 contributors)
 
 References to bug reports and discussions on issues:
 
- [1] = https://curl.se/mail/lib-2022-05/0024.html
- [2] = https://curl.se/bug/?i=8668
- [3] = https://curl.se/bug/?i=8865
- [4] = https://curl.se/bug/?i=8872
- [5] = https://curl.se/bug/?i=8871
- [6] = https://curl.se/bug/?i=8870
- [7] = https://hackerone.com/reports/1560324
- [8] = https://curl.se/bug/?i=8875
- [9] = https://curl.se/bug/?i=8888
- [10] = https://curl.se/bug/?i=8863
- [11] = https://curl.se/bug/?i=8864
- [12] = https://curl.se/bug/?i=8670
- [13] = https://curl.se/bug/?i=8670
- [14] = https://curl.se/bug/?i=8862
- [15] = https://curl.se/bug/?i=8857
- [16] = https://curl.se/bug/?i=8860
- [17] = https://curl.se/bug/?i=8789
- [18] = https://curl.se/bug/?i=8698
- [19] = https://curl.se/bug/?i=8740
- [20] = https://curl.se/bug/?i=8846
- [21] = https://curl.se/bug/?i=8897
- [22] = https://curl.se/bug/?i=8836
- [23] = https://curl.se/bug/?i=8959
- [24] = https://curl.se/bug/?i=8845
- [25] = https://curl.se/bug/?i=8851
- [26] = https://curl.se/bug/?i=8852
- [27] = https://curl.se/bug/?i=8850
- [28] = https://curl.se/bug/?i=8891
- [29] = https://curl.se/bug/?i=8883
- [30] = https://curl.se/bug/?i=8881
- [31] = https://curl.se/bug/?i=8931
- [32] = https://curl.se/bug/?i=8859
- [33] = https://curl.se/bug/?i=8908
- [34] = https://curl.se/bug/?i=8938
- [35] = https://curl.se/bug/?i=8900
- [36] = https://curl.se/bug/?i=8843
- [37] = https://curl.se/bug/?i=8887
- [38] = https://curl.se/bug/?i=8885
- [39] = https://curl.se/bug/?i=8884
- [40] = https://curl.se/bug/?i=8959
- [41] = https://curl.se/bug/?i=8841
- [42] = https://curl.se/bug/?i=8823
- [43] = https://curl.se/bug/?i=8959
- [44] = https://curl.se/bug/?i=8833
- [45] = https://curl.se/bug/?i=8832
- [46] = https://curl.se/bug/?i=8808
- [47] = https://curl.se/bug/?i=8827
- [48] = https://curl.se/bug/?i=8814
- [49] = https://curl.se/bug/?i=8696
- [50] = https://curl.se/bug/?i=8831
- [51] = https://curl.se/bug/?i=8930
- [52] = https://curl.se/bug/?i=8929
- [53] = https://curl.se/bug/?i=8918
- [54] = https://curl.se/bug/?i=8919
- [55] = https://curl.se/bug/?i=8918
- [56] = https://curl.se/bug/?i=8917
- [57] = https://curl.se/bug/?i=8916
- [58] = https://curl.se/bug/?i=8894
- [59] = https://curl.se/bug/?i=8907
- [60] = https://curl.se/bug/?i=8959
- [61] = https://curl.se/bug/?i=8959
- [62] = https://hackerone.com/reports/1590102
- [63] = https://hackerone.com/reports/1589847
- [64] = https://curl.se/bug/?i=8844
- [65] = https://curl.se/bug/?i=8904
- [66] = https://curl.se/bug/?i=9025
- [67] = https://curl.se/bug/?i=8902
- [68] = https://curl.se/bug/?i=8968
- [69] = https://curl.se/bug/?i=8671
- [70] = https://curl.se/bug/?i=8877
- [71] = https://curl.se/bug/?i=8898
- [72] = https://curl.se/docs/CVE-2022-32207.html
- [73] = https://curl.se/bug/?i=8950
- [74] = https://curl.se/bug/?i=8948
- [75] = https://curl.se/bug/?i=8952
- [76] = https://curl.se/bug/?i=8949
- [77] = https://curl.se/bug/?i=8855
- [78] = https://curl.se/bug/?i=7959
- [79] = https://curl.se/bug/?i=8910
- [80] = https://curl.se/bug/?i=8912
- [81] = https://curl.se/bug/?i=8912
- [82] = https://curl.se/bug/?i=8912
- [83] = https://curl.se/docs/CVE-2022-32205.html
- [84] = https://curl.se/bug/?i=8944
- [85] = https://curl.se/bug/?i=8940
- [86] = https://curl.se/bug/?i=8940
- [87] = https://curl.se/bug/?i=8940
- [88] = https://curl.se/bug/?i=8945
- [89] = https://curl.se/bug/?i=8934
- [90] = https://curl.se/bug/?i=8942
- [91] = https://curl.se/bug/?i=8909
- [92] = https://curl.se/bug/?i=8941
- [93] = https://curl.se/bug/?i=8921
- [94] = https://curl.se/bug/?i=9016
- [95] = https://curl.se/bug/?i=8977
- [96] = https://curl.se/bug/?i=8974
- [97] = https://curl.se/bug/?i=9015
- [98] = https://curl.se/bug/?i=8964
- [99] = https://curl.se/bug/?i=8969
- [100] = https://curl.se/bug/?i=8680
- [101] = https://curl.se/bug/?i=8680
- [102] = https://curl.se/bug/?i=9021
- [103] = https://curl.se/bug/?i=9019
- [104] = https://curl.se/bug/?i=9013
- [105] = https://curl.se/bug/?i=9006
- [106] = https://curl.se/docs/CVE-2022-32206.html
- [107] = https://curl.se/docs/CVE-2022-32208.html
- [110] = https://curl.se/bug/?i=8737
- [112] = https://curl.se/bug/?i=9002
- [113] = https://curl.se/bug/?i=9038
- [114] = https://curl.se/bug/?i=9008
- [116] = https://curl.se/bug/?i=9035
- [118] = https://curl.se/bug/?i=9033
- [119] = https://curl.se/bug/?i=8869
- [120] = https://curl.se/bug/?i=8994
- [121] = https://curl.se/bug/?i=8981
- [124] = https://curl.se/bug/?i=8965
- [125] = https://curl.se/bug/?i=8991
- [126] = https://curl.se/bug/?i=9028
- [127] = https://curl.se/bug/?i=8815
+ [1] = https://curl.se/bug/?i=9073
+ [2] = https://curl.se/bug/?i=9070
+ [3] = https://curl.se/bug/?i=9069
+ [4] = https://curl.se/bug/?i=9067
+ [5] = https://curl.se/bug/?i=9064
+ [6] = https://curl.se/bug/?i=9063
+ [7] = https://curl.se/bug/?i=9059
+ [8] = https://curl.se/bug/?i=9058
+ [9] = https://curl.se/bug/?i=9055
+ [10] = https://curl.se/bug/?i=9056
+ [11] = https://curl.se/bug/?i=9056
+ [12] = https://curl.se/bug/?i=9057
+ [13] = https://curl.se/bug/?i=9054
+ [14] = https://curl.se/bug/?i=9106
+ [15] = https://curl.se/bug/?i=9117
+ [16] = https://curl.se/bug/?i=9104
+ [17] = https://curl.se/bug/?i=9132
+ [18] = https://curl.se/bug/?i=9065
+ [19] = https://curl.se/bug/?i=9122
+ [20] = https://curl.se/bug/?i=9114
+ [21] = https://curl.se/bug/?i=9114
+ [22] = https://curl.se/bug/?i=9128
+ [23] = https://curl.se/bug/?i=9115
+ [24] = https://curl.se/bug/?i=9113
+ [25] = https://curl.se/bug/?i=9115
+ [26] = https://curl.se/bug/?i=9095
+ [27] = https://curl.se/bug/?i=9092
+ [28] = https://curl.se/bug/?i=9046
+ [29] = https://curl.se/bug/?i=9027
+ [30] = https://curl.se/bug/?i=8992
+ [31] = https://curl.se/bug/?i=9118
+ [32] = https://bugs.archlinux.org/task/75201
+ [33] = https://curl.se/bug/?i=9084
+ [34] = https://curl.se/bug/?i=8997
+ [35] = https://curl.se/bug/?i=9082
+ [36] = https://curl.se/bug/?i=9080
+ [37] = https://curl.se/bug/?i=9111
+ [38] = https://curl.se/bug/?i=9109
+ [39] = https://curl.se/bug/?i=9090
+ [40] = https://curl.se/bug/?i=9164
+ [41] = https://curl.se/bug/?i=9139
+ [42] = https://curl.se/bug/?i=9176
+ [43] = https://curl.se/bug/?i=9170
+ [44] = https://curl.se/bug/?i=9172
+ [45] = https://curl.se/bug/?i=9174
+ [46] = https://curl.se/bug/?i=9169
+ [47] = https://curl.se/bug/?i=9150
+ [48] = https://curl.se/bug/?i=9155
+ [49] = https://curl.se/bug/?i=9149
+ [50] = https://curl.se/bug/?i=9162
+ [51] = https://curl.se/bug/?i=9163
+ [52] = https://curl.se/bug/?i=9110
+ [53] = https://curl.se/bug/?i=9081
+ [54] = https://curl.se/bug/?i=9081
+ [55] = https://curl.se/bug/?i=9134
+ [56] = https://curl.se/bug/?i=9141
+ [57] = https://curl.se/bug/?i=9125
+ [58] = https://curl.se/bug/?i=9124
+ [59] = https://curl.se/bug/?i=9135
+ [60] = https://curl.se/bug/?i=9207
+ [61] = https://curl.se/bug/?i=9204
+ [62] = https://curl.se/bug/?i=9205
+ [63] = https://curl.se/bug/?i=9201
+ [64] = https://curl.se/bug/?i=9244
+ [65] = https://curl.se/bug/?i=9012
+ [66] = https://curl.se/bug/?i=9199
+ [67] = https://curl.se/bug/?i=9179
+ [68] = https://curl.se/bug/?i=9179
+ [69] = https://curl.se/bug/?i=9179
+ [70] = https://curl.se/bug/?i=9179
+ [71] = https://curl.se/bug/?i=9179
+ [72] = https://curl.se/bug/?i=9179
+ [73] = https://curl.se/bug/?i=9179
+ [74] = https://curl.se/bug/?i=9179
+ [75] = https://curl.se/bug/?i=9179
+ [76] = https://curl.se/bug/?i=9179
+ [77] = https://curl.se/bug/?i=9179
+ [78] = https://curl.se/bug/?i=9179
+ [79] = https://curl.se/bug/?i=9179
+ [80] = https://curl.se/bug/?i=9179
+ [81] = https://curl.se/bug/?i=9179
+ [82] = https://curl.se/bug/?i=9179
+ [83] = https://curl.se/bug/?i=9179
+ [84] = https://curl.se/bug/?i=9179
+ [85] = https://curl.se/bug/?i=9179
+ [86] = https://curl.se/bug/?i=9190
+ [87] = https://curl.se/bug/?i=9187
+ [88] = https://curl.se/bug/?i=9184
+ [89] = https://curl.se/bug/?i=9180
+ [90] = https://curl.se/bug/?i=9185
+ [91] = https://curl.se/bug/?i=9183
+ [92] = https://curl.se/bug/?i=9181
+ [93] = https://curl.se/bug/?i=9044
+ [94] = https://curl.se/bug/?i=9235
+ [95] = https://curl.se/bug/?i=9229
+ [96] = https://curl.se/bug/?i=8419
+ [97] = https://curl.se/bug/?i=9230
+ [98] = https://curl.se/bug/?i=9221
+ [99] = https://curl.se/bug/?i=9223
+ [100] = https://curl.se/bug/?i=9286
+ [101] = https://curl.se/bug/?i=9216
+ [102] = https://curl.se/bug/?i=9209
+ [103] = https://curl.se/bug/?i=9208
+ [104] = https://curl.se/bug/?i=9213
+ [105] = https://curl.se/bug/?i=9280
+ [106] = https://curl.se/bug/?i=9281
+ [107] = https://curl.se/bug/?i=8915
+ [108] = https://curl.se/bug/?i=9259
+ [109] = https://curl.se/bug/?i=9303
+ [110] = https://curl.se/bug/?i=9268
+ [111] = https://curl.se/bug/?i=9258
+ [112] = https://curl.se/bug/?i=9279
+ [113] = https://curl.se/bug/?i=9278
+ [114] = https://curl.se/bug/?i=9274
+ [115] = https://curl.se/bug/?i=9269
+ [116] = https://curl.se/bug/?i=9228
+ [117] = https://curl.se/bug/?i=9267
+ [118] = https://curl.se/bug/?i=9266
+ [119] = https://curl.se/bug/?i=9264
+ [120] = https://curl.se/bug/?i=9077
+ [121] = https://curl.se/bug/?i=9239
+ [122] = https://curl.se/bug/?i=9250
+ [123] = https://curl.se/bug/?i=9310
+ [124] = https://curl.se/bug/?i=9310
+ [125] = https://curl.se/bug/?i=9298
+ [126] = https://curl.se/bug/?i=9297
+ [127] = https://curl.se/bug/?i=9192
+ [128] = https://curl.se/bug/?i=9310
+ [129] = https://curl.se/bug/?i=9291
+ [130] = https://curl.se/bug/?i=9291
+ [131] = https://curl.se/bug/?i=9217
+ [132] = https://curl.se/bug/?i=9253
+ [133] = https://curl.se/bug/?i=9265
+ [134] = https://curl.se/bug/?i=9289
+ [135] = https://curl.se/bug/?i=9310
+ [136] = https://curl.se/bug/?i=9335
+ [137] = https://curl.se/bug/?i=9317
+ [138] = https://curl.se/bug/?i=9352
+ [139] = https://curl.se/bug/?i=9023
+ [140] = https://curl.se/bug/?i=9376
+ [141] = https://curl.se/bug/?i=9314
+ [142] = https://curl.se/bug/?i=9290
+ [143] = https://curl.se/bug/?i=9306
+ [144] = https://curl.se/bug/?i=9309
+ [145] = https://curl.se/bug/?i=9344
+ [146] = https://curl.se/bug/?i=9372
+ [147] = https://curl.se/bug/?i=9361
+ [148] = https://curl.se/bug/?i=9328
+ [149] = https://curl.se/bug/?i=9328
+ [150] = https://curl.se/bug/?i=9330
+ [151] = https://curl.se/bug/?i=9329
+ [152] = https://curl.se/docs/CVE-2022-35252.html
+ [153] = https://curl.se/bug/?i=9364
+ [154] = https://curl.se/bug/?i=6132
+ [155] = https://curl.se/bug/?i=9369
+ [156] = https://curl.se/bug/?i=9367
+ [157] = https://curl.se/bug/?i=9382
+ [158] = https://curl.se/bug/?i=9356
+ [159] = https://curl.se/bug/?i=9354
+ [160] = https://curl.se/bug/?i=9349
+ [161] = https://curl.se/bug/?i=9349
+ [162] = https://curl.se/bug/?i=9331
+ [163] = https://curl.se/bug/?i=9312
+ [165] = https://curl.se/bug/?i=9243
+ [166] = https://curl.se/bug/?i=9248
+ [167] = https://curl.se/bug/?i=8653
+ [168] = https://curl.se/bug/?i=9391

+ 24 - 10
contrib/libs/curl/include/curl/curl.h

@@ -75,7 +75,8 @@
     defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
     defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
    (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
-   (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000))
+   (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
+    defined(__sun__)
 #include <sys/select.h>
 #endif
 
@@ -577,7 +578,7 @@ typedef enum {
   CURLE_TFTP_UNKNOWNID,          /* 72 - Unknown transfer ID */
   CURLE_REMOTE_FILE_EXISTS,      /* 73 - File already exists */
   CURLE_TFTP_NOSUCHUSER,         /* 74 - No such user */
-  CURLE_CONV_FAILED,             /* 75 - conversion failed */
+  CURLE_OBSOLETE75,              /* 75 - NOT IN USE since 7.82.0 */
   CURLE_OBSOLETE76,              /* 76 - NOT IN USE since 7.82.0 */
   CURLE_SSL_CACERT_BADFILE,      /* 77 - could not load CACERT file, missing
                                     or wrong format */
@@ -680,6 +681,7 @@ typedef enum {
 #define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
 #define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62
 #define CURLE_CONV_REQD CURLE_OBSOLETE76
+#define CURLE_CONV_FAILED CURLE_OBSOLETE75
 
 /* This was the error code 50 in 7.7.3 and a few earlier versions, this
    is no longer used by libcurl but is instead #defined here only to not
@@ -1009,7 +1011,8 @@ typedef CURLSTScode (*curl_hstswrite_callback)(CURL *easy,
 #define CURLHSTS_ENABLE       (long)(1<<0)
 #define CURLHSTS_READONLYFILE (long)(1<<1)
 
-/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
+/* The CURLPROTO_ defines below are for the **deprecated** CURLOPT_*PROTOCOLS
+   options. Do not use. */
 #define CURLPROTO_HTTP   (1<<0)
 #define CURLPROTO_HTTPS  (1<<1)
 #define CURLPROTO_FTP    (1<<2)
@@ -1475,12 +1478,11 @@ typedef enum {
      Note that setting multiple bits may cause extra network round-trips. */
   CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111),
 
-  /* FTP option that changes the timeout, in seconds, associated with
-     getting a response.  This is different from transfer timeout time and
-     essentially places a demand on the FTP server to acknowledge commands
-     in a timely manner. */
-  CURLOPT(CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
-#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
+  /* Option that changes the timeout, in seconds, associated with getting a
+     response.  This is different from transfer timeout time and essentially
+     places a demand on the server to acknowledge commands in a timely
+     manner. For FTP, SMTP, IMAP and POP3. */
+  CURLOPT(CURLOPT_SERVER_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
 
   /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
      tell libcurl to use those IP versions only. This only has effect on
@@ -2143,6 +2145,15 @@ typedef enum {
   /* set the SSH host key callback custom pointer */
   CURLOPT(CURLOPT_SSH_HOSTKEYDATA, CURLOPTTYPE_CBPOINT, 317),
 
+  /* specify which protocols that are allowed to be used for the transfer,
+     which thus helps the app which takes URLs from users or other external
+     inputs and want to restrict what protocol(s) to deal with. Defaults to
+     all built-in protocols. */
+  CURLOPT(CURLOPT_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 318),
+
+  /* specify which protocols that libcurl is allowed to follow directs to */
+  CURLOPT(CURLOPT_REDIR_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 319),
+
   CURLOPT_LASTENTRY /* the last unused */
 } CURLoption;
 
@@ -2168,6 +2179,9 @@ typedef enum {
 #define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
 #define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
 
+/* */
+#define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT
+
 #else
 /* This is set if CURL_NO_OLDIES is defined at compile-time */
 #undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
@@ -2182,7 +2196,7 @@ typedef enum {
 #define CURL_IPRESOLVE_V4       1 /* uses only IPv4 addresses/connections */
 #define CURL_IPRESOLVE_V6       2 /* uses only IPv6 addresses/connections */
 
-  /* three convenient "aliases" that follow the name scheme better */
+  /* Convenient "aliases" */
 #define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
 
   /* These enums are for use with the CURLOPT_HTTP_VERSION option. */

+ 4 - 4
contrib/libs/curl/include/curl/curlver.h

@@ -32,12 +32,12 @@
 
 /* This is the version number of the libcurl package from which this header
    file origins: */
-#define LIBCURL_VERSION "7.84.0"
+#define LIBCURL_VERSION "7.85.0"
 
 /* The numeric version number is also available "in parts" by using these
    defines: */
 #define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 84
+#define LIBCURL_VERSION_MINOR 85
 #define LIBCURL_VERSION_PATCH 0
 
 /* This is the numeric version of the libcurl version number, meant for easier
@@ -59,7 +59,7 @@
    CURL_VERSION_BITS() macro since curl's own configure script greps for it
    and needs it to contain the full number.
 */
-#define LIBCURL_VERSION_NUM 0x075400
+#define LIBCURL_VERSION_NUM 0x075500
 
 /*
  * This is the date and time when the full source package was created. The
@@ -70,7 +70,7 @@
  *
  * "2007-11-23"
  */
-#define LIBCURL_TIMESTAMP "2022-06-27"
+#define LIBCURL_TIMESTAMP "2022-08-31"
 
 #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
 #define CURL_AT_LEAST_VERSION(x,y,z) \

+ 7 - 5
contrib/libs/curl/include/curl/typecheck-gcc.h

@@ -272,9 +272,9 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
    (option) == CURLOPT_DNS_SERVERS ||                                         \
    (option) == CURLOPT_DOH_URL ||                                             \
    (option) == CURLOPT_EGDSOCKET ||                                           \
-   (option) == CURLOPT_FTPPORT ||                                             \
    (option) == CURLOPT_FTP_ACCOUNT ||                                         \
    (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER ||                             \
+   (option) == CURLOPT_FTPPORT ||                                             \
    (option) == CURLOPT_HSTS ||                                                \
    (option) == CURLOPT_INTERFACE ||                                           \
    (option) == CURLOPT_ISSUERCERT ||                                          \
@@ -288,10 +288,8 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
    (option) == CURLOPT_PASSWORD ||                                            \
    (option) == CURLOPT_PINNEDPUBLICKEY ||                                     \
    (option) == CURLOPT_PRE_PROXY ||                                           \
+   (option) == CURLOPT_PROTOCOLS_STR ||                                       \
    (option) == CURLOPT_PROXY ||                                               \
-   (option) == CURLOPT_PROXYPASSWORD ||                                       \
-   (option) == CURLOPT_PROXYUSERNAME ||                                       \
-   (option) == CURLOPT_PROXYUSERPWD ||                                        \
    (option) == CURLOPT_PROXY_CAINFO ||                                        \
    (option) == CURLOPT_PROXY_CAPATH ||                                        \
    (option) == CURLOPT_PROXY_CRLFILE ||                                       \
@@ -299,17 +297,21 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
    (option) == CURLOPT_PROXY_KEYPASSWD ||                                     \
    (option) == CURLOPT_PROXY_PINNEDPUBLICKEY ||                               \
    (option) == CURLOPT_PROXY_SERVICE_NAME ||                                  \
+   (option) == CURLOPT_PROXY_SSL_CIPHER_LIST ||                               \
    (option) == CURLOPT_PROXY_SSLCERT ||                                       \
    (option) == CURLOPT_PROXY_SSLCERTTYPE ||                                   \
    (option) == CURLOPT_PROXY_SSLKEY ||                                        \
    (option) == CURLOPT_PROXY_SSLKEYTYPE ||                                    \
-   (option) == CURLOPT_PROXY_SSL_CIPHER_LIST ||                               \
    (option) == CURLOPT_PROXY_TLS13_CIPHERS ||                                 \
    (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD ||                              \
    (option) == CURLOPT_PROXY_TLSAUTH_TYPE ||                                  \
    (option) == CURLOPT_PROXY_TLSAUTH_USERNAME ||                              \
+   (option) == CURLOPT_PROXYPASSWORD ||                                       \
+   (option) == CURLOPT_PROXYUSERNAME ||                                       \
+   (option) == CURLOPT_PROXYUSERPWD ||                                        \
    (option) == CURLOPT_RANDOM_FILE ||                                         \
    (option) == CURLOPT_RANGE ||                                               \
+   (option) == CURLOPT_REDIR_PROTOCOLS_STR ||                                 \
    (option) == CURLOPT_REFERER ||                                             \
    (option) == CURLOPT_REQUEST_TARGET ||                                      \
    (option) == CURLOPT_RTSP_SESSION_ID ||                                     \

+ 163 - 43
contrib/libs/curl/lib/amigaos.c

@@ -25,8 +25,14 @@
 #include "curl_setup.h"
 
 #ifdef __AMIGA__
-#  include "amigaos.h"
-#  if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
+
+#include "hostip.h"
+#include "amigaos.h"
+
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#  if defined(__amigaos4__)
+#    error #include <bsdsocket/socketbasetags.h>
+#  elif !defined(USE_AMISSL)
 #    include <amitcp/socketbasetags.h>
 #  endif
 #  ifdef __libnix__
@@ -38,8 +44,154 @@
 #include "curl_memory.h"
 #include "memdebug.h"
 
-#ifdef __AMIGA__
-#if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
+#ifdef HAVE_PROTO_BSDSOCKET_H
+
+#ifdef __amigaos4__
+/*
+ * AmigaOS 4.x specific code
+ */
+
+/*
+ * hostip4.c - Curl_ipv4_resolve_r() replacement code
+ *
+ * Logic that needs to be considered are the following build cases:
+ * - newlib networking
+ * - clib2 networking
+ * - direct bsdsocket.library networking (usually AmiSSL builds)
+ * Each with the threaded resolver enabled or not.
+ *
+ * With the threaded resolver enabled, try to use gethostbyname_r() where
+ * available, otherwise (re)open bsdsocket.library and fallback to
+ * gethostbyname().
+ */
+
+#error #include <proto/bsdsocket.h>
+
+static struct SocketIFace *__CurlISocket = NULL;
+static uint32 SocketFeatures = 0;
+
+#define HAVE_BSDSOCKET_GETHOSTBYNAME_R 0x01
+#define HAVE_BSDSOCKET_GETADDRINFO     0x02
+
+CURLcode Curl_amiga_init(void)
+{
+  struct SocketIFace *ISocket;
+  struct Library *base = OpenLibrary("bsdsocket.library", 4);
+
+  if(base) {
+    ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
+    if(ISocket) {
+      ULONG enabled = 0;
+
+      SocketBaseTags(SBTM_SETVAL(SBTC_CAN_SHARE_LIBRARY_BASES), TRUE,
+                     SBTM_GETREF(SBTC_HAVE_GETHOSTADDR_R_API), (ULONG)&enabled,
+                     TAG_DONE);
+
+      if(enabled) {
+        SocketFeatures |= HAVE_BSDSOCKET_GETHOSTBYNAME_R;
+      }
+
+      __CurlISocket = ISocket;
+
+      atexit(Curl_amiga_cleanup);
+
+      return CURLE_OK;
+    }
+    CloseLibrary(base);
+  }
+
+  return CURLE_FAILED_INIT;
+}
+
+void Curl_amiga_cleanup(void)
+{
+  if(__CurlISocket) {
+    struct Library *base = __CurlISocket->Data.LibBase;
+    DropInterface((struct Interface *)__CurlISocket);
+    CloseLibrary(base);
+    __CurlISocket = NULL;
+  }
+}
+
+#ifdef CURLRES_AMIGA
+/*
+ * Because we need to handle the different cases in hostip4.c at run-time,
+ * not at compile-time, based on what was detected in Curl_amiga_init(),
+ * we replace it completely with our own as to not complicate the baseline
+ * code. Assumes malloc/calloc/free are thread safe because Curl_he2ai()
+ * allocates memory also.
+ */
+
+struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
+                                          int port)
+{
+  struct Curl_addrinfo *ai = NULL;
+  struct hostent *h;
+  struct SocketIFace *ISocket = __CurlISocket;
+
+  if(SocketFeatures & HAVE_BSDSOCKET_GETHOSTBYNAME_R) {
+    LONG h_errnop = 0;
+    struct hostent *buf;
+
+    buf = calloc(1, CURL_HOSTENT_SIZE);
+    if(buf) {
+      h = gethostbyname_r((STRPTR)hostname, buf,
+                          (char *)buf + sizeof(struct hostent),
+                          CURL_HOSTENT_SIZE - sizeof(struct hostent),
+                          &h_errnop);
+      if(h) {
+        ai = Curl_he2ai(h, port);
+      }
+      free(buf);
+    }
+  }
+  else {
+    #ifdef CURLRES_THREADED
+    /* gethostbyname() is not thread safe, so we need to reopen bsdsocket
+     * on the thread's context
+     */
+    struct Library *base = OpenLibrary("bsdsocket.library", 4);
+    if(base) {
+      ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
+      if(ISocket) {
+        h = gethostbyname((STRPTR)hostname);
+        if(h) {
+          ai = Curl_he2ai(h, port);
+        }
+        DropInterface((struct Interface *)ISocket);
+      }
+      CloseLibrary(base);
+    }
+    #else
+    /* not using threaded resolver - safe to use this as-is */
+    h = gethostbyname(hostname);
+    if(h) {
+      ai = Curl_he2ai(h, port);
+    }
+    #endif
+  }
+
+  return ai;
+}
+#endif /* CURLRES_AMIGA */
+
+#ifdef USE_AMISSL
+int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
+                      fd_set *errorfds, struct timeval *timeout)
+{
+  int r = WaitSelect(nfds, readfds, writefds, errorfds, timeout, 0);
+  /* Ensure Ctrl-C signal is actioned */
+  if((r == -1) && (SOCKERRNO == EINTR))
+    raise(SIGINT);
+  return r;
+}
+#endif /* USE_AMISSL */
+
+#elif !defined(USE_AMISSL) /* __amigaos4__ */
+/*
+ * Amiga OS3 specific code
+ */
+
 struct Library *SocketBase = NULL;
 extern int errno, h_errno;
 
@@ -49,7 +201,7 @@ void __request(const char *msg);
 # define __request(msg)       Printf(msg "\n\a")
 #endif
 
-void Curl_amiga_cleanup()
+void Curl_amiga_cleanup(void)
 {
   if(SocketBase) {
     CloseLibrary(SocketBase);
@@ -57,68 +209,36 @@ void Curl_amiga_cleanup()
   }
 }
 
-bool Curl_amiga_init()
+CURLcode Curl_amiga_init(void)
 {
   if(!SocketBase)
     SocketBase = OpenLibrary("bsdsocket.library", 4);
 
   if(!SocketBase) {
     __request("No TCP/IP Stack running!");
-    return FALSE;
+    return CURLE_FAILED_INIT;
   }
 
   if(SocketBaseTags(SBTM_SETVAL(SBTC_ERRNOPTR(sizeof(errno))), (ULONG) &errno,
                     SBTM_SETVAL(SBTC_LOGTAGPTR), (ULONG) "curl",
                     TAG_DONE)) {
     __request("SocketBaseTags ERROR");
-    return FALSE;
+    return CURLE_FAILED_INIT;
   }
 
 #ifndef __libnix__
   atexit(Curl_amiga_cleanup);
 #endif
 
-  return TRUE;
+  return CURLE_OK;
 }
 
 #ifdef __libnix__
 ADD2EXIT(Curl_amiga_cleanup, -50);
 #endif
 
-#endif /* HAVE_PROTO_BSDSOCKET_H */
-
-#ifdef USE_AMISSL
-void Curl_amiga_X509_free(X509 *a)
-{
-  X509_free(a);
-}
-
-/* AmiSSL replaces many functions with macros. Curl requires pointer
- * to some of these functions. Thus, we have to encapsulate these macros.
- */
-
-#include "warnless.h"
-
-int (SHA256_Init)(SHA256_CTX *c)
-{
-  return SHA256_Init(c);
-};
+#endif /* !USE_AMISSL */
 
-int (SHA256_Update)(SHA256_CTX *c, const void *data, size_t len)
-{
-  return SHA256_Update(c, data, curlx_uztoui(len));
-};
-
-int (SHA256_Final)(unsigned char *md, SHA256_CTX *c)
-{
-  return SHA256_Final(md, c);
-};
-
-void (X509_INFO_free)(X509_INFO *a)
-{
-  X509_INFO_free(a);
-};
+#endif /* HAVE_PROTO_BSDSOCKET_H */
 
-#endif /* USE_AMISSL */
 #endif /* __AMIGA__ */
-

+ 5 - 9
contrib/libs/curl/lib/amigaos.h

@@ -25,22 +25,18 @@
  ***************************************************************************/
 #include "curl_setup.h"
 
-#if defined(__AMIGA__) && defined(HAVE_BSDSOCKET_H) && !defined(USE_AMISSL)
+#if defined(__AMIGA__) && defined(HAVE_PROTO_BSDSOCKET_H) && \
+  (!defined(USE_AMISSL) || defined(__amigaos4__))
 
-bool Curl_amiga_init();
-void Curl_amiga_cleanup();
+CURLcode Curl_amiga_init(void);
+void Curl_amiga_cleanup(void);
 
 #else
 
-#define Curl_amiga_init() 1
+#define Curl_amiga_init() CURLE_OK
 #define Curl_amiga_cleanup() Curl_nop_stmt
 
 #endif
 
-#ifdef USE_AMISSL
-#include <openssl/x509v3.h>
-void Curl_amiga_X509_free(X509 *a);
-#endif /* USE_AMISSL */
-
 #endif /* HEADER_CURL_AMIGAOS_H */
 

+ 7 - 17
contrib/libs/curl/lib/asyn-ares.c

@@ -117,6 +117,7 @@ struct thread_data {
 #ifndef HAVE_CARES_GETADDRINFO
   struct curltime happy_eyeballs_dns_time; /* when this timer started, or 0 */
 #endif
+  char hostname[1];
 };
 
 /* How long we are willing to wait for additional parallel responses after
@@ -254,8 +255,6 @@ void Curl_resolver_kill(struct Curl_easy *data)
  */
 static void destroy_async_data(struct Curl_async *async)
 {
-  free(async->hostname);
-
   if(async->tdata) {
     struct thread_data *res = async->tdata;
     if(res) {
@@ -267,8 +266,6 @@ static void destroy_async_data(struct Curl_async *async)
     }
     async->tdata = NULL;
   }
-
-  async->hostname = NULL;
 }
 
 /*
@@ -760,25 +757,18 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
                                                 int port,
                                                 int *waitp)
 {
-  char *bufp;
-
+  struct thread_data *res = NULL;
+  size_t namelen = strlen(hostname);
   *waitp = 0; /* default to synchronous response */
 
-  bufp = strdup(hostname);
-  if(bufp) {
-    struct thread_data *res = NULL;
-    free(data->state.async.hostname);
-    data->state.async.hostname = bufp;
+  res = calloc(sizeof(struct thread_data) + namelen, 1);
+  if(res) {
+    strcpy(res->hostname, hostname);
+    data->state.async.hostname = res->hostname;
     data->state.async.port = port;
     data->state.async.done = FALSE;   /* not done */
     data->state.async.status = 0;     /* clear */
     data->state.async.dns = NULL;     /* clear */
-    res = calloc(sizeof(struct thread_data), 1);
-    if(!res) {
-      free(data->state.async.hostname);
-      data->state.async.hostname = NULL;
-      return NULL;
-    }
     data->state.async.tdata = res;
 
     /* initial status - failed */

+ 10 - 5
contrib/libs/curl/lib/asyn-thread.c

@@ -321,23 +321,28 @@ int init_thread_sync_data(struct thread_data *td,
   return 1;
 
  err_exit:
-  /* Memory allocation failed */
+#ifndef CURL_DISABLE_SOCKETPAIR
+  if(tsd->sock_pair[0] != CURL_SOCKET_BAD) {
+    sclose(tsd->sock_pair[0]);
+    tsd->sock_pair[0] = CURL_SOCKET_BAD;
+  }
+#endif
   destroy_thread_sync_data(tsd);
   return 0;
 }
 
-static int getaddrinfo_complete(struct Curl_easy *data)
+static CURLcode getaddrinfo_complete(struct Curl_easy *data)
 {
   struct thread_sync_data *tsd = conn_thread_sync_data(data);
-  int rc;
+  CURLcode result;
 
-  rc = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
+  result = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
   /* The tsd->res structure has been copied to async.dns and perhaps the DNS
      cache.  Set our copy to NULL so destroy_thread_sync_data doesn't free it.
   */
   tsd->res = NULL;
 
-  return rc;
+  return result;
 }
 
 

+ 33 - 41
contrib/libs/curl/lib/base64.c

@@ -43,8 +43,9 @@
 #include "memdebug.h"
 
 /* ---- Base64 Encoding/Decoding Table --- */
+/* Padding character string starts at offset 64. */
 static const char base64[]=
-  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
 /* The Base 64 encoding with an URL and filename safe alphabet, RFC 4648
    section 5 */
@@ -54,25 +55,18 @@ static const char base64url[]=
 static size_t decodeQuantum(unsigned char *dest, const char *src)
 {
   size_t padding = 0;
-  const char *s, *p;
+  const char *s;
   unsigned long i, x = 0;
 
   for(i = 0, s = src; i < 4; i++, s++) {
     if(*s == '=') {
-      x = (x << 6);
+      x <<= 6;
       padding++;
     }
     else {
-      unsigned long v = 0;
-      p = base64;
-
-      while(*p && (*p != *s)) {
-        v++;
-        p++;
-      }
-
-      if(*p == *s)
-        x = (x << 6) + v;
+      const char *p = strchr(base64, *s);
+      if(p)
+        x = (x << 6) + curlx_uztoul(p - base64);
       else
         return 0;
     }
@@ -109,11 +103,11 @@ CURLcode Curl_base64_decode(const char *src,
                             unsigned char **outptr, size_t *outlen)
 {
   size_t srclen = 0;
-  size_t length = 0;
   size_t padding = 0;
   size_t i;
   size_t numQuantums;
   size_t rawlen = 0;
+  const char *padptr;
   unsigned char *pos;
   unsigned char *newstr;
 
@@ -126,19 +120,17 @@ CURLcode Curl_base64_decode(const char *src,
     return CURLE_BAD_CONTENT_ENCODING;
 
   /* Find the position of any = padding characters */
-  while((src[length] != '=') && src[length])
-    length++;
-
-  /* A maximum of two = padding characters is allowed */
-  if(src[length] == '=') {
+  padptr = strchr(src, '=');
+  if(padptr) {
     padding++;
-    if(src[length + 1] == '=')
+    /* A maximum of two = padding characters is allowed */
+    if(padptr[1] == '=')
       padding++;
-  }
 
-  /* Check the = padding characters weren't part way through the input */
-  if(length + padding != srclen)
-    return CURLE_BAD_CONTENT_ENCODING;
+    /* Check the = padding characters weren't part way through the input */
+    if(padptr + padding != src + srclen)
+      return CURLE_BAD_CONTENT_ENCODING;
+  }
 
   /* Calculate the number of quantums */
   numQuantums = srclen / 4;
@@ -187,6 +179,7 @@ static CURLcode base64_encode(const char *table64,
   char *output;
   char *base64data;
   const char *indata = inputbuff;
+  const char *padstr = &table64[64];    /* Point to padding string. */
 
   *outptr = NULL;
   *outlen = 0;
@@ -224,27 +217,30 @@ static CURLcode base64_encode(const char *table64,
 
     switch(inputparts) {
     case 1: /* only one byte read */
-      msnprintf(output, 5, "%c%c==",
-                table64[obuf[0]],
-                table64[obuf[1]]);
+      i = msnprintf(output, 5, "%c%c%s%s",
+                    table64[obuf[0]],
+                    table64[obuf[1]],
+                    padstr,
+                    padstr);
       break;
 
     case 2: /* two bytes read */
-      msnprintf(output, 5, "%c%c%c=",
-                table64[obuf[0]],
-                table64[obuf[1]],
-                table64[obuf[2]]);
+      i = msnprintf(output, 5, "%c%c%c%s",
+                    table64[obuf[0]],
+                    table64[obuf[1]],
+                    table64[obuf[2]],
+                    padstr);
       break;
 
     default:
-      msnprintf(output, 5, "%c%c%c%c",
-                table64[obuf[0]],
-                table64[obuf[1]],
-                table64[obuf[2]],
-                table64[obuf[3]]);
+      i = msnprintf(output, 5, "%c%c%c%c",
+                    table64[obuf[0]],
+                    table64[obuf[1]],
+                    table64[obuf[2]],
+                    table64[obuf[3]]);
       break;
     }
-    output += 4;
+    output += i;
   }
 
   /* Zero terminate */
@@ -272,8 +268,6 @@ static CURLcode base64_encode(const char *table64,
  * Returns CURLE_OK on success, otherwise specific error code. Function
  * output shall not be considered valid unless CURLE_OK is returned.
  *
- * When encoded data length is 0, returns NULL in *outptr.
- *
  * @unittest: 1302
  */
 CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
@@ -295,8 +289,6 @@ CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
  * Returns CURLE_OK on success, otherwise specific error code. Function
  * output shall not be considered valid unless CURLE_OK is returned.
  *
- * When encoded data length is 0, returns NULL in *outptr.
- *
  * @unittest: 1302
  */
 CURLcode Curl_base64url_encode(const char *inputbuff, size_t insize,

+ 16 - 10
contrib/libs/curl/lib/c-hyper.c

@@ -692,9 +692,18 @@ static int uploadstreamed(void *userdata, hyper_context *ctx,
     data->state.hresult = result;
     return HYPER_POLL_ERROR;
   }
-  if(!fillcount)
-    /* done! */
-    *chunk = NULL;
+  if(!fillcount) {
+    if((data->req.keepon & KEEP_SEND_PAUSE) != KEEP_SEND_PAUSE)
+      /* done! */
+      *chunk = NULL;
+    else {
+      /* paused, save a waker */
+      if(data->hyp.send_body_waker)
+        hyper_waker_free(data->hyp.send_body_waker);
+      data->hyp.send_body_waker = hyper_context_waker(ctx);
+      return HYPER_POLL_PENDING;
+    }
+  }
   else {
     hyper_buf *copy = hyper_buf_copy((uint8_t *)data->state.ulbuf, fillcount);
     if(copy)
@@ -915,6 +924,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   }
   hyper_clientconn_options_set_preserve_header_case(options, 1);
   hyper_clientconn_options_set_preserve_header_order(options, 1);
+  hyper_clientconn_options_http1_allow_multiline_headers(options, 1);
 
   hyper_clientconn_options_exec(options, h->exec);
 
@@ -1004,10 +1014,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
     /* For HTTP/2, we show the Host: header as if we sent it, to make it look
        like for HTTP/1 but it isn't actually sent since :authority is then
        used. */
-    result = Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
-                        strlen(data->state.aptr.host));
-    if(result)
-      goto error;
+    Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
+               strlen(data->state.aptr.host));
   }
 
   if(data->state.aptr.proxyuserpwd) {
@@ -1127,9 +1135,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   if(result)
     goto error;
 
-  result = Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);
-  if(result)
-    goto error;
+  Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);
 
   data->req.upload_chunky = FALSE;
   sendtask = hyper_clientconn_send(client, req);

Some files were not shown because too many files changed in this diff