| _ _ ____ _ |
| ___| | | | _ \| | |
| / __| | | | |_) | | |
| | (__| |_| | _ <| |___ |
| \___|\___/|_| \_\_____| |
| |
| Changelog |
| |
| Version 7.86.0 (26 Oct 2022) |
| |
| Daniel Stenberg (26 Oct 2022) |
| - RELEASE: synced |
| |
| The 7.86.0 release |
| |
| - THANKS: added from the 7.86.0 release |
| |
| Viktor Szakats (25 Oct 2022) |
| - noproxy: include netinet/in.h for htonl() |
| |
| Solve the Amiga build warning by including `netinet/in.h`. |
| |
| `krb5.c` and `socketpair.c` are using `htonl()` too. This header is |
| already included in those sources. |
| |
| Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309 |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9787 |
| |
| Marc Hoersken (24 Oct 2022) |
| - CI: fix AppVeyor status failing for starting jobs |
| |
| Daniel Stenberg (24 Oct 2022) |
| - test445: verifies the protocols-over-http-proxy flaw and fix |
| |
| - http_proxy: restore the protocol pointer on error |
| |
| Reported-by: Trail of Bits |
| |
| Closes #9790 |
| |
| - multi: remove duplicate include of connect.h |
| |
| Reported-by: Martin Strunz |
| Fixes #9794 |
| Closes #9795 |
| |
| Daniel Gustafsson (24 Oct 2022) |
| - idn: fix typo in test description |
| |
| s/enabked/enabled/i |
| |
| Daniel Stenberg (24 Oct 2022) |
| - url: use IDN decoded names for HSTS checks |
| |
| Reported-by: Hiroki Kurosawa |
| |
| Closes #9791 |
| |
| - unit1614: fix disabled-proxy build |
| |
| Follow-up to 1e9a538e05c01 |
| |
| Closes #9792 |
| |
| Daniel Gustafsson (24 Oct 2022) |
| - cookies: optimize control character check |
| |
| When checking for invalid octets the strcspn() call will return the |
| position of the first found invalid char or the first NULL byte. |
| This means that we can check the indicated position in the search- |
| string saving a strlen() call. |
| |
| Closes: #9736 |
| Reviewed-by: Jay Satiro <raysatiro@yahoo.com> |
| |
| Daniel Stenberg (24 Oct 2022) |
| - netrc: replace fgets with Curl_get_line |
| |
| Make the parser only accept complete lines and avoid problems with |
| overly long lines. |
| |
| Reported-by: Hiroki Kurosawa |
| |
| Closes #9789 |
| |
| - RELEASE-NOTES: add "Planned upcoming removals include" |
| |
| URL: https://curl.se/mail/archive-2022-10/0001.html |
| |
| Suggested-by: Dan Fandrich |
| |
| Viktor Szakats (23 Oct 2022) |
| - ci: bump to gcc-11 for macos |
| |
| Ref: https://github.blog/changelog/2022-10-03-github-actions-jobs-running-on-macos-latest-are-now-running-on-macos-12/ |
| Ref: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md |
| |
| Reviewed-by: Max Dymond |
| Closes #9785 |
| |
| - Makefile.m32: reintroduce CROSSPREFIX and -W -Wall [ci skip] |
| |
| - Reintroduce `CROSSPREFIX`: |
| |
| If set, we add it to the `CC` and `AR` values, and to the _default_ |
| value of `RC`, which is `windres`. This allows to control each of |
| these individidually, while also allowing to simplify configuration |
| via `CROSSPREFIX`. |
| |
| This variable worked differently earlier. Hopefully this new solution |
| hits a better compromise in usefulness/complexity/flexibility. |
| |
| Follow-up to: aa970c4c08775afcd0c2853be89b0a6f02582d50 |
| |
| - Enable warnings again: |
| |
| This time with an option to override it via `CFLAGS`. Warnings are |
| also enabled by default in CMake, `makefile.dj` and `makefile.amiga` |
| builds (not in autotools though). |
| |
| Follow-up to 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3 |
| |
| Closes #9784 |
| |
| - noproxy: silence unused variable warnings with no ipv6 |
| |
| Follow-up to 36474f1050c7f4117e3c8de6cc9217cfebfc717d |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9782 |
| |
| Daniel Stenberg (22 Oct 2022) |
| - test644: verify --xattr (with redirect) |
| |
| - tool_xattr: save the original URL, not the final redirected one |
| |
| Adjusted test 1621 accordingly. |
| |
| Reported-by: Viktor Szakats |
| Fixes #9766 |
| Closes #9768 |
| |
| - docs: make sure libcurl opts examples pass in long arguments |
| |
| Reported-by: Sergey |
| Fixes #9779 |
| Closes #9780 |
| |
| Marc Hoersken (21 Oct 2022) |
| - CI: fix AppVeyor job links only working for most recent build |
| |
| Ref: https://github.com/curl/curl/pull/9768#issuecomment-1286675916 |
| Reported-by: Daniel Stenberg |
| |
| Follow up to #9769 |
| |
| Viktor Szakats (21 Oct 2022) |
| - noproxy: fix builds without AF_INET6 |
| |
| Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309 |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9778 |
| |
| Daniel Stenberg (21 Oct 2022) |
| - noproxy: support proxies specified using cidr notation |
| |
| For both IPv4 and IPv6 addresses. Now also checks IPv6 addresses "correctly" |
| and not with string comparisons. |
| |
| Split out the noproxy checks and functionality into noproxy.c |
| |
| Added unit test 1614 to verify checking functions. |
| |
| Reported-by: Mathieu Carbonneaux |
| |
| Fixes #9773 |
| Fixes #5745 |
| Closes #9775 |
| |
| - urlapi: remove two variable assigns |
| |
| To please scan-build: |
| |
| urlapi.c:1163:9: warning: Value stored to 'qlen' is never read |
| qlen = Curl_dyn_len(&enc); |
| ^ ~~~~~~~~~~~~~~~~~~ |
| urlapi.c:1164:9: warning: Value stored to 'query' is never read |
| query = u->query = Curl_dyn_ptr(&enc); |
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Follow-up to 7d6cf06f571d57 |
| |
| Closes #9777 |
| |
| - [Jeremy Maitin-Shepard brought this change] |
| |
| cmake: improve usability of CMake build as a sub-project |
| |
| - Renames `uninstall` -> `curl_uninstall` |
| - Ensures all export rules are guarded by CURL_ENABLE_EXPORT_TARGET |
| |
| Closes #9638 |
| |
| - [Don J Olmstead brought this change] |
| |
| easy_lock: check for HAVE_STDATOMIC_H as well |
| |
| The check for `HAVE_STDATOMIC_H` looks to see if the `stdatomic.h` |
| header is present. |
| |
| Closes #9755 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Brad Harder brought this change] |
| |
| CURLMOPT_PIPELINING.3: dedup manpage xref |
| |
| Closes #9776 |
| |
| Marc Hoersken (20 Oct 2022) |
| - CI: report AppVeyor build status for each job |
| |
| Also give each job on AppVeyor CI a human-readable name. |
| |
| This aims to make job and therefore build failures more visible. |
| |
| Reviewed-by: Marcel Raad |
| Closes #9769 |
| |
| Viktor Szakats (20 Oct 2022) |
| - amiga: set SIZEOF_CURL_OFF_T=8 by default [ci skip] |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9771 |
| |
| - connect: fix builds without AF_INET6 |
| |
| Regression from 2b309560c1e5d6ed5c0e542e6fdffa968b0521c9 |
| |
| Reviewed-by: Daniel Stenberg |
| Reviewed-by: Jay Satiro |
| |
| Closes #9770 |
| |
| Daniel Stenberg (20 Oct 2022) |
| - test1105: adjust <data> to work with a hyper build |
| |
| Closes #9767 |
| |
| - urlapi: fix parsing URL without slash with CURLU_URLENCODE |
| |
| When CURLU_URLENCODE is set, the parser would mistreat the path |
| component if the URL was specified without a slash like in |
| http://local.test:80?-123 |
| |
| Extended test 1560 to reproduce and verify the fix. |
| |
| Reported-by: Trail of Bits |
| |
| Closes #9763 |
| |
| Marc Hoersken (19 Oct 2022) |
| - tests: avoid CreateThread if _beginthreadex is available |
| |
| CreateThread is not threadsafe if mixed with CRT calls. |
| _beginthreadex on the other hand can be mixed with CRT. |
| |
| Reviewed-by: Marcel Raad |
| Closes #9705 |
| |
| Jay Satiro (19 Oct 2022) |
| - [Joel Depooter brought this change] |
| |
| schannel: Don't reset recv/send function pointers on renegotiation |
| |
| These function pointers will have been set when the initial TLS |
| handshake was completed. If they are unchanged, there is no need to set |
| them again. If they have been changed, as is the case with HTTP/2, we |
| don't want to override that change. That would result in the |
| http22_recv/send functions being completely bypassed. |
| |
| Prior to this change a connection that uses Schannel with HTTP/2 would |
| fail on renegotiation with error "Received HTTP/0.9 when not allowed". |
| |
| Fixes https://github.com/curl/curl/issues/9451 |
| Closes https://github.com/curl/curl/pull/9756 |
| |
| Viktor Szakats (18 Oct 2022) |
| - hostip: guard PF_INET6 use |
| |
| Some platforms (e.g. Amiga OS) do not have `PF_INET6`. Adjust the code |
| for these. |
| |
| ``` |
| hostip.c: In function 'fetch_addr': |
| hostip.c:308:12: error: 'PF_INET6' undeclared (first use in this function) |
| pf = PF_INET6; |
| ^~~~~~~~ |
| ``` |
| |
| Regression from 1902e8fc511078fb5e26fc2b907b4cce77e1240d |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9760 |
| |
| - amiga: do not hardcode openssl/zlib into the os config [ci skip] |
| |
| Enable them in `lib/makefile.amiga` and `src/makefile.amiga` instead. |
| |
| This allows builds without openssl and/or zlib. E.g. with the |
| <https://github.com/bebbo/amiga-gcc> cross-compiler. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9762 |
| |
| - amigaos: add missing curl header [ci skip] |
| |
| Without it, `CURLcode` and `CURLE_*` are undefined. `lib/hostip.h` and |
| conditional local code need them. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9761 |
| |
| Daniel Stenberg (18 Oct 2022) |
| - cmdline/docs: add a required 'multi' keyword for each option |
| |
| The keyword specifies how option works when specified multiple times: |
| |
| - single: the last provided value replaces the earlier ones |
| - append: it supports being provided multiple times |
| - boolean: on/off values |
| - mutex: flag-like option that disable anoter flag |
| |
| The 'gen.pl' script then outputs the proper and unified language for |
| each option's multi-use behavior in the generated man page. |
| |
| The multi: header is requires in each .d file and will cause build error |
| if missing or set to an unknown value. |
| |
| Closes #9759 |
| |
| - CURLOPT_AUTOREFERER.3: highlight the privacy leak risk |
| |
| Closes #9757 |
| |
| - mprintf: reject two kinds of precision for the same argument |
| |
| An input like "%.*1$.9999d" would first use the precision taken as an |
| argument *and* then the precision specified in the string, which is |
| confusing and wrong. pass1 will now instead return error on this double |
| use. |
| |
| Adjusted unit test 1398 to verify |
| |
| Reported-by: Peter Goodman |
| |
| Closes #9754 |
| |
| - ftp: remove redundant if |
| |
| Reported-by: Trail of Bits |
| |
| Closes #9753 |
| |
| - tool_operate: more transfer cleanup after parallel transfer fail |
| |
| In some circumstances when doing parallel transfers, the |
| single_transfer_cleanup() would not be called and then 'inglob' could |
| leak. |
| |
| Test 496 verifies |
| |
| Reported-by: Trail of Bits |
| Closes #9749 |
| |
| - mqtt: spell out CONNECT in comments |
| |
| Instead of calling it 'CONN' in several comments, use the full and |
| correct protocol packet name. |
| |
| Suggested by Trail of Bits |
| |
| Closes #9751 |
| |
| - CURLOPT_POSTFIELDS.3: refer to CURLOPT_MIMEPOST |
| |
| Not the deprecated CURLOPT_HTTPPOST option. |
| |
| Also added two see-alsos. |
| |
| Reported-by: Trail of Bits |
| Closes #9752 |
| |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (17 Oct 2022) |
| - ngtcp2: Fix build errors due to changes in ngtcp2 library |
| |
| ngtcp2/ngtcp2@b0d86f60 changed: |
| |
| - ngtcp2_conn_get_max_udp_payload_size => |
| ngtcp2_conn_get_max_tx_udp_payload_size |
| |
| - ngtcp2_conn_get_path_max_udp_payload_size => |
| ngtcp2_conn_get_path_max_tx_udp_payload_size |
| |
| ngtcp2/ngtcp2@ec59b873 changed: |
| |
| - 'early_data_rejected' member added to ng_callbacks. |
| |
| Assisted-by: Daniel Stenberg |
| Reported-by: jurisuk@users.noreply.github.com |
| |
| Fixes https://github.com/curl/curl/issues/9747 |
| Closes https://github.com/curl/curl/pull/9748 |
| |
| Daniel Stenberg (16 Oct 2022) |
| - curl_path: return error if given a NULL homedir |
| |
| Closes #9740 |
| |
| - libssh: if sftp_init fails, don't get the sftp error code |
| |
| This flow extracted the wrong code (sftp code instead of ssh code), and |
| the code is sometimes (erroneously) returned as zero anyway, so skip |
| getting it and set a generic error. |
| |
| Reported-by: David McLaughlin |
| Fixes #9737 |
| Closes #9740 |
| |
| - mqtt: return error for too long topic |
| |
| Closes #9744 |
| |
| - [Rickard HallerbƤck brought this change] |
| |
| tool_paramhlp: make the max argument a 'double' |
| |
| To fix compiler warnings "Implicit conversion from 'long' to 'double' |
| may lose precision" |
| |
| Closes #9700 |
| |
| Marc Hoersken (15 Oct 2022) |
| - [Philip Heiduck brought this change] |
| |
| cirrus-ci: add more macOS builds with m1 based on x86_64 builds |
| |
| Also refactor macOS builds to use task matrix. |
| |
| Assisted-by: Marc Hƶrsken |
| Closes #9565 |
| |
| Viktor Szakats (14 Oct 2022) |
| - cmake: set HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID on Windows |
| |
| `lib/config-win32.h` enables this configuration option unconditionally. |
| Make it apply to CMake builds as well. |
| |
| While here, delete a broken check for |
| `HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID` from `CMakeLists.txt`. This came with |
| the initial commit [1], but did not include the actual verification code |
| inside `CMake/CurlTests.c`, so it always failed. A later commit [2] |
| added a second test, for non-Windows platforms. |
| |
| Enabling this flag causes test 1056 to fail with CMake builds, as they |
| do with autotools builds. Let's apply the same solution and ignore the |
| results here as well. |
| |
| [1] 4c5307b45655ba75ab066564afdc0c111a8b9291 |
| [2] aec7c5a87c8482b6ddffa352d7d220698652262e |
| |
| Reviewed-by: Daniel Stenberg |
| Assisted-by: Marcel Raad |
| |
| Closes #9726 |
| |
| - cmake: set HAVE_GETADDRINFO_THREADSAFE on Windows |
| |
| autotools enables this configuration option unconditionally for Windows |
| [^1]. Do the same in CMake. |
| |
| The above will make this work for all reasonably recent environments. |
| The logic present in `lib/config-win32.h` [^2] has the following |
| exceptions which we did not cover in this CMake update: |
| |
| - Builds targeting Windows 2000 and earlier |
| - MS Visual C++ 5.0 (1997) and earlier |
| |
| Also make sure to disable this feature when `HAVE_GETADDRINFO` isn't |
| set, to avoid a broken build. We might want to handle that in the C |
| sources in a future commit. |
| |
| [^1]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/m4/curl-functions.m4#L2067-L2070 |
| |
| [^2]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/lib/config-win32.h#L511-L528 |
| |
| Closes #9727 |
| |
| - cmake: sync HAVE_SIGNAL detection with autotools |
| |
| `HAVE_SIGNAL` means the availability of the `signal()` function in |
| autotools, while in CMake it meant the availability of that function |
| _and_ the symbol `SIGALRM`. |
| |
| The latter is not available on Windows, but the function is, which means |
| on Windows, autotools did define `HAVE_SIGNAL`, but CMake did not, |
| introducing a slight difference into the binaries. |
| |
| This patch syncs CMake behaviour with autotools to look for the function |
| only. |
| |
| The logic came with the initial commit adding CMake support to curl, so |
| the commit history doesn't reveal the reason behind it. In any case, |
| it's best to check the existence of `SIGALRM` directly in the source |
| before use. For now, curl builds fine with `HAVE_SIGNAL` enabled and |
| `SIGALRM` missing. |
| |
| Follow-up to 68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6 |
| |
| Closes #9725 |
| |
| - cmake: delete duplicate HAVE_GETADDRINFO test |
| |
| A custom `HAVE_GETADDRINFO` check came with the initial CMake commit |
| [1]. A later commit [2] added a standard check for it as well. The |
| standard check run before the custom one, so CMake ignored the latter. |
| |
| The custom check was also non-portable, so this patch deletes it in |
| favor of the standard check. |
| |
| [1] 4c5307b45655ba75ab066564afdc0c111a8b9291 |
| [2] aec7c5a87c8482b6ddffa352d7d220698652262e |
| |
| Closes #9731 |
| |
| Daniel Stenberg (14 Oct 2022) |
| - tool_formparse: unroll the NULL_CHECK and CONST_FREE macros |
| |
| To make the code read more obvious |
| |
| Assisted-by: Jay Satiro |
| |
| Closes #9710 |
| |
| - [Christopher Sauer brought this change] |
| |
| docs/INSTALL: update Android Instructions for newer NDKs |
| |
| Closes #9732 |
| |
| - markdown-uppercase: ignore quoted sections |
| |
| Sections within the markdown ~~~ or ``` are now ignored. |
| |
| Closes #9733 |
| |
| - RELEASE-NOTES: synced |
| |
| - test8: update as cookies no longer can have "embedded" TABs in content |
| |
| - test1105: extend to verify TAB in name/content discarding cookies |
| |
| - cookie: reject cookie names or content with TAB characters |
| |
| TABs in name and content seem allowed by RFC 6265: "the algorithm strips |
| leading and trailing whitespace from the cookie name and value (but |
| maintains internal whitespace)" |
| |
| Cookies with TABs in the names are rejected by Firefox and Chrome. |
| |
| TABs in content are stripped out by Firefox, while Chrome discards the |
| whole cookie. |
| |
| TABs in cookies also cause issues in saved netscape cookie files. |
| |
| Reported-by: Trail of Bits |
| |
| URL: https://curl.se/mail/lib-2022-10/0032.html |
| URL: https://github.com/httpwg/http-extensions/issues/2262 |
| |
| Closes #9659 |
| |
| - curl/add_parallel_transfers: better error handling |
| |
| 1 - consider the transfer handled at once when in the function, to avoid |
| the same list entry to get added more than once in rare error |
| situations |
| |
| 2 - set the ERRORBUFFER for the handle first after it has been added |
| successfully |
| |
| Reported-by: Trail of Bits |
| |
| Closes #9729 |
| |
| - netrc: remove the two 'changed' arguments |
| |
| As no user of these functions used the returned content. |
| |
| - test495: verify URL encoded user name + netrc-optional |
| |
| Reproduced issue #9709 |
| |
| - netrc: use the URL-decoded user |
| |
| When the user name is provided in the URL it is URL encoded there, but |
| when used for authentication the encoded version should be used. |
| |
| Regression introduced after 7.83.0 |
| |
| Reported-by: Jonas Haag |
| Fixes #9709 |
| Closes #9715 |
| |
| - [Shaun Mirani brought this change] |
| |
| url: allow non-HTTPS HSTS-matching for debug builds |
| |
| Closes #9728 |
| |
| - test1275: remove the check of stderr |
| |
| To avoid the mysterious test failures on Windows, instead rely on the |
| error code returned on failure. |
| |
| Fixes #9716 |
| Closes #9723 |
| |
| Viktor Szakats (13 Oct 2022) |
| - lib: set more flags in config-win32.h |
| |
| The goal is to add any flag that affect the created binary, to get in |
| sync with the ones built with CMake and autotools. |
| |
| I took these flags from curl-for-win [0], where they've been tested with |
| mingw-w64 and proven to work well. |
| |
| This patch brings them to curl as follows: |
| |
| - Enable unconditionally those force-enabled via |
| `CMake/WindowsCache.cmake`: |
| |
| - `HAVE_SETJMP_H` |
| - `HAVE_STRING_H` |
| - `HAVE_SIGNAL` (CMake equivalent is `HAVE_SIGNAL_FUNC`) |
| |
| - Expand existing guards with mingw-w64: |
| |
| - `HAVE_STDBOOL_H` |
| - `HAVE_BOOL_T` |
| |
| - Enable Win32 API functions for Windows Vista and later: |
| |
| - `HAVE_INET_NTOP` |
| - `HAVE_INET_PTON` |
| |
| - Set sizes, if not already set: |
| |
| - `SIZEOF_OFF_T = 8` |
| - `_FILE_OFFSET_BITS = 64` when `USE_WIN32_LARGE_FILES` is set, |
| and using mingw-w64. |
| |
| - Add the remaining for mingw-w64 only. Feel free to expand as desired: |
| |
| - `HAVE_LIBGEN_H` |
| - `HAVE_FTRUNCATE` |
| - `HAVE_BASENAME` |
| - `HAVE_STRTOK_R` |
| |
| Future TODO: |
| |
| - `HAVE_SIGNAL` has a different meaning in CMake. It's enabled when both |
| the `signal()` function and the `SIGALRM` macro are found. In |
| autotools and this header, it means the function only. For the |
| function alone, CMake uses `HAVE_SIGNAL_FUNC`. |
| |
| [0] https://github.com/curl/curl-for-win/blob/c9b9a5f273c94c73d2b565ee892c4dff0ca97a8c/curl-m32.sh#L53-L58 |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9712 |
| |
| Daniel Stenberg (13 Oct 2022) |
| - tests: add tests/markdown-uppercase.pl to dist tarball |
| |
| Follow-up to aafb06c5928183d |
| |
| Closes #9722 |
| |
| - tool_paramhelp: asserts verify maximum sizes for string loading |
| |
| The two defines MAX_FILE2MEMORY and MAX_FILE2STRING define the largest |
| strings accepted when loading files into memory, but as the size is |
| later used as input to functions that take the size as 'int' as |
| argument, the sizes must not be larger than INT_MAX. |
| |
| These two new assert()s make the code error out if someone would bump |
| the sizes without this consideration. |
| |
| Reported-by Trail of Bits |
| |
| Closes #9719 |
| |
| - http: try parsing Retry-After: as a number first |
| |
| Since the date parser allows YYYYMMDD as a date format (due to it being |
| a bit too generic for parsing this particular header), a large integer |
| number could wrongly match that pattern and cause the parser to generate |
| a wrong value. |
| |
| No date format accepted for this header starts with a decimal number, so |
| by reversing the check and trying a number first we can deduct that if |
| that works, it was not a date. |
| |
| Reported-by Trail of Bits |
| |
| Closes #9718 |
| |
| - [Patrick Monnerat brought this change] |
| |
| doc: fix deprecation versions inconsistencies |
| |
| Ref: https://curl.se/mail/lib-2022-10/0026.html |
| |
| Closes #9711 |
| |
| - http_aws_sigv4: fix strlen() check |
| |
| The check was off-by-one leading to buffer overflow. |
| |
| Follow-up to 29c4aa00a16872 |
| |
| Detected by OSS-Fuzz |
| |
| Closes #9714 |
| |
| - curl/main_checkfds: check the fcntl return code better |
| |
| fcntl() can (in theory) return a non-zero number for success, so a |
| better test for error is checking for -1 explicitly. |
| |
| Follow-up to 41e1b30ea1b77e9ff |
| |
| Mentioned-by: Dominik Klemba |
| |
| Closes #9708 |
| |
| Viktor Szakats (12 Oct 2022) |
| - tidy-up: delete unused HAVE_STRUCT_POLLFD |
| |
| It was only defined in `lib/config-win32.h`, when building for Vista. |
| |
| It was only used in `select.h`, in a condition that also included a |
| check for `POLLIN` which is a superior choice for this detection and |
| which was already used by cmake and autotools builds. |
| |
| Delete both instances of this macro. |
| |
| Closes #9707 |
| |
| Daniel Stenberg (12 Oct 2022) |
| - test1275: verify upercase after period in markdown |
| |
| Script based on the #9474 pull-request logic, but implemented in perl. |
| |
| Updated docs/URL-SYNTAX.md accordingly. |
| |
| Suggested-by: Dan Fandrich |
| |
| Closes #9697 |
| |
| - [12932 brought this change] |
| |
| misc: nitpick grammar in comments/docs |
| |
| because the 'u' in URL is actually a consonant *sound* it is only |
| correct to write "a URL" |
| |
| sorry this is a bit nitpicky :P |
| |
| https://english.stackexchange.com/questions/152/when-should-i-use-a-vs-an |
| https://www.techtarget.com/whatis/feature/Which-is-correct-a-URL-or-an-URL |
| |
| Closes #9699 |
| |
| Viktor Szakats (11 Oct 2022) |
| - Makefile.m32: drop CROSSPREFIX and our CC/AR defaults [ci skip] |
| |
| This patch aimed to fix a regression [0], where `CC` initialization |
| moved beyond its first use. But, on closer inspection it turned out that |
| the `CC` initialization does not work as expected due to GNU Make |
| filling it with `cc` by default. So unless implicit values were |
| explicitly disabled via a GNU Make option, the default value of |
| `$CROSSPREFIX` + `gcc` was never used. At the same time the implicit |
| value `cc` maps to `gcc` in (most/all?) MinGW envs. |
| |
| `AR` has the same issue, with a default value of `ar`. |
| |
| We could reintroduce a separate variable to fix this without ill |
| effects, but for simplicity and flexibility, it seems better to drop |
| support for `CROSSPREFIX`, along with our own `CC`/`AR` init logic, and |
| require the caller to initialize `CC`, `AR` and `RC` to the full |
| (prefixed if necessary) names of these tools, as desired. |
| |
| We keep `RC ?= windres` because `RC` is empty by default. |
| |
| Also fix grammar in a comment. |
| |
| [0] 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3 |
| |
| Closes #9698 |
| |
| - smb: replace CURL_WIN32 with WIN32 |
| |
| PR #9255 aimed to fix a Cygwin/MSYS issue (#8220). It used the |
| `CURL_WIN32` macro, but that one is not defined here, while compiling |
| curl itself. This patch changes this to `WIN32`, assuming this was the |
| original intent. |
| |
| Regression from 1c52e8a3795ccdf8ec9c308f4f8f19cf10ea1f1a |
| |
| Reviewed-by: Marcel Raad |
| |
| Closes #9701 |
| |
| Daniel Stenberg (11 Oct 2022) |
| - [Matthias Gatto brought this change] |
| |
| aws_sigv4: fix header computation |
| |
| Handle canonical headers and signed headers creation as explained here: |
| https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html |
| |
| The algo tells that signed and canonical must contain at last host and |
| x-amz-date. |
| |
| So we check whatever thoses are present in the curl http headers list. |
| If they are, we use the one enter by curl user, otherwise we generate |
| them. then we to lower, and remove space from each http headers plus |
| host and x-amz-date, then sort them all by alphabetical order. |
| |
| This patch also fix a bug with host header, which was ignoring the port. |
| |
| Closes #7966 |
| |
| Jay Satiro (11 Oct 2022) |
| - [Aftab Alam brought this change] |
| |
| README.md: link the curl logo to the website |
| |
| - Link the curl:// image to https://curl.se/ |
| |
| Closes https://github.com/curl/curl/pull/9675 |
| |
| - [Dustin Howett brought this change] |
| |
| schannel: when importing PFX, disable key persistence |
| |
| By default, the PFXImportCertStore API persists the key in the user's |
| key store (as though the certificate was being imported for permanent, |
| ongoing use.) |
| |
| The documentation specifies that keys that are not to be persisted |
| should be imported with the flag PKCS12_NO_PERSIST_KEY. |
| NOTE: this flag is only supported on versions of Windows newer than XP |
| and Server 2003. |
| |
| -- |
| |
| This is take 2 of the original fix. It extends the lifetime of the |
| client certificate store to that of the credential handle. The original |
| fix which landed in 70d010d and was later reverted in aec8d30 failed to |
| work properly because it did not do that. |
| |
| Minor changes were made to the schannel credential context to support |
| closing the client certificate store handle at the end of an SSL session. |
| |
| -- |
| |
| Reported-by: ShadowZzj@users.noreply.github.com |
| |
| Fixes https://github.com/curl/curl/issues/9300 |
| Supersedes https://github.com/curl/curl/pull/9363 |
| Closes https://github.com/curl/curl/pull/9460 |
| |
| Viktor Szakats (11 Oct 2022) |
| - Makefile.m32: support more options [ci skip] |
| |
| - Add support for these options: |
| `-wolfssl`, `-wolfssh`, `-mbedtls`, `-libssh`, `-psl` |
| |
| Caveats: |
| - `-wolfssh` requires `-wolfssl`. |
| - `-wolfssl` cannot be used with OpenSSL backends in parallel. |
| - `-libssh` has build issues with BoringSSL and LibreSSL, and also |
| what looks like a world-writable-config vulnerability on Windows. |
| Consider it experimental. |
| - `-psl` requires `-idn2` and extra libs passed via |
| `LIBS=-liconv -lunistring`. |
| |
| - Detect BoringSSL/wolfSSL and set ngtcp2 crypto lib accordingly. |
| - Generalize MultiSSL detection. |
| - Use else-if syntax. Requires GNU Make 3.81 (2006-04-01). |
| - Document more customization options. |
| |
| This brings over some configuration logic from `curl-for-win`. |
| |
| Closes #9680 |
| |
| - cmake: enable more detection on Windows |
| |
| Enable `HAVE_UNISTD_H`, `HAVE_STRTOK_R` and `HAVE_STRCASECMP` detection |
| on Windows, instead of having predefined values. |
| |
| With these features detected correctly, CMake Windows builds get closer |
| to the autotools and `config-win32.h` ones. |
| |
| This also fixes detecting `HAVE_FTRUNCATE` correctly, which required |
| `unistd.h`. |
| |
| Fixing `ftruncate()` in turn causes a build warning/error with legacy |
| MinGW/MSYS1 due to an offset type size mismatch. This env misses to |
| detect `HAVE_FILE_OFFSET_BITS`, which may be a reason. This patch |
| force-disables `HAVE_FTRUNCATE` for this platform. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9687 |
| |
| - autotools: allow unix sockets on Windows |
| |
| Fixes: https://github.com/curl/curl-for-win/blob/73a070d96fd906fdee929e2f1f00a9149fb39239/curl-autotools.sh#L44-L47 |
| |
| On Windows this feature is present, but not the header used in the |
| detection logic. It also requires an elaborate enabler logic |
| (as seen in `lib/curl_setup.h`). Let's always allow it and let the |
| lib code deal with the details. |
| |
| Closes #9688 |
| |
| - cmake: add missing inet_ntop check |
| |
| This adds the missing half of the check, next to the other half |
| already present in `lib/curl_config.h.cmake`. |
| |
| Force disable `HAVE_INET_NTOP` for old MSVC where it caused compiler |
| warnings. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9689 |
| |
| Daniel Stenberg (11 Oct 2022) |
| - RELEASE-NOTES: synced |
| |
| - [bsergean on github brought this change] |
| |
| asyn-ares: set hint flags when calling ares_getaddrinfo |
| |
| The hint flag is ARES_AI_NUMERICSERV, and it will save a call to |
| getservbyname or getservbyname_r to set it. |
| |
| Closes #9694 |
| |
| - header.d: add category smtp and imap |
| |
| They were previously (erroneously) added manually to tool_listhelp.c |
| which would make them get removed again when the file is updated next |
| time, unless added correctly here in header.d |
| |
| Follow-up to 2437fac01 |
| |
| Closes #9690 |
| |
| - curl/get_url_file_name: use libcurl URL parser |
| |
| To avoid URL tricks, use the URL parser for this. |
| |
| This update changes curl's behavior slightly in that it will ignore the |
| possible query part from the URL and only use the file name from the |
| actual path from the URL. I consider it a bugfix. |
| |
| "curl -O localhost/name?giveme-giveme" will now save the output in the |
| local file named 'name' |
| |
| Updated test 1210 to verify |
| |
| Assisted-by: Jay Satiro |
| |
| Closes #9684 |
| |
| - [Martin Ć
gren brought this change] |
| |
| docs: fix grammar around needing pass phrase |
| |
| "You never needed a pass phrase" reads like it's about to be followed by |
| something like "until version so-and-so", but that is not what is |
| intended. Change to "You never need a pass phrase". There are two |
| instances of this text, so make sure to update both. |
| |
| - [Xiang Xiao brought this change] |
| |
| cmake: add the check of HAVE_SOCKETPAIR |
| |
| which is used by Curl_socketpair |
| |
| Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com> |
| |
| Closes #9686 |
| |
| - curl/add_file_name_to_url: use the libcurl URL parser |
| |
| instead of the custom error-prone parser, to extract and update the path |
| of the given URL |
| |
| Closes #9683 |
| |
| - single_transfer: use the libcurl URL parser when appending query parts |
| |
| Instead of doing "manual" error-prone parsing in another place. |
| |
| Used when --data contents is added to the URL query when -G is provided. |
| |
| Closes #9681 |
| |
| - ws: fix buffer pointer use in the callback loop |
| |
| Closes #9678 |
| |
| - [Petr Å tetiar brought this change] |
| |
| curl-wolfssl.m4: error out if wolfSSL is not usable |
| |
| When I explicitly declare, that I would like to have curl built with |
| wolfSSL support using `--with-wolfssl` configure option, then I would |
| expect, that either I endup with curl having that support, for example |
| in form of https support or it wouldn't be available at all. |
| |
| Downstream projects like for example OpenWrt build curl wolfSSL variant |
| with `--with-wolfssl` already, but in certain corner cases it does fail: |
| |
| configure:25299: checking for wolfSSL_Init in -lwolfssl |
| configure:25321: x86_64-openwrt-linux-musl-gcc -o conftest [snip] |
| In file included from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/dsa.h:33, |
| from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/asn_public.h:35, |
| from target-x86_64_musl/usr/include/wolfssl/ssl.h:35, |
| from conftest.c:47: |
| target-x86_64_musl/usr/include/wolfssl/wolfcrypt/integer.h:37:14: fatal error: wolfssl/wolfcrypt/sp_int.h: No such file or directory |
| #include <wolfssl/wolfcrypt/sp_int.h> |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| compilation terminated. |
| |
| and in the end thus produces curl without https support: |
| |
| curl: (1) Protocol "https" not supported or disabled in libcurl |
| |
| So fix it, by making the working wolfSSL mandatory and error out in |
| configure step when that's not the case: |
| |
| checking for wolfSSL_Init in -lwolfssl... no |
| configure: error: --with-wolfssl but wolfSSL was not found or doesn't work |
| |
| References: https://github.com/openwrt/packages/issues/19005 |
| References: https://github.com/openwrt/packages/issues/19547 |
| Signed-off-by: Petr Å tetiar <ynezz@true.cz> |
| |
| Closes #9682 |
| |
| - tool_getparam: pass in the snprintf("%.*s") string length as 'int' |
| |
| Reported by Coverity CID 1515928 |
| |
| Closes #9679 |
| |
| - [Paul Seligman brought this change] |
| |
| ws: minor fixes for web sockets without the CONNECT_ONLY flag |
| |
| - Fixed an issue where is_in_callback was getting cleared when using web |
| sockets with debug logging enabled |
| - Ensure the handle is is_in_callback when calling out to fwrite_func |
| - Change the write vs. send_data decision to whether or not the handle |
| is in CONNECT_ONLY mode. |
| - Account for buflen not including the header length in curl_ws_send |
| |
| Closes #9665 |
| |
| Marc Hoersken (8 Oct 2022) |
| - CI/cirrus: merge existing macOS jobs into a job matrix |
| |
| Ref: #9627 |
| Reviewed-by: Philip H. |
| |
| Closes #9672 |
| |
| Daniel Stenberg (8 Oct 2022) |
| - strcase: add and use Curl_timestrcmp |
| |
| This is a strcmp() alternative function for comparing "secrets", |
| designed to take the same time no matter the content to not leak |
| match/non-match info to observers based on how fast it is. |
| |
| The time this function takes is only a function of the shortest input |
| string. |
| |
| Reported-by: Trail of Bits |
| |
| Closes #9658 |
| |
| - tool_getparam: split out data_urlencode() into its own function |
| |
| Closes #9673 |
| |
| - connect: fix Curl_updateconninfo for TRNSPRT_UNIX |
| |
| Reported-by: Vasiliy Ulyanov |
| Fixes #9664 |
| Closes #9670 |
| |
| - ws: fix Coverity complaints |
| |
| Coverity pointed out several flaws where variables remained |
| uninitialized after forks. |
| |
| Follow-up to e3f335148adc6742728f |
| |
| Closes #9666 |
| |
| Marc Hoersken (7 Oct 2022) |
| - CI/GHA: merge msh3 and openssl3 builds into linux workflow |
| |
| Continue work on merging all Linux workflows into one file. |
| |
| Follow up to #9501 |
| Closes #9646 |
| |
| Daniel Stenberg (7 Oct 2022) |
| - curl_ws_send.3: call the argument 'fragsize' |
| |
| Since WebSocket works with "fragments" not "frames" |
| |
| Closes #9668 |
| |
| - easy: avoid Intel error #2312: pointer cast involving 64-bit pointed-to type |
| |
| Follow-up to e3f335148adc6742728ff8 |
| |
| Closes #9669 |
| |
| - tool_main: exit at once if out of file descriptors |
| |
| If the main_checkfds function cannot create new file descriptors in an |
| attempt to detect of stdin, stdout or stderr are closed. |
| |
| Also changed the check to use fcntl() to check if the descriptors are |
| open, which avoids superfluously calling pipe() if they all already are. |
| |
| Follow-up to facfa19cdd4d0094 |
| |
| Reported-by: Trail of Bits |
| |
| Closes #9663 |
| |
| - websockets: remodeled API to support 63 bit frame sizes |
| |
| curl_ws_recv() now receives data to fill up the provided buffer, but can |
| return a partial fragment. The function now also get a pointer to a |
| curl_ws_frame struct with metadata that also mentions the offset and |
| total size of the fragment (of which you might be receiving a smaller |
| piece). This way, large incoming fragments will be "streamed" to the |
| application. When the curl_ws_frame struct field 'bytesleft' is 0, the |
| final fragment piece has been delivered. |
| |
| curl_ws_recv() was also adjusted to work with a buffer size smaller than |
| the fragment size. (Possibly needless to say as the fragment size can |
| now be 63 bit large). |
| |
| curl_ws_send() now supports sending a piece of a fragment, in a |
| streaming manner, in addition to sending the entire fragment in a single |
| call if it is small enough. To send a huge fragment, curl_ws_send() can |
| be used to send it in many small calls by first telling libcurl about |
| the total expected fragment size, and then send the payload in N number |
| of separate invokes and libcurl will stream those over the wire. |
| |
| The struct curl_ws_meta() returns is now called 'curl_ws_frame' and it |
| has been extended with two new fields: *offset* and *bytesleft*. To help |
| describe the passed on data chunk when a fragment is delivered in many |
| smaller pieces. |
| |
| The documentation has been updated accordingly. |
| |
| Closes #9636 |
| |
| - [Patrick Monnerat brought this change] |
| |
| docs/examples: avoid deprecated options in examples where possible |
| |
| Example programs targeting a deprecated feature/option are commented with |
| a warning about it. |
| Other examples are adapted to not use deprecated options. |
| |
| Closes #9661 |
| |
| Viktor Szakats (6 Oct 2022) |
| - cmake: fix enabling websocket support |
| |
| Follow-up from 664249d095275ec532f55dd1752d80c8c1093a77 |
| |
| Closes #9660 |
| |
| - tidy-up: delete parallel/unused feature flags |
| |
| Detecting headers and lib separately makes sense when headers come in |
| variations or with extra ones, but this wasn't the case here. These were |
| duplicate/parallel macros that we had to keep in sync with each other |
| for a working build. This patch leaves a single macro for each of these |
| dependencies: |
| |
| - Rely on `HAVE_LIBZ`, delete parallel `HAVE_ZLIB_H`. |
| |
| Also delete CMake logic making sure these two were in sync, along with |
| a toggle to turn off that logic, called `CURL_SPECIAL_LIBZ`. |
| |
| Also delete stray `HAVE_ZLIB` defines. |
| |
| There is also a `USE_ZLIB` variant in `lib/config-dos.h`. This patch |
| retains it for compatibility and deprecates it. |
| |
| - Rely on `USE_LIBSSH2`, delete parallel `HAVE_LIBSSH2_H`. |
| |
| Also delete `LIBSSH2_WIN32`, `LIBSSH2_LIBRARY` from |
| `winbuild/MakefileBuild.vc`, these have a role when building libssh2 |
| itself. And `CURL_USE_LIBSSH`, which had no use at all. |
| |
| Also delete stray `HAVE_LIBSSH2` defines. |
| |
| - Rely on `USE_LIBSSH`, delete parallel `HAVE_LIBSSH_LIBSSH_H`. |
| |
| Also delete `LIBSSH_WIN32`, `LIBSSH_LIBRARY` and `HAVE_LIBSSH` from |
| `winbuild/MakefileBuild.vc`, these were the result of copy-pasting the |
| libssh2 line, and were not having any use. |
| |
| - Delete unused `HAVE_LIBPSL_H` and `HAVE_LIBPSL`. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9652 |
| |
| Daniel Stenberg (6 Oct 2022) |
| - netrc: compare user name case sensitively |
| |
| User name comparisions in netrc need to match the case. |
| |
| Closes #9657 |
| |
| - CURLOPT_COOKIEFILE: insist on "" for enable-without-file |
| |
| The former way that also suggested using a non-existing file to just |
| enable the cookie engine could lead to developers maybe a bit carelessly |
| guessing a file name that will not exist, and then in a future due to |
| circumstances, such a file could be made to exist and then accidentally |
| libcurl would read cookies not actually meant to. |
| |
| Reported-by: Trail of bits |
| |
| Closes #9654 |
| |
| - tests/Makefile: remove run time stats from ci-test |
| |
| The ci-test is the normal makefile target invoked in CI jobs. This has |
| been using the -r option to runtests.pl since a long time, but I find |
| that it mostly just adds many lines to the test output report without |
| anyone caring much about those stats. |
| |
| Remove it. |
| |
| Closes #9656 |
| |
| - [Patrick Monnerat brought this change] |
| |
| tool: reorganize function c_escape around a dynbuf |
| |
| This is a bit shorter and a lot safer. |
| |
| Substrings of unescaped characters are added by a single call to reduce |
| overhead. |
| |
| Extend test 1465 to handle more kind of escapes. |
| |
| Closes #9653 |
| |
| Jay Satiro (5 Oct 2022) |
| - CURLOPT_HTTPPOST.3: bolden the deprecation notice |
| |
| Ref: https://github.com/curl/curl/pull/9621 |
| |
| Closes https://github.com/curl/curl/pull/9637 |
| |
| Daniel Stenberg (5 Oct 2022) |
| - [John Bampton brought this change] |
| |
| misc: fix spelling in docs and comments |
| |
| also: remove outdated sentence |
| |
| Closes #9644 |
| |
| - [Patrick Monnerat brought this change] |
| |
| tool: avoid generating ambiguous escaped characters in --libcurl |
| |
| C string hexadecimal-escaped characters may have more than 2 digits. |
| This results in a wrong C compiler interpretation of a 2-digit escaped |
| character when followed by an hex digit character. |
| |
| The solution retained here is to represent such characters as 3-digit |
| octal escapes. |
| |
| Adjust and extend test 1465 for this case. |
| |
| Closes #9643 |
| |
| - configure: the ngtcp2 option should default to 'no' |
| |
| While still experimental. |
| |
| Bug: https://curl.se/mail/lib-2022-10/0007.html |
| Reported-by: Daniel Hallberg |
| |
| Closes #9650 |
| |
| - CURLOPT_MIMEPOST.3: add an (inline) example |
| |
| Reported-by: Jay Satiro |
| Bug: https://github.com/curl/curl/pull/9637#issuecomment-1268070723 |
| |
| Closes #9649 |
| |
| Viktor Szakats (5 Oct 2022) |
| - Makefile.m32: exclude libs & libpaths for shared mode exes [ci skip] |
| |
| Exclude linker flags specifying depedency libs and libpaths, when |
| building against `libcurl.dll`. In such case these options are not |
| necessary (but may cause errors if not/wrongly configured.) |
| |
| Also move and reword a comment on `CPPFLAGS` to not apply to |
| `UNICODE` options. These are necessary for all build targets. |
| |
| Closes #9651 |
| |
| Jay Satiro (5 Oct 2022) |
| - runtests: fix uninitialized value on ignored tests |
| |
| - Don't show TESTFAIL message (ie tests failed which aren't ignored) if |
| only ignored tests failed. |
| |
| Before: |
| IGNORED: failed tests: 571 612 1056 |
| TESTDONE: 1214 tests out of 1217 reported OK: 99% |
| Use of uninitialized value $failed in concatenation (.) or string at |
| ./runtests.pl line 6290. |
| TESTFAIL: These test cases failed: |
| |
| After: |
| IGNORED: failed tests: 571 612 1056 |
| TESTDONE: 1214 tests out of 1217 reported OK: 99% |
| |
| Closes https://github.com/curl/curl/pull/9648 |
| |
| - cirrus: use make LDFLAGS=-all-static instead of curl_LDFLAGS |
| |
| - Correct the use of -all-static for static Windows CI builds. |
| |
| curl_LDFLAGS was removed from the makefile when metalink support was |
| removed. LDFLAGS=-all-static is passed to make only, because it is not a |
| valid option for configure compilation tests. |
| |
| Closes https://github.com/curl/curl/pull/9633 |
| |
| Viktor Szakats (4 Oct 2022) |
| - Makefile.m32: fix regression with tool_hugehelp [ci skip] |
| |
| In a recent commit I mistakenly deleted this logic, after seeing a |
| reference to a filename ending with `.cvs` and thinking it must have |
| been long gone. Turns out this is an existing file. Restore the rule |
| and the necessary `COPY` definitions with it. |
| |
| The restored logic is required for a successful build on a bare source |
| tree (as opposed to a source release tarball). |
| |
| Also shorten an existing condition similar to the one added in this |
| patch. |
| |
| Regression since 07a0047882dd3f1fbf73486c5dd9c15370877ad6 |
| |
| Closes #9645 |
| |
| - Makefile.m32: deduplicate build rules [ci skip] |
| |
| After this patch, we reduce the three copies of most `Makefile.m32` |
| logic to one. This now resides in `lib/Makefile.m32`. It makes future |
| updates easier, the code shorter, with a small amount of added |
| complexity. |
| |
| `Makefile.m32` reduction: |
| |
| | | bytes | LOC total | blank | comment | code | |
| |-------------------|-------:|----------:|-------:|---------:|------:| |
| | 7.85.0 | 34772 | 1337 | 79 | 192 | 1066 | |
| | before this patch | 17601 | 625 | 62 | 106 | 457 | |
| | after this patch | 11680 | 392 | 52 | 104 | 236 | |
| |
| Details: |
| |
| - Change rules to create objects for the `v*` subdirs in the `lib` dir. |
| This allows to use a shared compile rule and assumes that filenames |
| are not (and will not be) colliding across these directories. |
| `Makefile.m32` now also stores a list of these subdirs. They are |
| changing rarely though. |
| |
| - Sync as much as possible between the three `Makefile.m32` scripts' |
| rules and their source/target sections. |
| |
| - After this patch `CPPFLAGS` are all applied to the `src` sources once |
| again. This matches the behaviour of cmake/autotools. Only zlib ones |
| are actually required there. |
| |
| - Use `.rc` names from `Makefile.inc` instead of keeping a duplicate. |
| |
| - Change examples to link `libcurl.dll` by default. This makes building |
| trivial, even as a cross-build: |
| `CC=x86_64-w64-mingw32-gcc make -f Makefile.m32` |
| To run them, you need to move/copy or add-to-path `libcurl.dll`. |
| You can select static mode via `CFG=-static`. |
| |
| - List more of the `Makefile.m32` config variables. |
| |
| - Drop `.rc` support from examples. It made it fragile without much |
| benefit. |
| |
| - Include a necessary system lib for the `externalsocket.c` example. |
| |
| - Exclude unnecessary systems libs when building in `-dyn` mode. |
| |
| Closes #9642 |
| |
| Daniel Stenberg (4 Oct 2022) |
| - RELEASE-NOTES: synced |
| |
| - CURLOPT_COOKIELIST.3: fix formatting mistake |
| |
| Also, updated manpage-syntax.pl to make it detect this error in test |
| 1173. |
| |
| Reported-by: ProceduralMan on github |
| Fixes #9639 |
| Closes #9640 |
| |
| - [Jay Satiro brought this change] |
| |
| connect: change verbose IPv6 address:port to [address]:port |
| |
| - Use brackets for the IPv6 address shown in verbose message when the |
| format is address:port so that it is less confusing. |
| |
| Before: Trying 2606:4700:4700::1111:443... |
| After: Trying [2606:4700:4700::1111]:443... |
| |
| Bug: https://curl.se/mail/archive-2022-02/0041.html |
| Reported-by: David Hu |
| |
| Closes #9635 |
| |
| Viktor Szakats (3 Oct 2022) |
| - Makefile.m32: major rework [ci skip] |
| |
| This patch overhauls `Makefile.m32` scripts, fixing a list of quirks, |
| making its behaviour and customization envvars align better with other |
| build systems, aiming for less code, that is easier to read, use and |
| maintain. |
| |
| Details: |
| - Rename customization envvars: |
| `CURL_CC` -> `CC` |
| `CURL_RC` -> `RC` |
| `CURL_AR` -> `AR` |
| `CURL_LDFLAG_EXTRAS_DLL` -> `CURL_LDFLAGS_LIB` |
| `CURL_LDFLAG_EXTRAS_EXE` -> `CURL_LDFLAGS_BIN` |
| - Drop `CURL_STRIP` and `CURL_RANLIB`. These tools are no longer used. |
| - Accept `CFLAGS`, `CPPFLAGS`, `RCFLAGS`, `LDFLAGS` and `LIBS` envvars. |
| - Drop `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, `CURL_RCFLAG_EXTRAS` in |
| favor of the above. |
| - Do not automatically enable `zlib` with `libssh2`. `zlib` is optional |
| with `libssh2`. |
| - Omit unnecessary `CPPFLAGS` options when building `curl.exe` and |
| examples. |
| - Drop support for deprecated `-winssl` `CFG` option. Use `-schannel` |
| instead. |
| - Avoid late evaluation where not necessary (`=` -> `:=`). |
| - Drop support for `CURL_DLL_A_SUFFIX` to override the implib suffix. |
| Instead, use the standard naming scheme by default: `libcurl.dll.a`. |
| The toolchain recognizes the name, and selects it automatically when |
| asking for a `-shared` vs. `-static` build. |
| - Stop applying `strip` to `libcurl.a`. Follow-up from |
| 16a58e9f93c7e89e1f87720199388bcfcfa148a4. There was no debug info to |
| strip since then. |
| - Stop setting `-O3`, `-W`, `-Wall` options. You can add these to |
| `CFLAGS` as desired. |
| - Always enable `-DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG` with OpenSSL, |
| to avoid that vulnerability on Windows. |
| - Add `-lbrotlicommon` to `LIBS` when using `brotli`. |
| - Do not enable `-nghttp3` without `-ngtcp2`. |
| - `-ssh2` and `-rtmp` options no longer try to auto-select a TLS-backend. |
| You need to set the backend explicitly. This scales better and avoids |
| issues with certain combinations (e.g. `libssh2` + `wolfssl` with no |
| `schannel`). |
| - Default to OpenSSL TLS-backend with `ngtcp2`. Possible to override via |
| `NGTCP2_LIBS`. |
| - Old, alternate method of enabling components (e.g. `SSH2=1`) no longer |
| supported. |
| - Delete `SPNEGO` references. They were no-ops. |
| - Drop support for Win9x environments. |
| - Allow setting `OPENSSL_LIBS` independently from `OPENSSL_LIBPATH`. |
| - Support autotools/CMake `libssh2` builds by default. |
| - Respect `CURL_DLL_SUFFIX` in `-dyn` mode when building `curl.exe` and |
| examples. |
| - Assume standard directory layout with `LIBCARES_PATH`. (Instead of the |
| long gone embedded one.) |
| - Stop static linking with c-ares by default. Add |
| `CPPFLAGS=-DCARES_STATICLIB` to enable it. |
| - Reorganize internal layout to avoid redundancy and emit clean diffs |
| between src/lib and example make files. |
| - Delete unused variables. |
| - Code cleanups/rework. |
| - Comment and indentation fixes. |
| |
| Closes #9632 |
| |
| - scripts/release-notes.pl: strip ci skip tag [ci skip] |
| |
| Ref: https://github.com/curl/curl/commit/e604a82cae922bf86403a94f5803ac5e4303ae97#commitcomment-85637701 |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9634 |
| |
| - Makefile.m32: delete legacy component bits [ci skip] |
| |
| - Drop auto-detection of OpenSSL 1.0.2 and earlier. Now always defaulting |
| to OpenSSL 1.1.0 and later, LibreSSL and BoringSSL. |
| |
| - Drop `Invalid path to OpenSSL package` detection. OpenSSL has been |
| using a standard file layout since 1.1.0, so this seems unnecessary |
| now. |
| |
| - Drop special logic to enable Novell LDAP SDK support. |
| |
| - Drop special logic to enable OpenLDAP LDAP SDK support. This seems |
| to be distinct from native OpenLDAP, with support implemented inside |
| `lib/ldap.c` (vs. `lib/openldap.c`) back when the latter did not exist |
| yet in curl. |
| |
| - Add `-lwldap32` only if there is no other LDAP library (either native |
| OpenLDAP, or SDKs above) present. |
| |
| - Update `doc/INSTALL.md` accordingly. |
| |
| After this patch, it's necessary to make configration changes when using |
| OpenSSL 1.0.2 or earlier, or the two LDAP SDKs. |
| |
| OpenSSL 1.0.2 and earlier: |
| ``` |
| export OPENSSL_INCLUDE = <path-to-openssl>/outinc |
| export OPENSSL_LIBPATH = <path-to-openssl>/out |
| export OPENSSL_LIBS = -lssl32 -leay32 -lgdi32 |
| ``` |
| |
| Novell LDAP SDK, previously enabled via `USE_LDAP_NOVELL=1`: |
| ``` |
| export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/inc -DCURL_HAS_NOVELL_LDAPSDK |
| export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib/mscvc -lldapsdk -lldapssl -lldapx |
| ``` |
| |
| OpenLDAP LDAP SDK, previously enabled via `USE_LDAP_OPENLDAP=1`: |
| ``` |
| export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/include -DCURL_HAS_OPENLDAP_LDAPSDK |
| export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib -lldap -llber |
| ``` |
| |
| I haven't tested these scenarios, and in general we recommend using |
| a recent OpenSSL release. Also, WinLDAP (the Windows default) and |
| OpenLDAP (via `-DUSE_OPENLDAP`) are the LDAP options actively worked on |
| in curl. |
| |
| Closes #9631 |
| |
| Daniel Stenberg (2 Oct 2022) |
| - vauth/ntlm.h: make line shorter than 80 columns |
| |
| Follow-up from 265fbd937 |
| |
| Viktor Szakats (1 Oct 2022) |
| - docs: update sourceforge project links [ci skip] |
| |
| SourceForge projects can now choose between two hostnames, with .io and |
| .net ending. Both support HTTPS by default now. Opening the other variant |
| will perm-redirected to the one chosen by the project. |
| |
| The .io -> .net redirection is done insecurely. |
| |
| Let's update the URLs to point to the current canonical endpoints to |
| avoid any redirects. |
| |
| Closes #9630 |
| |
| Daniel Stenberg (1 Oct 2022) |
| - curl_url_set.3: document CURLU_APPENDQUERY proper |
| |
| Listed among the other supported flags. |
| |
| Reported-by: Robby Simpson |
| Fixes #9628 |
| Closes #9629 |
| |
| Viktor Szakats (1 Oct 2022) |
| - Makefile.m32: cleanups and fixes [ci skip] |
| |
| - Add `-lcrypt32` once, and add it always for simplicity. |
| - Delete broken link and reference to the pre-Vista WinIDN add-on. |
| MS no longer distribute it. |
| - Delete related `WINIDN_PATH` option. IDN is a system lib since Vista. |
| - Sync `LIBCARES_PATH` default with the rest of dependencies. |
| - Delete version numbers from dependency path defaults. |
| - `libgsasl` package is now called `gsasl`. |
| - Delete `libexpat` and `libxml2` references. No longer used by curl. |
| - Delete `Edit the path below...` comments. We recommend to predefine |
| those envvars instead. |
| - `libcares.a` is not an internal dependency anymore. Stop using it as |
| such. |
| - `windres` `--include-dir` -> `-I`, `-F` -> `--target=` for readability. |
| - Delete `STRIP`, `CURL_STRIP`, `AR` references from `src/Makefile.m32`. |
| They were never used. |
| - Stop to `clean` some objects twice in `src/Makefile.m32`. |
| - Delete cvs-specific leftovers. |
| - Finish resource support in examples make file. |
| - Delete `-I<root>/lib` from examples make file. |
| - Fix copyright start year in examples make file. |
| - Delete duplicate `ftpuploadresume` input in examples make file. |
| - Sync OpenSSL lib order, `SYNC` support, `PROOT` use, dependency path |
| defaults, variables names and other internal bits between the three |
| make files. |
| - `lib/Makefile.m32` accepted custom options via `DLL_LIBS` envvar. This |
| was lib-specific and possibly accidental. Use `CURL_LDFLAG_EXTRAS_DLL` |
| envvar for the same effect. |
| - Fix linking `curl.exe` and examples to wrong static libs with |
| auto-detected OpenSSL 1.0.2 or earlier. |
| - Add `-lgdi32` for OpenSSL 1.0.2 and earlier only. |
| - Add link to Novell LDAP SDK and use a relative default path. Latest |
| version is from 2016, linked to an outdated OpenSSL 1.0.1. |
| - Whitespace and comment cleanups. |
| |
| TODO in a next commit: |
| |
| Delete built-in detection/logic for OpenSSL 1.0.2 and earlier, the Novell |
| LDAP SDK and the other LDAP SDK (which is _not_ OpenLDAP). Write up the |
| necessary custom envvars to configure them. |
| |
| Closes #9616 |
| |
| Daniel Stenberg (30 Sep 2022) |
| - RELEASE-NOTES: synced |
| |
| - [Matt Holt brought this change] |
| |
| HTTP3.md: update Caddy example |
| |
| Closes #9623 |
| |
| - easy: fix the altsvc init for curl_easy_duphandle |
| |
| It was using the old #ifdef which nothing sets anymore |
| |
| Closes #9624 |
| |
| - GHA: build tests in a separate step from the running of them |
| |
| ... to make the output smaller for when you want to look at test |
| failures. |
| |
| Removed the examples build from msh3 |
| |
| Closes #9619 |
| |
| Viktor Szakats (29 Sep 2022) |
| - ldap: delete stray CURL_HAS_MOZILLA_LDAP reference |
| |
| Added in 68b215157fdf69612edebdb220b3804822277822, while adding openldap |
| support. This is also the single mention of this constant in the source |
| tree and also in that commit. Based on these, it seems like an accident. |
| |
| Delete this reference. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9625 |
| |
| - docs: spelling nits |
| |
| - MingW -> MinGW (Minimalist GNU for Windows) |
| - f.e. -> e.g. |
| - some whitespace and punctuation. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9622 |
| |
| Daniel Stenberg (29 Sep 2022) |
| - [Philip Heiduck brought this change] |
| |
| cirrus-ci: add macOS build with m1 |
| |
| Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> |
| |
| Closes #9565 |
| |
| - [Patrick Monnerat brought this change] |
| |
| lib: sanitize conditional exclusion around MIME |
| |
| The introduction of CURL_DISABLE_MIME came with some additional bugs: |
| - Disabled MIME is compiled-in anyway if SMTP and/or IMAP is enabled. |
| - CURLOPT_MIMEPOST, CURLOPT_MIME_OPTIONS and CURLOPT_HTTPHEADER are |
| conditioned on HTTP, although also needed for SMTP and IMAP MIME mail |
| uploads. |
| |
| In addition, the CURLOPT_HTTPHEADER and --header documentation does not |
| mention their use for MIME mail. |
| |
| This commit fixes the problems above. |
| |
| Closes #9610 |
| |
| - [Thiago Suchorski brought this change] |
| |
| docs: minor grammar fixes |
| |
| Closes #9609 |
| |
| - CURLSHOPT_UNLOCKFUNC.3: the callback as no 'access' argument |
| |
| Probably a copy and paste error from the lock function man page. |
| |
| Reported-by: Robby Simpson |
| Fixes #9612 |
| Closes #9613 |
| |
| - CURLOPT_ACCEPT_ENCODING.3: remove "four" as they are five |
| |
| ... instead just list the supported encodings. |
| |
| Reported-by: ProceduralMan on github |
| Fixes #9614 |
| Closes #9615 |
| |
| Dan Fandrich (28 Sep 2022) |
| - tests: Remove a duplicated keyword |
| |
| - docs: document more server names for test files |
| |
| Daniel Stenberg (28 Sep 2022) |
| - altsvc: reject bad port numbers |
| |
| The existing code tried but did not properly reject alternative services |
| using negative or too large port numbers. |
| |
| With this fix, the logic now also flushes the old entries immediately |
| before adding a new one, making a following header with an illegal entry |
| not flush the already stored entry. |
| |
| Report from the ongoing source code audit by Trail of Bits. |
| |
| Adjusted test 356 to verify. |
| |
| Closes #9607 |
| |
| - functypes: provide the recv and send arg and return types |
| |
| This header is for providing the argument types for recv() and send() |
| when built to not use a dedicated config-[platfor].h file. |
| |
| Remove the slow brute-force checks from configure and cmake. |
| |
| This change also removes the use of the types for select, as they were |
| not used in code. |
| |
| Closes #9592 |
| |
| - urlapi: reject more bad characters from the host name field |
| |
| Extended test 1560 to verify |
| |
| Report from the ongoing source code audit by Trail of Bits. |
| |
| Closes #9608 |
| |
| - configure: deprecate builds with small curl_off_t |
| |
| If curl_off_t turns out to be smaller than 8 bytes, |
| --with-n64-deprecated needs to be used to allow the build to |
| continue. This is to highlight the fact that support for such builds is |
| going away next year. |
| |
| Also mentioned in DEPRECATED.md |
| |
| Closes #9605 |
| |
| - [Patrick Monnerat brought this change] |
| |
| http, vauth: always provide Curl_allow_auth_to_host() functionality |
| |
| This function is currently located in the lib/http.c module and is |
| therefore disabled by the CURL_DISABLE_HTTP conditional token. |
| |
| As it may be called by TLS backends, disabling HTTP results in an |
| undefined reference error at link time. |
| |
| Move this function to vauth/vauth.c to always provide it and rename it |
| as Curl_auth_allowed_to_host() to respect the vauth module naming |
| convention. |
| |
| Closes #9600 |
| |
| - ngtcp2: fix C89 compliance nit |
| |
| - openssl: make certinfo available for QUIC |
| |
| Curl_ossl_certchain() is now an exported function in lib/vtls/openssl.c that |
| can also be used from quiche.c and ngtcp2.c to get the cert chain for QUIC |
| connections as well. |
| |
| The *certchain function was moved to the top of the file for this reason. |
| |
| Reported-by: Eloy Degen |
| Fixes #9584 |
| Closes #9597 |
| |
| - RELEASE-NOTES: synced |
| |
| - DEPRECATE.md: Support for systems without 64 bit data types |
| |
| Closes #9604 |
| |
| - [Patrick Monnerat brought this change] |
| |
| tests: skip mime/form tests when mime is not built-in |
| |
| Closes #9596 |
| |
| - url: rename function due to name-clash in Watt-32 |
| |
| Follow-up to 2481dbe5f4f58 and applies the change the way it was |
| intended. |
| |
| Viktor Szakats (26 Sep 2022) |
| - windows: adjust name of two internal public functions |
| |
| According to `docs/INTERNALS.md`, internal function names spanning source |
| files start with uppercase `Curl_`. Bring these two functions in |
| alignment with this. |
| |
| This also stops exporting them from `libcurl.dll` in autotools builds. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9598 |
| |
| Daniel Stenberg (26 Sep 2022) |
| - [Gisle Vanem brought this change] |
| |
| url: rename function due to name-clash in Watt-32 |
| |
| Since the commit 764c958c52edb427f39, there was a new function called |
| resolve_ip(). This clashes with an internal function in Watt-32. |
| |
| Closes #9585 |
| |
| Jay Satiro (26 Sep 2022) |
| - schannel: ban server ALPN change during recv renegotiation |
| |
| By the time schannel_recv is renegotiating the connection, libcurl has |
| already decided on a protocol and it is too late for the server to |
| select a protocol via ALPN except for the originally selected protocol. |
| |
| Ref: https://github.com/curl/curl/issues/9451 |
| |
| Closes https://github.com/curl/curl/pull/9463 |
| |
| Daniel Stenberg (26 Sep 2022) |
| - url: a zero-length userinfo part in the URL is still a (blank) user |
| |
| Adjusted test 1560 to verify |
| |
| Reported-by: Jay Satiro |
| |
| Fixes #9088 |
| Closes #9590 |
| |
| Viktor Szakats (25 Sep 2022) |
| - autotools: allow --enable-symbol-hiding with windows |
| |
| This local autotools logic was put in place in |
| 9e24b9c7afbcb81120af4cf3f6cdee49a06d8224 (in 2012) which disabled it for |
| Windows unconditionally. Testing reveals that it actually works with |
| tested toolchains (mingw-w64 and CI ones), so let's allow this build |
| feature on that platform. Bringing this in sync with CMake, which already |
| supported this. |
| |
| Reviewed-by: Jay Satiro |
| |
| Closes #9586 |
| |
| - autotools: reduce brute-force when detecting recv/send arg list |
| |
| autotools uses brute-force to detect `recv`/`send`/`select` argument |
| lists, by interating through _all_ argument type combinations on each |
| `./configure` run. This logic exists since |
| 01fa02d0b545e1433dced2430561f8c0c72b74a9 (from 2006) and was a bit later |
| extended with Windows support. |
| |
| This results in a worst-case number of compile + link cycles as below: |
| - `recv`: 96 |
| - `send`: 192 |
| - `select`: 60 |
| Total: 348 (the number of curl C source files is 195, for comparison) |
| |
| Notice that e.g. curl-for-win autotools builds require two `./configure` |
| invocations, doubling these numbers. |
| |
| `recv` on Windows was especially unlucky because `SOCKET` (the correct |
| choice there) was listed _last_ in one of the outer trial loops. This |
| resulted in lengthy waits while autotools was trying all invalid |
| combinations first, wasting cycles, disk writes and slowing down |
| iteration. |
| |
| This patch reduces the amount of idle work by reordering the tests in |
| a way to succeed first on a well-known platform such as Windows, and |
| also on non-Windows by testing for POSIX prototypes first, on the |
| assumption that these are the most likely candidates these days. (We do |
| not touch `select`, where the order was already optimal for these |
| platforms.) |
| |
| For non-Windows, this means to try a return value of `ssize_t` first, |
| then `int`, reordering the buffer argument type to try `void *` first, |
| then `byte *`, and prefer the `const` flavor with `send`. If we are |
| here, also stop testing for `SOCKET` type in non-Windows builds. |
| |
| After the patch, detection on Windows is instantaneous. It should also be |
| faster on popular platforms such as Linux and BSD-based ones. |
| |
| If there are known-good variations for other platforms, they can also be |
| fast-tracked like above, given a way to check for that platform inside |
| the autotools logic. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Closes #9591 |
| |
| Daniel Stenberg (23 Sep 2022) |
| - TODO: Provide the error body from a CONNECT response |
| |
| Spellchecked-by: Jay Satiro |
| |
| Closes #9513 |
| Closes #9581 |
| |
| Viktor Szakats (23 Sep 2022) |
| - windows: autotools .rc warnings fixup |
| |
| Move `LT_LANG([Windows Resource])` after `XC_LIBTOOL`, fixing: |
| |
| - Warnings when running `autoreconf -fi`. |
| |
| - Warning when compiling .rc files: |
| libtool: compile: unable to infer tagged configuration |
| libtool: error: specify a tag with '--tag' |
| |
| Follow up to 6de7322c03d5b4d91576a7d9fc893e03cc9d1057 |
| Ref: https://github.com/curl/curl/pull/9521#issuecomment-1256291156 |
| |
| Suggested-by: Patrick Monnerat |
| Closes #9582 |
| |
| Daniel Stenberg (23 Sep 2022) |
| - [Randall S. Becker brought this change] |
| |
| curl_setup: disable use of FLOSS for 64-bit NonStop builds |
| |
| Older 32-bit builds currently need FLOSS. This dependency may be removed |
| in future OS releases. |
| |
| Signed-off-by: Randall S. Becker <randall.becker@nexbridge.ca> |
| |
| Closes #9575 |
| |
| - [Patrick Monnerat brought this change] |
| |
| tool: remove dead code |
| |
| Add a debug assertion to verify protocols included/excluded in a set |
| are always tokenized. |
| |
| Follow-up to commit 677266c. |
| |
| Closes #9576 |
| |
| - [Patrick Monnerat brought this change] |
| |
| lib: prepare the incoming of additional protocols |
| |
| Move the curl_prot_t to its own conditional block. Introduce symbol |
| PROTO_TYPE_SMALL to control it. |
| |
| Fix a cast in a curl_prot_t assignment. |
| Remove an outdated comment. |
| |
| Follow-up to cd5ca80. |
| |
| Closes #9534 |
| |
| - msh3: change the static_assert to make the code C89 |
| |
| - bearssl: make it proper C89 compliant |
| |
| - curl-compilers.m4: for gcc + want warnings, set gnu89 standard |
| |
| To better verify that the code is C89 |
| |
| Closes #9542 |
| |
| - [Patrick Monnerat brought this change] |
| |
| lib517: fix C89 constant signedness |
| |
| In C89, positive integer literals that overflow an int but not an |
| unsigned int may be understood as a negative int. |
| |
| lib517.c:129:3: warning: this decimal constant is unsigned only in ISO C90 |
| {"Sun, 06 Nov 2044 08:49:37 GMT", 2362034977 }, |
| ^ |
| |
| Closes #9572 |
| |
| - mprintf: use snprintf if available |
| |
| This is the single place in libcurl code where it uses the "native" |
| s(n)printf() function. Used for writing floats. The use has been |
| reviewed and vetted and uses a HUGE target buffer, but switching to |
| snprintf() still makes this safer and removes build-time warnings. |
| |
| Reported-by: Philip Heiduck |
| |
| Fixes #9569 |
| Closes #9570 |
| |
| - docs: tag curl options better in man pages |
| |
| As it makes them links in the HTML versions. |
| |
| Verified by the extended test 1176 |
| |
| - symbols-in-versions: CURLOPT_ENCODING is deprecated since 7.21.6 |
| |
| - manpage-syntax.pl: all libcurl option symbols should be \fI-tagged |
| |
| ... as that makes them links to their corresponding man page. |
| |
| This script is used for test 1173. |
| |
| Closes #9574 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Patrick Monnerat brought this change] |
| |
| tool: remove protocol count limitation |
| |
| Replace bit mask protocol sets by null-terminated arrays of protocol |
| tokens. These are the addresses of the protocol names returned by |
| curl_version_info(). |
| |
| Protocol names are sorted case-insensitively before output to satisfy CI |
| tests matches consistency. |
| |
| The protocol list returned by curl_version_info() is augmented with all |
| RTMP protocol variants. |
| |
| Test 1401 adjusted for new alpha ordered output. |
| |
| Closes #9546 |
| |
| - test972: verify the output without using external tool |
| |
| It seems too restrictive to assume and use an external tool to verify |
| the JSON. This now verifies the outut byte per byte. We could consider |
| building a local "JSON verifyer" in a future. |
| |
| Remove 'jsonlint' from the CI job. |
| |
| Reported-by: Marcel Raad |
| Fixes #9563 |
| Closes #9564 |
| |
| - hostip: lazily wait to figure out if IPv6 works until needed |
| |
| The check may take many milliseconds, so now it is performed once the |
| value is first needed. Also, this change makes sure that the value is |
| not used if the resolve is set to be IPv4-only. |
| |
| Closes #9553 |
| |
| - curl.h: fix mention of wrong error code in comment |
| |
| The same error and comment were also used and is now corrected in |
| CURLOPT_SSH_KEYFUNCTION.3 |
| |
| - symbol-scan.pl: scan and verify .3 man pages |
| |
| This script now also finds all .3 man pages in docs/include and |
| docs/include/opts, extracts all uses of CURL* symbols and verifies that all |
| symbols mentioned in docs are defined in public headers. |
| |
| A "global symbol" is one of those matching a known prefix and the script makes |
| an attempt to check all/most of them. Just using *all* symbols that match |
| CURL* proved matching a little too many other references as well and turned |
| difficult turning into something useful. |
| |
| Closes #9544 |
| |
| - symbols-in-versions: add missing LIBCURL* symbols |
| |
| - symbol-scan.pl: also check for LIBCURL* symbols |
| |
| Closes #9544 |
| |
| - docs/libcurl/symbols-in-versions: add several missing symbols |
| |
| - test1119: scan all public headers |
| |
| Previously this test only scanned a subset of the headers, which made us |
| accidentally miss symbols that were provided in the others. Now, the script |
| iterates over all headers present in include/curl. |
| |
| Closes #9544 |
| |
| - [Patrick Monnerat brought this change] |
| |
| examples/chkspeed: improve portability |
| |
| The example program chkspeed uses strncasecmp() which is not portable |
| across systems. Replace calls to this function by tests on characters. |
| |
| Closes #9562 |
| |
| - easy: fix the #include order |
| |
| The mentioned "last 3 includes" order should be respected. easy_lock.h should |
| be included before those three. |
| |
| Reported-by: Yuriy Chernyshov |
| Fixes #9560 |
| Closes #9561 |
| |
| - docs: spellfixes |
| |
| Pointed by the new CI job |
| |
| - GHA: spellcheck |
| |
| This spellchecker checks markdown files. For this reason this job |
| converts all man pages in the repository to markdown with pandoc before |
| the check runs. |
| |
| The perl script 'cleanspell' filters out details from the man page in |
| the process, to avoid the spellchecker trying to spellcheck things it |
| can't. Like curl specific symbols and the SYNOPSIS and EXAMPLE sections |
| of libcurl man pages. |
| |
| The spell checker does not check words in sections that are within pre, |
| strong and em tags. |
| |
| 'spellcheck.words' is a custom word list with additional accepted words. |
| |
| Closes #9523 |
| |
| - connect: fix the wrong error message on connect failures |
| |
| The "Failed to connect to" message after a connection failure would |
| include the strerror message based on the presumed previous socket |
| error, but in times it seems that error number is not set when reaching |
| this code and therefore it would include the wrong error message. |
| |
| The strerror message is now removed from here and the curl_easy_strerror |
| error is used instead. |
| |
| Reported-by: Edoardo Lolletti |
| Fixes #9549 |
| Closes #9554 |
| |
| - httpput-postfields.c: shorten string for C89 compliance |
| |
| httpput-postfields.c:41:3: error: string length ā522ā is greater than the length ā509ā ISO C90 compilers are required to support [-Woverlength-strings] |
| 41 | "this chapter."; |
| | ^~~~~~~~~~~~~~~ |
| |
| Closes #9555 |
| |
| - ws: fix a C89 compliance nit |
| |
| Closes #9541 |
| |
| - [Patrick Monnerat brought this change] |
| |
| unit test 1655: make it C89-compliant |
| |
| Initializations performed in unit test 1655 use automatic variables in |
| aggregates and thus can only be computed at run-time. Using gcc in C89 |
| dialect mode produces warning messages like: |
| |
| unit1655.c:96:7: warning: initializer element is not computable at load time [-Wpedantic] |
| 96 | { toolong, DOH_DNS_NAME_TOO_LONG }, /* expect early failure */ |
| | ^~~~~~~ |
| |
| Fix the problem by converting these automatic pointer variables to |
| static arrays. |
| |
| Closes #9551 |
| |
| - [Tobias Schaefer brought this change] |
| |
| curl_strequal.3: fix typo |
| |
| Closes #9548 |
| |
| - [Dmitry Karpov brought this change] |
| |
| resolve: make forced IPv4 resolve only use A queries |
| |
| This protects IPv4-only transfers from undesired bad IPv6-related side |
| effects and make IPv4 transfers in dual-stack libcurl behave the same |
| way as in IPv4 single-stack libcurl. |
| |
| Closes #9540 |
| |
| - RELEASE-NOTES: synced |
| |
| - winbuild/MakefileBuild.vc: handle spaces in libssh(2) include paths |
| |
| Patched-by: Mark Itzcovitz |
| Bug: https://curl.se/mail/lib-2022-09/0038.html |
| |
| Closes #9536 |
| |
| - TODO: Reduce CA certificate bundle reparsing |
| |
| By adding some sort of cache. |
| |
| Reported-by: Michael Drake |
| Closes #9379 |
| Closes #9538 |
| |
| Marc Hoersken (19 Sep 2022) |
| - CI/GHA: cancel outdated CI runs on new PR changes |
| |
| Avoid letting outdated CI runs continue if a PR receives |
| new changes. Outside a PR we let them continue running |
| by tying the concurrency to the commit hash instead. |
| |
| Also only let one CodeQL or Hacktoberfest job run at a time. |
| |
| Other CI platforms we use have this build in, but GitHub |
| unfortunately neither by default nor with a simple option. |
| |
| This saves CI resources and therefore a little energy. |
| |
| Approved-by: Daniel Stenberg |
| Approved-by: Max Dymond |
| Closes #9533 |
| |
| Daniel Stenberg (19 Sep 2022) |
| - docs: fix proselint complaints |
| |
| - GHA: run proselint on markdown files |
| |
| Co-authored-by: Marc Hƶrsken |
| |
| Closes #9520 |
| |
| - lib: the number four in a sequence is the "fourth" |
| |
| Spelling is hard |
| |
| Closes #9535 |
| |
| - [John Bampton brought this change] |
| |
| misc: fix spelling in two source files |
| |
| Closes #9529 |
| |
| Viktor Szakats (18 Sep 2022) |
| - windows: add .rc support to autotools builds |
| |
| After this update autotools builds will compile and link `.rc` resources |
| to Windows executables. Bringing this feature on par with CMake and |
| Makefile.m32 builds. And also making it unnecessary to improvise these |
| steps manually, while monkey patching build files, e.g. [0]. |
| |
| You can customize the resource compiler via the `RC` envvar, and its |
| options via `RCFLAGS`. |
| |
| This harmless warning may appear throughout the build, even though the |
| autotools manual documents [1] `RC` as a valid tag, and it fails when |
| omitting one: |
| `libtool: error: ignoring unknown tag RC` |
| |
| [0] https://github.com/curl/curl-for-win/blob/535f19060d4b708f72e75dd849409ce50baa1b84/curl-autotools.sh#L376-L382 |
| [1] https://www.gnu.org/software/libtool/manual/html_node/Tags.html |
| |
| Closes #9521 |
| |
| Marc Hoersken (18 Sep 2022) |
| - CI/linkcheck: only run if a Markdown file is changed |
| |
| This saves CI resources and therefore a little energy. |
| |
| Reviewed-by: Max Dymond |
| Closes #9531 |
| |
| - README.md: add GHA status badges for Linux and macOS builds |
| |
| This makes sense now that Linux builds are being consolidated. |
| |
| Approved-by: Daniel Stenberg |
| Closes #9530 |
| |
| [skip ci] |
| |
| Daniel Stenberg (17 Sep 2022) |
| - misc: null-terminate |
| |
| Make use of this term consistently. |
| |
| Closes #9527 |
| |
| Marc Hoersken (17 Sep 2022) |
| - CI/GHA: merge intel CC and more TLS libs into linux workflow |
| |
| Continue work on merging all Linux workflows into one file. |
| |
| Reviewed-by: Max Dymond |
| Follow up to #9501 |
| Closes #9514 |
| |
| Daniel Stenberg (17 Sep 2022) |
| - [Patrick Monnerat brought this change] |
| |
| lib1597: make it C89-compliant again |
| |
| Automatic variable addresses cannot be used in an initialisation |
| aggregate. |
| |
| Follow-up to 9d51329 |
| |
| Reported-by: Daniel Stenberg |
| Fixes: #9524 |
| Closes #9525 |
| |
| - tool_libinfo: silence "different 'const' qualifiers" in qsort() |
| |
| MSVC 15.0.30729.1 warned about it |
| |
| Follow-up to dd2a024323dcc |
| |
| Closes #9522 |
| |
| - [Patrick Monnerat brought this change] |
| |
| docs: tell about disabled protocols in CURLOPT_*PROTOCOLS_STR. |
| |
| Disabled protocols are now handled as if they were unknown. |
| Also update the possible protocol list. |
| |
| - [Patrick Monnerat brought this change] |
| |
| cli tool: do not use disabled protocols |
| |
| As they are now rejected by the library, take care of not passing |
| disabled protocol names to CURLOPT_PROTOCOLS_STR and |
| CURLOPT_REDIR_PROTOCOLS_STR. |
| |
| Rather than using the CURLPROTO_* constants, dynamically assign protocol |
| numbers based on the order they are listed by curl_version_info(). |
| |
| New type proto_set_t implements prototype bit masks: it should therefore |
| be large enough to accomodate all library-enabled protocols. If not, |
| protocol numbers beyond the bit count of proto_set_t are recognized but |
| "inaccessible": when used, a warning is displayed and the value is |
| ignored. Should proto_set_t overflows, enabled protocols are reordered to |
| force those having a public CURLPROTO_* representation to be accessible. |
| |
| Code has been added to subordinate RTMP?* protocols to the presence of |
| RTMP in the enabled protocol list, being returned by curl_version_info() |
| or not. |
| |
| - [Patrick Monnerat brought this change] |
| |
| setopt: use the handler table for protocol name to number conversions |
| |
| This also returns error CURLE_UNSUPPORTED_PROTOCOL rather than |
| CURLE_BAD_FUNCTION_ARGUMENT when a listed protocol name is not found. |
| |
| A new schemelen parameter is added to Curl_builtin_scheme() to support |
| this extended use. |
| |
| Note that disabled protocols are not recognized anymore. |
| |
| Tests adapted accordingly. |
| |
| Closes #9472 |
| |
| - altsvc: use 'h3' for h3 |
| |
| Since the official and real version has been out for a while now and servers |
| are deployed out there using it, there is no point in sticking to h3-29. |
| |
| Reported-by: ć¦ćć |
| Fixes #9515 |
| Closes #9516 |
| |
| Jay Satiro (16 Sep 2022) |
| - [chemodax brought this change] |
| |
| winbuild: Use NMake batch-rules for compilation |
| |
| - Invoke cl compiler once for each group of .c files. |
| |
| This is significantly improves compilation time. For example in my |
| environment: 40 s --> 20 s. |
| |
| Prior to this change cl was invoked per .c file. |
| |
| Closes https://github.com/curl/curl/pull/9512 |
| |
| Daniel Stenberg (16 Sep 2022) |
| - ws: the infof() flags should be %zu |
| |
| Follow-up to e5e9e0c5e49ae0 |
| |
| Closes #9518 |
| |
| - curl: warn for --ssl use, considered insecure |
| |
| Closes #9519 |
| |
| - [Sergey Bronnikov brought this change] |
| |
| curl_escape.3: fix typo |
| |
| lengthf -> length |
| |
| Closes #9517 |
| |
| - mailmap: merge Philip Heiduck's two addresses into one |
| |
| - test1948: verify PUT + POST reusing the same handle |
| |
| Reproduced #9507, verifies the fix |
| |
| - setopt: when POST is set, reset the 'upload' field |
| |
| Reported-by: RobBotic1 on github |
| Fixes #9507 |
| Closes #9511 |
| |
| Marc Hoersken (15 Sep 2022) |
| - github: initial CODEOWNERS setup for CI configuration |
| |
| Reviewed-by: Daniel Stenberg |
| Reviewed-by: Marcel Raad |
| Reviewed-by: Max Dymond |
| |
| Closes #9505 |
| |
| [skip ci] |
| |
| - [Philip Heiduck brought this change] |
| |
| CI: optimize some more dependencies install |
| |
| Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan> |
| |
| Closes #9500 |
| |
| - CI/GHA: merge event-based and NSS into new linux workflow |
| |
| Continue work on merging all Linux workflows into one file. |
| |
| Follow up to #9501 |
| Closes #9506 |
| |
| Daniel Stenberg (15 Sep 2022) |
| - include/curl/websockets.h: add extern "C" for C++ |
| |
| Reported-by: n0name321 on github |
| Fixes #9509 |
| Closes #9510 |
| |
| - lib1560: extended to verify detect/reject of unknown schemes |
| |
| ... when no guessing is allowed. |
| |
| - urlapi: detect scheme better when not guessing |
| |
| When the parser is not allowed to guess scheme, it should consider the |
| word ending at the first colon to be the scheme, independently of number |
| of slashes. |
| |
| The parser now checks that the scheme is known before it counts slashes, |
| to improve the error messge for URLs with unknown schemes and maybe no |
| slashes. |
| |
| When following redirects, no scheme guessing is allowed and therefore |
| this change effectively prevents redirects to unknown schemes such as |
| "data". |
| |
| Fixes #9503 |
| |
| - strerror: improve two URL API error messages |
| |
| Marc Hoersken (14 Sep 2022) |
| - CI/GHA: merge bearssl and hyper into initial linux workflow |
| |
| Begin work on merging all Linux workflows into one file. |
| |
| Closes #9501 |
| |
| Daniel Stenberg (14 Sep 2022) |
| - RELEASE-NOTES: synced |
| |
| - cmake: define BUILDING_LIBCURL in lib/CMakeLists, not config.h |
| |
| Since the config file might also get included by the tool code at times. |
| This syncs with how other builds do it. |
| |
| Closes #9498 |
| |
| - tool_hugehelp: make hugehelp a blank macro when disabled |
| |
| Closes #9485 |
| |
| - getparameter: return PARAM_MANUAL_REQUESTED for -M even when disabled |
| |
| ... to improve the output in this situation. Now it doesn't say "option |
| unknown" anymore. |
| |
| Closes #9485 |
| |
| - setopt: fix compiler warning |
| |
| Follow-up to cd5ca80f00d2 |
| |
| closes #9502 |
| |
| - [Philip Heiduck brought this change] |
| |
| CI: skip make, do make install at once for dependencies |
| |
| Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan> |
| |
| Closes #9477 |
| |
| - formdata: typecast the va_arg return value |
| |
| To avoid "enumerated type mixed with another type" warnings |
| |
| Follow-up from 0f52dd5fd5aa3592691a |
| |
| Closes #9499 |
| |
| - RELEASE-PROCEDURE.md: mention patch releases |
| |
| - When to make them and how to argue for them |
| - Refreshed the release date list |
| |
| Closes #9495 |
| |
| - urldata: use a curl_prot_t type for storing protocol bits |
| |
| This internal-use-only storage type can be bumped to a curl_off_t once |
| we need to use bit 32 as the previous 'unsigned int' can no longer hold |
| them all then. |
| |
| The websocket protocols take bit 30 and 31 so they are the last ones |
| that fit within 32 bits - but cannot properly be exported through APIs |
| since those use *signed* 32 bit types (long) in places. |
| |
| Closes #9481 |
| |
| - [zhanghu on xiaomi brought this change] |
| |
| formdata: fix warning: 'CURLformoption' is promoted to 'int' |
| |
| curl/lib/formdata.c: In function 'FormAdd': |
| curl/lib/formdata.c:249:31: warning: 'CURLformoption' is promoted to 'int' when passed through '...' |
| 249 | option = va_arg(params, CURLformoption); |
| | ^ |
| curl/lib/formdata.c:249:31: note: (so you should pass 'int' not 'CURLformoption' to 'va_arg') |
| curl/lib/formdata.c:249:31: note: if this code is reached, the program will abort |
| |
| Closes #9484 |
| |
| - CURLOPT_CONNECT_ONLY.3: for ws(s) as well |
| |
| and correct the version number for when that support comes. Even if it |
| is still experimental for WebSocket. |
| |
| Closes #9487 |
| |
| - tool_operate: avoid a few #ifdefs for disabled-libcurl builds |
| |
| By providing empty macros in the header file instead, the code gets |
| easier to read and yet is disabled on demand. |
| |
| Closes #9486 |
| |
| - [a1346054 on github brought this change] |
| |
| scripts: use `grep -E` instead of `egrep` |
| |
| egrep is deprecated |
| |
| Closes #9491 |
| |
| - [Hayden Roche brought this change] |
| |
| wolfSSL: fix session management bug. |
| |
| Prior to this commit, non-persistent pointers were being used to store |
| sessions. When a WOLFSSL object was then freed, that freed the session |
| it owned, and thus invalidated the pointer held in curl's cache. This |
| commit makes it so we get a persistent (deep copied) session pointer |
| that we then add to the cache. Accordingly, wolfssl_session_free, which |
| was previously a no-op, now needs to actually call SSL_SESSION_free. |
| |
| This bug was discovered by a wolfSSL customer. |
| |
| Closes #9492 |
| |
| - docs: use "WebSocket" in singular |
| |
| This is how the RFC calls the protocol. Also rename the file in docs/ to |
| WEBSOCKET.md in uppercase to match how we have done it for many other |
| protocol docs in similar fashion. |
| |
| Add the WebSocket docs to the tarball. |
| |
| Closes #9496 |
| |
| Marcel Raad (12 Sep 2022) |
| - ws: fix build without `USE_WEBSOCKETS` |
| |
| The curl.h include is required unconditionally. |
| |
| - ws: add missing curl.h include |
| |
| A conflict between commits 664249d0952 and e5839f4ee70 broke the build. |
| |
| Daniel Stenberg (12 Sep 2022) |
| - ws: fix an infof() call to use %uz for size_t output |
| |
| Detected by Coverity, CID 1514665. |
| |
| Closes #9480 |
| |
| Marcel Raad (12 Sep 2022) |
| - curl_setup: include only system.h instead of curl.h |
| |
| As done before commit 9506d01ee50. |
| |
| Ref: https://github.com/curl/curl/pull/9375#discussion_r957010158 |
| Closes https://github.com/curl/curl/pull/9453 |
| |
| - lib: add missing limits.h includes |
| |
| Closes https://github.com/curl/curl/pull/9453 |
| |
| - lib and tests: add missing curl.h includes |
| |
| Closes https://github.com/curl/curl/pull/9453 |
| |
| - curl_setup: include curl.h after platform setup headers |
| |
| The platform setup headers might set definitions required for the |
| includes in curl.h. |
| |
| Ref: https://github.com/curl/curl/pull/9375#discussion_r956998269 |
| Closes https://github.com/curl/curl/pull/9453 |
| |
| Daniel Stenberg (12 Sep 2022) |
| - [Benjamin Loison brought this change] |
| |
| docs: correct missing uppercase in Markdown files |
| |
| To detect these typos I used: |
| |
| ``` |
| clear && grep -rn '\. [a-z]' . | uniq | grep -v '\. lib' | grep -v '[0-9]\. [a-z]' | grep -v '\.\. [a-z]' | grep -v '\. curl' | grep -v 'e.g. [a-z]' | grep -v 'eg. [a-z]' | grep -v '\etc. [a-z]' | grep -v 'i.e\. [a-z]' | grep --color=always '\. [a-z]' | grep '\.md' |
| ``` |
| |
| Closes #9474 |
| |
| - tool_setopt: use better English in --libcurl source comments |
| |
| Like this: |
| |
| XYZ was set to an object pointer |
| ABC was set to a function pointer |
| |
| Closes #9475 |
| |
| - setopt: make protocol2num use a curl_off_t for the protocol bit |
| |
| ... since WSS does not fit within 32 bit. |
| |
| Bug: https://github.com/curl/curl/pull/9467#issuecomment-1243014887 |
| Closes #9476 |
| |
| - RELEASE-NOTES: synced |
| |
| - configure: polish the grep -E message a bit further |
| |
| Suggested-by: Emanuele Torre |
| Closes #9473 |
| |
| - GHA: add a gcc-11 -O3 build using OpenSSL |
| |
| Since -O3 might trigger other warnings |
| |
| Closes #9454 |
| |
| - [Patrick Monnerat brought this change] |
| |
| content_encoding: use writer struct subclasses for different encodings |
| |
| The variable-sized encoding-specific storage of a struct contenc_writer |
| currently relies on void * alignment that may be insufficient with |
| regards to the specific storage fields, although having not caused any |
| problems yet. |
| |
| In addition, gcc 11.3 issues a warning on access to fields of partially |
| allocated structures that can occur when the specific storage size is 0: |
| |
| content_encoding.c: In function āCurl_build_unencoding_stackā: |
| content_encoding.c:980:21: warning: array subscript āstruct contenc_writer[0]ā is partly outside array bounds of āunsigned char[16]ā [-Warray-bounds] |
| 980 | writer->handler = handler; |
| | ~~~~~~~~~~~~~~~~^~~~~~~~~ |
| In file included from content_encoding.c:49: |
| memdebug.h:115:29: note: referencing an object of size 16 allocated by ācurl_dbg_callocā |
| 115 | #define calloc(nbelem,size) curl_dbg_calloc(nbelem, size, __LINE__, __FILE__) |
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| content_encoding.c:977:60: note: in expansion of macro ācallocā |
| 977 | struct contenc_writer *writer = (struct contenc_writer *)calloc(1, sz); |
| |
| To solve both these problems, the current commit replaces the |
| contenc_writer/params structure pairs by "subclasses" of struct |
| contenc_writer. These are structures that contain a contenc_writer at |
| offset 0. Proper field alignment is therefore handled by the compiler and |
| full structure allocation is performed, silencing the warnings. |
| |
| Closes #9455 |
| |
| - configure: correct the wording when checking grep -E |
| |
| The check first checks that grep -E works, and only as a fallback tries |
| to find and use egrep. egrep is deprecated. |
| |
| This change only corrects the output wording, not the checks themselves. |
| |
| Closes #9471 |
| |
| Viktor Szakats (10 Sep 2022) |
| - websockets: sync prototypes in docs with implementation [ci skip] |
| |
| Docs for the new send/recv functions synced with the committed versions |
| of these. |
| |
| Closes #9470 |
| |
| Daniel Stenberg (10 Sep 2022) |
| - setopt: make protocols2num() work with websockets |
| |
| So that CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR can |
| specify those as well. |
| |
| Reported-by: Patrick Monnerat |
| Bug: https://curl.se/mail/lib-2022-09/0016.html |
| Closes #9467 |
| |
| - curl/websockets.h: remove leftover bad typedef |
| |
| Just a leftover trace of a development thing that did not stay like |
| that. |
| |
| Reported-by: Marc Hƶrsken |
| Fixes #9465 |
| Cloes #9466 |
| |
| Marcel Raad (10 Sep 2022) |
| - [Orgad Shaneh brought this change] |
| |
| fix Cygwin/MSYS compilation |
| |
| _getpid is Windows API. On Cygwin variants it should remain getpid. |
| |
| Fixes #8220 |
| Closes #9255 |
| |
| Marc Hoersken (10 Sep 2022) |
| - GHA: prepare workflow merge by aligning structure again |
| |
| Closes #9413 |
| |
| Daniel Stenberg (9 Sep 2022) |
| - docs: the websockets symbols are added in 7.86.0 |
| |
| Nothing else |
| |
| Closes #9459 |
| |
| - tests/libtest/Makefile.inc: fixup merge conflict mistake |
| |
| - EXPERIMENTAL.md: add WebSockets |
| |
| - appveyor: enable websockets |
| |
| - cirrus: enable websockets in the windows builds |
| |
| - GHA: add websockets to macos, openssl3 and hyper builds |
| |
| - tests: add websockets tests |
| |
| - add websockets support to sws |
| - 2300: first very basic websockets test |
| - 2301: first libcurl test for ws (not working yet) |
| - 2302: use the ws callback |
| - 2303: test refused upgrade |
| |
| - curl_ws_meta: initial implementation |
| |
| - curl_ws_meta.3: added docs |
| |
| - ws: initial websockets support |
| |
| Closes #8995 |
| |
| - version: add ws + wss |
| |
| - libtest/lib1560: test basic websocket URL parsing |
| |
| - configure: add --enable-websockets |
| |
| - docs/WebSockets.md: docs |
| |
| - test415: verify Content-Length parser with control code + negative value |
| |
| - strtoofft: after space, there cannot be a control code |
| |
| With the change from ISSPACE() to ISBLANK() this function no longer |
| deals with (ignores) control codes the same way, which could lead to |
| this function returning unexpected values like in the case of |
| "Content-Length: \r-12354". |
| |
| Follow-up to 6f9fb7ec2d7cb389a0da5 |
| |
| Detected by OSS-fuzz |
| Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51140 |
| Assisted-by: Max Dymond |
| Closes #9458 |
| |
| - headers: reset the requests counter at transfer start |
| |
| If not, reusing an easy handle to do a subsequent transfer would |
| continue the counter from the previous invoke, which then would make use |
| of the header API difficult/impossible as the request counter |
| mismatched. |
| |
| Add libtest 1947 to verify. |
| |
| Reported-by: Andrew Lambert |
| Fixes #9424 |
| Closes #9447 |
| |
| Jay Satiro (8 Sep 2022) |
| - header: define public API functions as extern c |
| |
| Prior to this change linker errors would occur if curl_easy_header or |
| curl_easy_nextheader was called from a C++ unit. |
| |
| Bug: https://github.com/curl/curl/issues/9424#issuecomment-1238818007 |
| Reported-by: Andrew Lambert |
| |
| Closes https://github.com/curl/curl/pull/9446 |
| |
| Daniel Stenberg (8 Sep 2022) |
| - http2: make nghttp2 less picky about field whitespace |
| |
| In nghttp2 1.49.0 it returns error on leading and trailing whitespace in |
| header fields according to language in the recently shipped RFC 9113. |
| |
| nghttp2 1.50.0 introduces an option to switch off this strict check and |
| this change enables this option by default which should make curl behave |
| more similar to how it did with nghttp2 1.48.0 and earlier. |
| |
| We might want to consider making this an option in the future. |
| |
| Closes #9448 |
| |
| - RELEASE-NOTES: synced |
| |
| And bump to 7.86.0 for the pending next release |
| |
| - [Michael Heimpold brought this change] |
| |
| ftp: ignore a 550 response to MDTM |
| |
| The 550 is overused as a return code for multiple error case, e.g. |
| file not found and/or insufficient permissions to access the file. |
| |
| So we cannot fail hard in this case. |
| |
| Adjust test 511 since we now fail later. |
| Add new test 3027 which check that when MDTM failed, but the file could |
| actually be retrieved, that in this case no filetime is provided. |
| |
| Reported-by: Michael Heimpold |
| Fixes #9357 |
| Closes #9387 |
| |
| - urlapi: leaner with fewer allocs |
| |
| Slightly faster with more robust code. Uses fewer and smaller mallocs. |
| |
| - remove two fields from the URL handle struct |
| - reduce copies and allocs |
| - use dynbuf buffers more instead of custom malloc + copies |
| - uses dynbuf to build the host name in reduces serial alloc+free within |
| the same function. |
| - move dedotdotify into urlapi.c and make it static, not strdup the input |
| and optimize it by checking for . and / before using strncmp |
| - remove a few strlen() calls |
| - add Curl_dyn_setlen() that can "trim" an existing dynbuf |
| |
| Closes #9408 |
| |
| Jay Satiro (7 Sep 2022) |
| - setup-win32: no longer define UNICODE/_UNICODE implicitly |
| |
| - If UNICODE or _UNICODE is defined but the other isn't then error |
| instead of implicitly defining it. |
| |
| As Marcel pointed out it is too late at this point to make such a define |
| because Windows headers may already be included, so likely it never |
| worked. We never noticed because build systems that can make Windows |
| Unicode builds always define both. If one is defined but not the other |
| then something went wrong during the build configuration. |
| |
| Bug: https://github.com/curl/curl/pull/9375#discussion_r956545272 |
| Reported-by: Marcel Raad |
| |
| Closes https://github.com/curl/curl/pull/9384 |
| |
| Dan Fandrich (6 Sep 2022) |
| - tests: fix tag syntax errors in test files |
| |
| Marc Hoersken (6 Sep 2022) |
| - lib: add required Win32 setup definitions in setup-win32.h |
| |
| Assisted-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| |
| Follow up to #9312 |
| Closes #9375 |
| |
| Daniel Stenberg (6 Sep 2022) |
| - pingpong: extend the response reading error with errno |
| |
| To help diagnosing the cause of the problem. |
| |
| See #9380 |
| Closes #9443 |
| |
| - curl-compilers.m4: use -O2 as default optimize for clang |
| |
| Not -Os |
| |
| Closes #9444 |
| |
| - tool_operate: fix msnprintfing the error message |
| |
| Follow-up to 7be53774c41c59b47075fba |
| |
| Coverity CID 1513717 pointed out that we cannot use sizeof() on the |
| error buffer anymore. |
| |
| Closes #9440 |
| |
| - [Emanuele Torre brought this change] |
| |
| curl_ctype: add space around <= operator in ISSPACE macro |
| |
| Follow-up to f65f750 |
| |
| Closes #9441 |
| |
| - CURLOPT_PROXY_SSLCERT_BLOB.3: this is for HTTPS proxies |
| |
| The 'protocols' listed were previously wrong. |
| |
| Reported-by: ProceduralMan on github |
| Fixes #9434 |
| Closes #9435 |
| |
| - curl_ctype: convert to macros-only |
| |
| This no longer provide functions, only macros. Runs faster and produces |
| smaller output. |
| |
| The biggest precaution this change brings: |
| |
| DO NOT use post/pre-increments when passing arguments to the macros. |
| |
| Closes #9429 |
| |
| - misc: ISSPACE() => ISBLANK() |
| |
| Instances of ISSPACE() use that should rather use ISBLANK(). I think |
| somewhat carelessly used because it sounds as if it checks for space or |
| whitespace, but also includes %0a to %0d. |
| |
| For parsing purposes, we should only accept what we must and not be |
| overly liberal. It leads to surprises and surprises lead to bad things. |
| |
| Closes #9432 |
| |
| - ctype: remove all use of <ctype.h>, use our own versions |
| |
| Except in the test servers. |
| |
| Closes #9433 |
| |
| Marc Hoersken (5 Sep 2022) |
| - cmake: skip superfluous hex2dec conversion using math expr |
| |
| CMake seems to be able to compare two hex values just fine. |
| Also make sure CURL_TARGET_WINDOWS_VERSION is respected. |
| |
| Assisted-by: Marcel Raad |
| Reviewed-by: Viktor Szakats |
| Reported-by: Keitagit-kun on github |
| |
| Follow up to #9312 |
| Fixes #9406 |
| Closes #9411 |
| |
| Daniel Stenberg (5 Sep 2022) |
| - curl_easy_pause.3: unpausing is as fast as possible |
| |
| Reported-by: ssdbest on github |
| Fixes #9410 |
| Closes #9430 |
| |
| - CURLOPT_DNS_INTERFACE.3: mention it works for almost all protocols |
| |
| Except file. |
| |
| Reported-by: ProceduralMan on github |
| Fixes #9427 |
| Closes #9428 |
| |
| - NPN: remove support for and use of |
| |
| Next Protocol Negotiation is a TLS extension that was created and used |
| for agreeing to use the SPDY protocol (the precursor to HTTP/2) for |
| HTTPS. In the early days of HTTP/2, before the spec was finalized and |
| shipped, the protocol could be enabled using this extension with some |
| servers. |
| |
| curl supports the NPN extension with some TLS backends since then, with |
| a command line option `--npn` and in libcurl with |
| `CURLOPT_SSL_ENABLE_NPN`. |
| |
| HTTP/2 proper is made to use the ALPN (Application-Layer Protocol |
| Negotiation) extension and the NPN extension has no purposes |
| anymore. The HTTP/2 spec was published in May 2015. |
| |
| Today, use of NPN in the wild should be extremely rare and most likely |
| totally extinct. Chrome removed NPN support in Chrome 51, shipped in |
| June 2016. Removed in Firefox 53, April 2017. |
| |
| Closes #9307 |
| |
| - RELEASE-NOTES: synced |
| |
| and bump the tentative next release version to 7.85.1 |
| |
| - [Samuel Henrique brought this change] |
| |
| configure: fail if '--without-ssl' + explicit parameter for an ssl lib |
| |
| A side effect of a previous change to configure (576e507c78bdd2ec88) |
| exposed a non-critical issue that can happen if configure is called with |
| both '--without-ssl' and some parameter setting the use of a ssl library |
| (e.g. --with-gnutls). The configure script would end up assuming this is |
| a MultiSSL build, due to the way the case statement is written. |
| |
| I have changed the order of the variables in the string concatenation |
| for the case statement and also tweaked the options so that |
| --without-ssl never turns the build into a MultiSSL one and also clearly |
| stating that there are conflicting parameters if the user sets it like |
| described above. |
| |
| Closes #9414 |
| |
| - tests/certs/scripts: insert standard curl source headers |
| |
| ... including the SPDX-License-Identifier. |
| |
| These omissions were not detected by the RUEUSE CI job nor the copyright.pl |
| scanners because we have a general wildcard in .reuse/dep5 for |
| "tests/certs/*". |
| |
| Reported-by: Samuel Henrique |
| Fixes #9417 |
| Closes #9420 |
| |
| - [Samuel Henrique brought this change] |
| |
| docs: remove mentions of deprecated '--without-openssl' config parameter |
| |
| Closes #9415 |
| |
| - [Samuel Henrique brought this change] |
| |
| manpages: Fix spelling of "allows to" -> "allows one to" |
| |
| References: |
| https://salsa.debian.org/lintian/lintian/-/blob/master/tags/t/typo-in-manual-page.tag |
| https://english.stackexchange.com/questions/60271/grammatical-complements-for-allow/60285#60285 |
| |
| Closes #9419 |
| |
| - [Samuel Henrique brought this change] |
| |
| CURLOPT_WILDCARDMATCH.3: Fix backslash escaping under single quotes |
| |
| Lintian (on Debian) has been complaining about this for a while but |
| I didn't bother initially as the groff parser that we use is not |
| affected by this. |
| |
| But I have now noticed that the online manpage is affected by it: |
| https://curl.se/libcurl/c/CURLOPT_WILDCARDMATCH.html |
| |
| (I'm using double quotes for quoting-only down below) |
| |
| The section that should be parsed as "'\'" ends up being parsed as |
| "'Ā“". |
| |
| This is due to roffit not parsing "'\\'" correctly, which is fine |
| as the "correct" way of writing "'\'" is "'\e'" instead. |
| |
| Note that this fix is not enough to fix the online manpage at |
| curl's website, as roffit seems to parse it wrongly either way. |
| |
| My intent is to at least fix the manpage so that roffit can |
| be changed to parse "'\e'" correctly (although I suggest making |
| roffit parse both ways correctly, since that's what groff does). |
| |
| More details at: |
| https://bugs.debian.org/966803 |
| https://salsa.debian.org/lintian/lintian/-/blob/930b18e4b28b7540253f458ef42a884cca7965c3/tags/a/acute-accent-in-manual-page.tag |
| |
| Closes #9418 |
| |
| - tool_operate: reduce errorbuffer allocs |
| |
| - parallel transfers: only alloc and keep errorbuffers in memory for |
| actual "live" transfers and not for the ones in the pending queue |
| |
| - serial transfers: reuse the same fixed buffer for all transfers, not |
| allocated at all. |
| |
| Closes #9394 |
| |
| Viktor Szakats (31 Aug 2022) |
| - misc: spelling fixes |
| |
| Found using codespell 2.2.1. |
| |
| Also delete the redundant protocol designator from an archive.org URL. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9403 |
| |
| Daniel Stenberg (31 Aug 2022) |
| - tool_progress: remove 'Qd' from the parallel progress bar |
| |
| The "queued" value is no longer showing anything useful to the user. It |
| is an internal number of transfers waiting at that moment. |
| |
| Closes #9389 |
| |
| - tool_operate: prevent over-queuing in parallel mode |
| |
| When doing a huge amount of parallel transfers, we must not add them to |
| the per_transfer list frivolously since they all use memory after all. |
| This was previous done without really considering millions or billions |
| of transfers. Massive parallelism would use a lot of memory for no good |
| purpose. |
| |
| The queue is now limited to twice the paralleism number. |
| |
| This makes the 'Qd' value in the parallel progress meter mostly useless |
| for users, but works for now for us as a debug display. |
| |
| Reported-by: justchen1369 on github |
| Fixes #8933 |
| Closes #9389 |
| |
| Viktor Szakats (31 Aug 2022) |
| - cmake: fix original MinGW builds |
| |
| 1. Re-enable `HAVE_GETADDRINFO` detection on Windows |
| |
| Commit d08ee3c83d6bd416aef62ff844c98e47c4682429 (in 2013) added logic |
| that automatically assumed `getaddrinfo()` to be present for builds |
| with IPv6 enabled. As it turns out, certain toolchains (e.g. original |
| MinGW) by default target older Windows versions, and thus do not |
| support `getaddrinfo()` out of the box. The issue was masked for |
| a while by CMake builds forcing a newer Windows version, but that |
| logic got deleted in commit 8ba22ffb2030ed91312fc8634e29516cdf0a9761. |
| Since then, some CI builds started failing due to IPv6 enabled, |
| `HAVE_GETADDRINFO` set, but `getaddrinfo()` in fact missing. |
| |
| It also turns out that IPv6 works without `getaddrinfo()` since commit |
| 67a08dca27a6a07b36c7f97252e284ca957ff1a5 (from 2019, via #4662). So, |
| to resolve all this, we can now revert the initial commit, thus |
| restoring `getaddrinfo()` detection and support IPv6 regardless of its |
| outcome. |
| |
| Reported-by: Daniel Stenberg |
| |
| 2. Omit `bcrypt` with original MinGW |
| |
| Original (aka legacy/old) MinGW versions do not support `bcrypt` |
| (introduced with Vista). We already have logic to handle that in |
| `lib/rand.c` and autotools builds, where we do not call the |
| unsupported API and do not link `bcrypt`, respectively, when using |
| original MinGW. |
| |
| This patch ports that logic to CMake, fixing the link error: |
| `c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot find -lbcrypt` |
| |
| Ref: https://ci.appveyor.com/project/curlorg/curl/builds/44624888/job/40vle84cn4vle7s0#L508 |
| Regression since 76172511e7adcf720f4c77bd91f49278300ec97e |
| |
| Fixes #9214 |
| Fixes #9393 |
| Fixes #9395 |
| Closes #9396 |
| |
| Version 7.85.0 (31 Aug 2022) |
| |
| Daniel Stenberg (31 Aug 2022) |
| - RELEASE-NOTES: synced |
| |
| curl 7.85.0 release |
| |
| - THANKS: add contributors from the 7.85.0 release |
| |
| - getparam: correctly clean args |
| |
| Follow-up to bf7e887b2442783ab52 |
| |
| The previous fix for #9128 was incomplete and caused #9397. |
| |
| Fixes #9397 |
| Closes #9399 |
| |
| - zuul: remove the clang-tidy job |
| |
| Turns out we don't see the warnings, but the warnings right now are |
| plain ridiculous and unhelpful so we can just as well just kill this |
| job. |
| |
| Closes #9390 |
| |
| - cmake: set feature PSL if present |
| |
| ... make test 1014 pass when libpsl is used. |
| |
| Closes #9391 |
| |
| - lib530: simplify realloc failure exit path |
| |
| To make code analyzers happier |
| |
| Closes #9392 |
| |
| - [Orgad Shaneh brought this change] |
| |
| tests: add tests for netrc login/password combinations |
| |
| Covers the following PRs: |
| |
| - #9066 |
| - #9247 |
| - #9248 |
| |
| Closes #9256 |
| |
| - [Orgad Shaneh brought this change] |
| |
| url: really use the user provided in the url when netrc entry exists |
| |
| If the user is specified as part of the URL, and the same user exists |
| in .netrc, Authorization header was not sent at all. |
| |
| The user and password fields were assigned in conn->user and password |
| but the user was not assigned to data->state.aptr, which is the field |
| that is used in output_auth_headers and friends. |
| |
| Fix by assigning the user also to aptr. |
| |
| Amends commit d1237ac906ae7e3cd7a22c3a2d3a135a97edfbf5. |
| |
| Fixes #9243 |
| |
| - [Orgad Shaneh brought this change] |
| |
| netrc: Use the password from lines without login |
| |
| If netrc entry has password with empty login, use it for any username. |
| |
| Example: |
| .netrc: |
| machine example.com password 123456 |
| |
| curl -vn http://user@example.com/ |
| |
| Fix it by initializing state_our_login to TRUE, and reset it only when |
| finding an entry with the same host and different login. |
| |
| Closes #9248 |
| |
| - [Jay Satiro brought this change] |
| |
| url: treat missing usernames in netrc as empty |
| |
| - If, after parsing netrc, there is a password with no username then |
| set a blank username. |
| |
| This used to be the case prior to 7d600ad (precedes 7.82). Note |
| parseurlandfillconn already does the same thing for URLs. |
| |
| Reported-by: Raivis <standsed@users.noreply.github.com> |
| Testing-by: Domen Kožar |
| |
| Fixes https://github.com/curl/curl/issues/8653 |
| Closes #9334 |
| Closes #9066 |
| |
| - test8: verify that "ctrl-byte cookies" are ignored |
| |
| - cookie: reject cookies with "control bytes" |
| |
| Rejects 0x01 - 0x1f (except 0x09) plus 0x7f |
| |
| Reported-by: Axel Chong |
| |
| Bug: https://curl.se/docs/CVE-2022-35252.html |
| |
| CVE-2022-35252 |
| |
| Closes #9381 |
| |
| - libssh: ignore deprecation warnings |
| |
| libssh 0.10.0 marks all SCP functions as "deprecated" which causes |
| compiler warnings and errors in our CI jobs and elsewhere. Ignore |
| deprecation warnings if 0.10.0 or later is found in the build. |
| |
| If they actually remove the functions at a later point, then someone can |
| deal with that pain and functionality break then. |
| |
| Fixes #9382 |
| Closes #9383 |
| |
| - Revert "schannel: when importing PFX, disable key persistence" |
| |
| This reverts commit 70d010d285315e5f1cad6bdb4953e167b069b692. |
| |
| Due to further reports in #9300 that indicate this commit might |
| introduce problems. |
| |
| - multi: use larger dns hash table for multi interface |
| |
| Have curl_multi_init() use a much larger DNS hash table than used for |
| the easy interface to scale and perform better when used with _many_ |
| host names. |
| |
| curl_share_init() sets an in-between size. |
| |
| Inspired-by: Ivan Tsybulin |
| See #9340 |
| Closes #9376 |
| |
| Marc Hoersken (28 Aug 2022) |
| - CI/runtests.pl: add param for dedicated curl to talk to APIs |
| |
| This should make it possible to also report test failures |
| if our freshly build curl binary is not fully functional. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9360 |
| |
| Daniel Stenberg (27 Aug 2022) |
| - [Jacob Tolar brought this change] |
| |
| openssl: add cert path in error message |
| |
| Closes #9349 |
| |
| - [Jacob Tolar brought this change] |
| |
| cert.d: clarify that escape character works for file paths |
| |
| Closes #9349 |
| |
| - gha: move over ngtcp2-gnutls CI job from zuul |
| |
| Closes #9331 |
| |
| Marc Hoersken (26 Aug 2022) |
| - cmake: add detection of threadsafe feature |
| |
| Avoids failing test 1014 by replicating configure checks |
| for HAVE_ATOMIC and _WIN32_WINNT with custom CMake tests. |
| |
| Reviewed-by: Marcel Raad |
| |
| Follow up to #8680 |
| Closes #9312 |
| |
| Daniel Stenberg (26 Aug 2022) |
| - RELEASE-NOTES: synced |
| |
| Marc Hoersken (26 Aug 2022) |
| - CI/azure: align torture shallowness with GHA |
| |
| There 25 is used with FTP tests skipped, and 20 for FTP tests. |
| This should make torture tests stay within the 60min timeout. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9371 |
| |
| - multi_wait: fix and improve Curl_poll error handling on Windows |
| |
| First check for errors and return CURLM_UNRECOVERABLE_POLL |
| before moving forward and waiting on socket readiness events. |
| |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| |
| Reported-by: Daniel Stenberg |
| Ref: #9361 |
| |
| Follow up to #8961 |
| Closes #9372 |
| |
| - multi_wait: fix skipping to populate revents for extra_fds |
| |
| On Windows revents was not populated for extra_fds if |
| multi_wait had to wait due to the Curl_poll pre-check |
| not signalling any readiness. This commit fixes that. |
| |
| Reviewed-by: Marcel Raad |
| Reviewed-by: Jay Satiro |
| |
| Closes #9361 |
| |
| - CI/appveyor: disable TLS in msys2-native autotools builds |
| |
| Schannel cannot be used from msys2-native Linux-emulated builds. |
| |
| Reviewed-by: Marcel Raad |
| Reviewed-by: Daniel Stenberg |
| |
| Follow up to #9367 |
| Closes #9370 |
| |
| Jay Satiro (25 Aug 2022) |
| - tests: fix http2 tests to use CRLF headers |
| |
| Prior to this change some tests that rely on nghttpx proxy did not use |
| CRLF headers everywhere. A recent change in nghttp2, which updated its |
| version of llhttp (HTTP parser), requires curl's HTTP/1.1 test server to |
| use CRLF headers. |
| |
| Ref: https://github.com/nghttp2/nghttp2/commit/9d389e8 |
| |
| Fixes https://github.com/curl/curl/issues/9364 |
| Closes https://github.com/curl/curl/pull/9365 |
| |
| Daniel Stenberg (25 Aug 2022) |
| - [rcombs brought this change] |
| |
| multi: use a pipe instead of a socketpair on apple platforms |
| |
| Sockets may be shut down by the kernel when the app is moved to the |
| background, but pipes are not. |
| |
| Removed from KNOWN_BUGS |
| |
| Fixes #6132 |
| Closes #9368 |
| |
| - [Somnath Kundu brought this change] |
| |
| libssh2: provide symlink name in SFTP dir listing |
| |
| When reading the symbolic link name for a file, we need to add the file |
| name to base path name. |
| |
| Closes #9369 |
| |
| - configure: if asked to use TLS, fail if no TLS lib was detected |
| |
| Previously the configure script would just warn about this fact and |
| continue with TLS disabled build which is not always helpful. TLS should |
| be explicitly disabled if that is what the user wants. |
| |
| Closes #9367 |
| |
| - [Dustin Howett brought this change] |
| |
| schannel: when importing PFX, disable key persistence |
| |
| By default, the PFXImportCertStore API persists the key in the user's |
| key store (as though the certificate was being imported for permanent, |
| ongoing use.) |
| |
| The documentation specifies that keys that are not to be persisted |
| should be imported with the flag `PKCS12_NO_PERSIST_KEY`. |
| NOTE: this flag is only supported on versions of Windows newer than XP |
| and Server 2003. |
| |
| Fixes #9300 |
| Closes #9363 |
| |
| - unit1303: four tests should have TRUE for 'connecting' |
| |
| To match the comments. |
| |
| Reported-by: Wu Zheng |
| |
| See #9355 |
| Closes #9356 |
| |
| - CURLOPT_BUFFERSIZE.3: add upload buffersize to see also |
| |
| Closes #9354 |
| |
| - [Fabian Fischer brought this change] |
| |
| HTTP3.md: add missing autoreconf command for building with wolfssl |
| |
| Closes #9353 |
| |
| - RELEASE-NOTES: synced |
| |
| - multi: have curl_multi_remove_handle close CONNECT_ONLY transfer |
| |
| įŗhen it has been used in the multi interface, it is otherwise left in |
| the connection cache, can't be reused and nothing will close them since |
| the easy handle loses the association with the multi handle and thus the |
| connection cache - until the multi handle is closed or it gets pruned |
| because the cache is full. |
| |
| Reported-by: Dominik Thalhammer |
| Fixes #9335 |
| Closes #9342 |
| |
| - docs/cmdline-opts: remove \& escapes from all .d files |
| |
| gen.pl escapes them itself now |
| |
| - docs/cmdline-opts/gen.pl: encode leading single and double quotes |
| |
| As "(aq" and "(dq" to prevent them from implying a meaning in the nroff |
| output. This removes the need for using \& escapes in the .d files' |
| description parts. |
| |
| Closes #9352 |
| |
| Marc Hoersken (23 Aug 2022) |
| - tests/server/sockfilt.c: avoid race condition without a mutex |
| |
| Avoid loosing any triggered handles by first aborting and joining |
| the waiting threads before evaluating the individual signal state. |
| |
| This removes the race condition and therefore need for a mutex. |
| |
| Closes #9023 |
| |
| Daniel Stenberg (22 Aug 2022) |
| - [Emil Engler brought this change] |
| |
| url: output the maximum when rejecting a url |
| |
| This commit changes the failf message to output the maximum length, when |
| curl refuses to process a URL because it is too long. |
| |
| See: #9317 |
| Closes: #9327 |
| |
| - [Chris Paulson-Ellis brought this change] |
| |
| configure: fix broken m4 syntax in TLS options |
| |
| Commit b589696f added lines to some shell within AC_ARG_WITH macros, but |
| inadvertently failed to move the final closing ). |
| |
| Quote the script section using braces. |
| |
| So, if these problems have been around for a while, how did I find them? |
| Only because I did a configure including these options: |
| |
| $ ./configure --with-openssl --without-rustls |
| SSL: enabled (OpenSSL) |
| |
| Closes #9344 |
| |
| - tests/data/CMakeLists: remove making the 'show' makefile target |
| |
| It is not used by runtests since 3c0f462 |
| |
| Closes #9333 |
| |
| - tests/data/Makefile: remove 'filecheck' target |
| |
| No practical use anymore since 3c0f4622cdfd6 |
| |
| Closes #9332 |
| |
| - libssh2: make atime/mtime date overflow return error |
| |
| Closes #9328 |
| |
| - libssh: make atime/mtime date overflow return error |
| |
| Closes #9328 |
| |
| - examples/curlx.c: remove |
| |
| This example is a bit convoluted to use as an example, combined with the |
| special license for it makes it unsuitable. |
| |
| Closes #9330 |
| |
| - [Tobias Nygren brought this change] |
| |
| curl.h: include <sys/select.h> on SunOS |
| |
| It is needed for fd_set to be visible to downstream consumers that use |
| <curl/multi.h>. Header is known to exist at least as far back as Solaris |
| 2.6. |
| |
| Closes #9329 |
| |
| - DEPRECATE.md: push the NSS deprecation date forward one year to 2023 |
| |
| URL: https://curl.se/mail/lib-2022-08/0016.html |
| |
| - libssh2: setting atime or mtime >32bit on 4-bytes-long systems |
| |
| Since the libssh2 API uses 'long' to store the timestamp, it cannot |
| transfer >32bit times on Windows and 32bit architecture builds. |
| |
| Avoid nasty surprises by instead not setting such time. |
| |
| Spotted by Coverity |
| |
| Closes #9325 |
| |
| - libssh: setting atime or mtime > 32bit is now just skipped |
| |
| The libssh API used caps the time to an unsigned 32bit variable. Avoid |
| nasty surprises by instead not setting such time. |
| |
| Spotted by Coverity. |
| |
| Closes #9324 |
| |
| Jay Satiro (16 Aug 2022) |
| - KNOWN_BUGS: Windows Unicode builds use homedir in current locale |
| |
| Bug: https://github.com/curl/curl/pull/7252 |
| Reported-by: dEajL3kA@users.noreply.github.com |
| |
| Ref: https://github.com/curl/curl/pull/7281 |
| |
| Closes https://github.com/curl/curl/pull/9305 |
| |
| Daniel Stenberg (16 Aug 2022) |
| - test399: switch it to use a config file instead |
| |
| ... as using a 65535 bytes host name in a URL does not fit on the |
| command line on some systems - like Windows. |
| |
| Reported-by: Marcel Raad |
| Fixes #9321 |
| Closes #9322 |
| |
| - RELEASE-NOTES: synced |
| |
| - asyn-ares: make a single alloc out of hostname + async data |
| |
| This saves one alloc per name resolve and simplifies the exit path. |
| |
| Closes #9310 |
| |
| - Curl_close: call Curl_resolver_cancel to avoid memory-leak |
| |
| There might be a pending (c-ares) resolve that isn't free'd up yet. |
| |
| Closes #9310 |
| |
| - asyn-thread: fix socket leak on OOM |
| |
| Closes #9310 |
| |
| - GHA: mv CI torture test from Zuul |
| |
| Closes #9310 |
| |
| - ngtcp2-wolfssl.yml: add GHA to build ngtcp2 + wolfSSL |
| |
| Closes #9318 |
| |
| - test399: verify check of too long host name |
| |
| - url: reject URLs with hostnames longer than 65535 bytes |
| |
| It *probably* causes other problems too since DNS can't resolve such |
| long names, but the SNI field in TLS is limited to 16 bits length. |
| |
| Closes #9317 |
| |
| - curl_multi_perform.3: minor language fix |
| |
| Closes #9316 |
| |
| - ngtcp2: fix picky compiler warnings with wolfSSL for QUIC |
| |
| Follow-up to 8a13be227eede2 |
| |
| Closes #9315 |
| |
| - ngtcp2: remove leftover variable |
| |
| Mistake leftover from my edit before push. |
| |
| Follow-up from 8a13be227eede2601c2b3b |
| Reported-by: Viktor Szakats |
| Bug: https://github.com/curl/curl/pull/9290#issuecomment-1214569167 |
| |
| Viktor Szakats (15 Aug 2022) |
| - Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip] |
| |
| Before this patch `-nghttp3`/`-ngtcp2` had an effect only when `-ssl` |
| was also enabled. `-ssl` meaning OpenSSL (and its forks). After |
| 8a13be227eede2601c2b3b1c63e08b3dc9b35dd5 nghttp3/ngtcp2 can also be |
| used together with wolfSSL. This patch adds the ability to enable |
| `-nghttp3`/`-ngtcp2` independently from `-ssl` (OpenSSL), allowing to |
| use it with wolfSSL or other, future TLS backends. |
| |
| Before this patch, it was fine to enable `-nghttp3`/`-ngtcp2` |
| unconditionally. After this patch, this is no longer the case, and now |
| it's the user's responsibility to enable `-nghttp3`/`-ngtcp2` only |
| together with a compatible TLS backend. |
| |
| When using a TLS backend other than OpenSSL, the TLS-specific ngtcp2 |
| library must be configured manually, e.g.: |
| `export CURL_LDFLAG_EXTRAS=-lngtcp2_crypto_wolfssl` |
| |
| (or via `NGTCP2_LIBS`) |
| |
| Closes #9314 |
| |
| Daniel Stenberg (15 Aug 2022) |
| - [Stefan Eissing brought this change] |
| |
| quic: add support via wolfSSL |
| |
| - based on ngtcp2 PR https://github.com/ngtcp2/ngtcp2/pull/505 |
| - configure adapted to build against ngtcp2 wolfssl crypto lib |
| - quic code added for creation of WOLFSSL* instances |
| |
| Closes #9290 |
| |
| Marcel Raad (14 Aug 2022) |
| - [David Carlier brought this change] |
| |
| memdebug: add annotation attributes |
| |
| memory debug tracking annotates whether the returned pointer does not |
| `alias`, hints where the size required is, for Windows to be better |
| debugged via Visual Studio. |
| |
| Closes https://github.com/curl/curl/pull/9306 |
| |
| Daniel Stenberg (14 Aug 2022) |
| - GHA: move libressl CI from zuul to GitHub |
| |
| Closes #9309 |
| |
| - KNOWN_BUGS: FTPS directory listing hangs on Windows with Schannel |
| |
| Closes #9161 |
| |
| - KNOWN_BUGS: CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel |
| |
| Closes #8741 |
| |
| - KNOWN_BUGS: libssh blocking and infinite loop problem |
| |
| Closes #8632 |
| |
| - RELEASE-NOTES: synced |
| |
| - msh3: fix the QUIC disconnect function |
| |
| And free request related memory better in 'done'. Fixes a memory-leak. |
| |
| Reported-by: Gisle Vanem |
| Fixes #8915 |
| Closes #9304 |
| |
| - connect: close the happy eyeballs loser connection when using QUIC |
| |
| Reviewed-by: Nick Banks |
| |
| Closes #9303 |
| |
| - [Emil Engler brought this change] |
| |
| refactor: split resolve_server() into functions |
| |
| This commit splits the branch-heavy resolve_server() function into |
| various sub-functions, in order to reduce the amount of nested |
| if/else-statements. |
| |
| Beside this, it also removes many else-sequences, by returning in the |
| previous if-statement. |
| |
| Closes #9283 |
| |
| - schannel: re-indent to use curl style better |
| |
| Only white space changes |
| |
| Closes #9301 |
| |
| - [Emanuele Torre brought this change] |
| |
| docs/cmdline-opts: fix example and categories for --form-escape |
| |
| The example was missing a "--form" argument |
| I also replaced "--form" with "-F" to shorten the line a bit since it |
| was already very long. |
| |
| And I also moved --form-escape from the "post" category to the "upload" |
| category (this is what I originally wanted to fix, before also noticing |
| the mistake in the example). |
| |
| Closes #9298 |
| |
| - [Nick Banks brought this change] |
| |
| HTTP3.md: update to msh3 v0.4.0 |
| |
| Closes #9297 |
| |
| - hostip: resolve *.localhost to 127.0.0.1/::1 |
| |
| Following the footsteps of other clients like Firefox/Chrome. RFC 6761 |
| says clients SHOULD do this. |
| |
| Add test 389 to verify. |
| |
| Reported-by: TheKnarf on github |
| Fixes #9192 |
| Closes #9296 |
| |
| Jay Satiro (11 Aug 2022) |
| - KNOWN_BUGS: long paths are not fully supported on Windows |
| |
| Bug: https://github.com/curl/curl/issues/8361 |
| Reported-by: Gisle Vanem |
| |
| Closes https://github.com/curl/curl/pull/9288 |
| |
| Daniel Stenberg (11 Aug 2022) |
| - config: remove the check for and use of SIZEOF_SHORT |
| |
| shorts are 2 bytes on all platforms curl runs and have ever run on. |
| |
| Closes #9291 |
| |
| - configure: introduce CURL_SIZEOF |
| |
| This is a rewrite of the previously used GPLv3+exception licensed |
| file. With this change, there is no more reference to GPL so we can |
| remove that from LICENSES/. |
| |
| Ref: #9220 |
| Closes #9291 |
| |
| - [Sean McArthur brought this change] |
| |
| hyper: customize test1274 to how hyper unfolds headers |
| |
| Closes #9217 |
| |
| - [Orgad Shaneh brought this change] |
| |
| curl-config: quote directories with potential space |
| |
| On Windows (at least with CMake), the default prefix is |
| C:/Program Files (x86)/CURL. |
| |
| Closes #9253 |
| |
| - [Oliver Roberts brought this change] |
| |
| amigaos: fix threaded resolver on AmigaOS 4.x |
| |
| Replace ip4 resolution function on AmigaOS 4.x, as it requires runtime |
| feature detection and extra code to make it thread safe. |
| |
| Closes #9265 |
| |
| - [Emil Engler brought this change] |
| |
| imap: use ISALNUM() for alphanumeric checks |
| |
| This commit replaces a self-made character check for alphanumeric |
| characters within imap_is_bchar() with the ISALNUM() macro, as it is |
| reduces the size of the code and makes the performance better, due to |
| ASCII arithmetic. |
| |
| Closes #9289 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Cering on github brought this change] |
| |
| connect: add quic connection information |
| |
| Fixes #9286 |
| Closes #9287 |
| |
| - [Philip Heiduck brought this change] |
| |
| cirrus/freebsd-ci: bootstrap the pip installer |
| |
| Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> |
| |
| Closes #9213 |
| |
| - urldata: move smaller fields down in connectdata struct |
| |
| By (almost) sorting the struct fields in connectdata in a decending size |
| order, having the single char ones last, we reduce the number of holes |
| in the struct and thus the amount of storage needed. |
| |
| Closes #9280 |
| |
| - ldap: adapt to conn->port now being an 'int' |
| |
| Remove typecasts. Fix printf() formats. |
| |
| Follow-up from 764c6bd3bf. |
| Pointed out by Coverity CID 1507858. |
| |
| Closes #9281 |
| |
| - KNOWN_BUGS: Negotiate authentication against Hadoop HDFS |
| |
| Closes #8264 |
| |
| - [Oliver Roberts brought this change] |
| |
| file: add handling of native AmigaOS paths |
| |
| On AmigaOS 4.x, handle native absolute paths, whilst blocking relative |
| paths. Also allow unix style paths if feature enabled at link time. |
| |
| Inspiration-from: Michael Trebilcock |
| |
| Closes #9259 |
| |
| - KNOWN_BUGS: cmake build is not thread-safe |
| |
| The cmake build does not check for and verify presence of a working |
| Atomic type, which then makes curl_global_init() to not build |
| thread-safe on non-Windows platforms. |
| |
| Closes https://github.com/curl/curl/issues/8973 |
| Closes https://github.com/curl/curl/pull/8982 |
| |
| - [Oliver Roberts brought this change] |
| |
| configure: fixup bsdsocket detection code for AmigaOS 4.x |
| |
| The code that detects bsdsocket.library for AmigaOS did not work |
| for AmigaOS 4.x. This has been fixed and also cleaned up a little |
| to reduce duplication. Wasn't technically necessary before, but is |
| required when building with AmiSSL instead of OpenSSL. |
| |
| Closes #9268 |
| |
| - [Oliver Roberts brought this change] |
| |
| tool: reintroduce set file comment code for AmigaOS |
| |
| Amiga specific code which put the URL in the file comment was perhaps |
| accidentally removed in b88940850002a3f1c25bc6488b95ad30eb80d696 having |
| originally been added in 5c215bdbdfde8b2350cdcbac82aae0c914da5314. |
| Reworked to fit the code changes and added it back in. |
| |
| Reported-by: Michael Trebilcock |
| Originally-added-by: Chris Young |
| |
| Closes #9258 |
| |
| - urldata: make 'negnpn' use less storage |
| |
| The connectdata struct field 'negnpn' never holds a value larger than |
| 30, so an unsigned char saves 3 bytes struct space. |
| |
| Closes #9279 |
| |
| - urldata: make three *_proto struct fields smaller |
| |
| Use 'unsigned char' for storage instead of the enum, for three GSSAPI |
| related fields in the connectdata struct. |
| |
| Closes #9278 |
| |
| - connect: set socktype/protocol correctly |
| |
| So that an address used from the DNS cache that was previously used for |
| QUIC can be reused for TCP and vice versa. |
| |
| To make this possible, set conn->transport to "unix" for unix domain |
| connections ... and store the transport struct field in an unsigned char |
| to use less space. |
| |
| Reported-by: ć¦ćć |
| Fixes #9274 |
| Closes #9276 |
| |
| - [Oliver Roberts brought this change] |
| |
| amissl: allow AmiSSL to be used with AmigaOS 4.x builds |
| |
| Enable AmiSSL to be used instead of static OpenSSL link libraries. |
| for AmigaOS 4.x, as it already is in the AmigaOS 3.x build. |
| |
| Closes #9269 |
| |
| - [opensignature on github brought this change] |
| |
| openssl: add details to "unable to set client certificate" error |
| |
| from: "curl: (58) unable to set client certificate" |
| |
| to: curl: (58) unable to set client certificate [error:0A00018F:SSL |
| routines::ee key too small] |
| |
| Closes #9228 |
| |
| - [Oliver Roberts brought this change] |
| |
| amissl: make AmiSSL v5 a minimum requirement |
| |
| AmiSSL v5 is the latest version, featuring a port of OpenSSL 3.0. |
| Support for previous OpenSSL 1.1.x versions has been dropped, so |
| makes sense to enforce v5 as the minimum requirement. This also |
| allows all the AmiSSL stub workarounds to be removed as they are |
| now provided in a link library in the AmiSSL SDK. |
| |
| Closes #9267 |
| |
| - [Oliver Roberts brought this change] |
| |
| configure: -pthread not available on AmigaOS 4.x |
| |
| The most recent GCC builds for AmigaOS 4.x do not allow -pthread and |
| exit with an error. Instead, need to explictly specify -lpthread. |
| |
| Closes #9266 |
| |
| - digest: pass over leading spaces in qop values |
| |
| When parsing the "qop=" parameter of the digest authentication, and the |
| value is provided within quotes, the list of values can have leading |
| white space which the parser previously did not handle correctly. |
| |
| Add test case 388 to verify. |
| |
| Reported-by: vlubart on github |
| Fixes #9264 |
| Closes #9270 |
| |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| digest: reject broken header with session protocol but without qop |
| |
| Closes #9077 |
| |
| - CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples |
| |
| Reported-by: jvvprasad78 on github |
| Assisted-by: Jay Satiro |
| Fixes #9239 |
| Closes #9241 |
| |
| - [Fabian Keil brought this change] |
| |
| test44[2-4]: add '--resolve' to the keywords |
| |
| ... so the tests can be automatically skipped when |
| using an external proxy like Privoxy. |
| |
| Closes #9250 |
| |
| - RELEASE-NOTES: synced |
| |
| - CURLOPT_CONNECT_ONLY.3: clarify multi API use |
| |
| Reported-by: Maxim Ivanov |
| Fixes #9244 |
| Closes #9262 |
| |
| - [Andrew Lambert brought this change] |
| |
| curl_easy_header: Add CURLH_PSEUDO to sanity check |
| |
| Fixes #9235 |
| Closes #9236 |
| |
| - [Emil Engler brought this change] |
| |
| docs: add dns category to --resolve |
| |
| This commit adds the dns category to the --resolve command line option, |
| because it can be interpreted as both: a low-level connection option and |
| an option related to the resolving of a hostname. |
| |
| It is also not common for dns options to belong to the connection |
| category and vice versa. --ipv4 and --ipv6 are both good examples. |
| |
| Closes #9229 |
| |
| Jay Satiro (2 Aug 2022) |
| - [Wyatt O'Day brought this change] |
| |
| schannel: Add TLS 1.3 support |
| |
| - Support TLS 1.3 as the default max TLS version for Windows Server 2022 |
| and Windows 11. |
| |
| - Support specifying TLS 1.3 ciphers via existing option |
| CURLOPT_TLS13_CIPHERS (tool: --tls13-ciphers). |
| |
| Closes https://github.com/curl/curl/pull/8419 |
| |
| Daniel Stenberg (2 Aug 2022) |
| - [Emil Engler brought this change] |
| |
| cmdline-opts/gen.pl: improve performance |
| |
| On some systems, the gen.pl script takes nearly two minutes for the |
| generation of the main-page, which is a completely unacceptable time. |
| |
| The slow performance has two causes: |
| 1. Use of a regex locale operator |
| 2. Useless invokations of loops |
| |
| The commit addresses the first issue by replacing the "\W" wiht |
| [^a-zA-Z0-9_], which is, according to regex101.com, functionally |
| equivalent to the previous operation, except that it is obviously |
| limited to ASCII only, which is fine, as the curl project is |
| English-only anyway. |
| |
| The second issue is being addressed by only running the loop if the line |
| contains a "--" in it. The loop may be completeley removed in the |
| future. |
| |
| Co-authored-by: Emanuele Torre <torreemanuele6@gmail.com> |
| |
| See #8299 |
| Fixes #9230 |
| Closes #9232 |
| |
| - docs/cmdline: mark fail and fail-with-body as mutually exclusive |
| |
| Reported-by: Andreas Sommer |
| Fixes #9221 |
| Closes #9222 |
| |
| - [Nao Yonashiro brought this change] |
| |
| quiche: fix build failure |
| |
| Reviewed-by: Alessandro Ghedini |
| Closes #9223 |
| |
| Viktor Szakats (2 Aug 2022) |
| - configure.ac: drop references to deleted functions |
| |
| follow-up from 4d73854462f30948acab12984b611e9e33ee41e6 |
| |
| Reported-by: Oliver Roberts |
| Fixes #9238 |
| Closes #9240 |
| |
| Daniel Stenberg (28 Jul 2022) |
| - [Sean McArthur brought this change] |
| |
| hyper: enable obs-folded multiline headers |
| |
| Closes #9216 |
| |
| - connect: revert the use of IP*_RECVERR |
| |
| The options were added in #6341 and d13179d, but cause problems: Lots of |
| POLLIN event occurs but recvfrom read nothing. |
| |
| Reported-by: Tatsuhiro Tsujikawa |
| Fixes #9209 |
| Closes #9215 |
| |
| - [Marco Kamner brought this change] |
| |
| docs: remove him/her/he/she from documentation |
| |
| Closes #9208 |
| |
| - RELEASE-NOTES: synced |
| |
| - tool_getparam: make --doh-url "" switch it off |
| |
| A possible future addition could be to parse the URL first too to verify |
| that it is valid before trying to use it. |
| |
| Assisted-by: Jay Satiro |
| Closes #9207 |
| |
| - mailmap: add rzrymiak on github |
| |
| Jay Satiro (26 Jul 2022) |
| - ngtcp2: Fix build error due to change in nghttp3 prototypes |
| |
| ngtcp2/nghttp3@4a066b2 changed nghttp3_conn_block_stream and |
| nghttp3_conn_shutdown_stream_write return from int to void. |
| |
| Reported-by: jurisuk@users.noreply.github.com |
| |
| Fixes https://github.com/curl/curl/issues/9204 |
| Closes https://github.com/curl/curl/pull/9200 |
| |
| Daniel Stenberg (26 Jul 2022) |
| - [rzrymiak on github brought this change] |
| |
| BUGS.md: improve language |
| |
| Closes #9205 |
| |
| - [Philip Heiduck brought this change] |
| |
| cirrus.yml: replace py38-pip with py39-pip |
| |
| Reported-by: Jay Satiro |
| Fixes #9201 |
| Closes #9202 |
| |
| - tool_getparam: fix cleanarg() for unicode builds |
| |
| Use the correct type, and make cleanarg an empty macro if the cleaning |
| ability is absent. |
| |
| Fixes #9195 |
| Closes #9196 |
| |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| |
| Marc Hoersken (25 Jul 2022) |
| - test3026: add support for Windows using native Win32 threads |
| |
| Reviewed-by: Viktor Szakats |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Daniel Stenberg |
| |
| Follow up to 7ade9c50b35d95d47a43880c3097bebab7a7e690 |
| Closes #9012 |
| |
| Jay Satiro (25 Jul 2022) |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| digest: fix memory leak, fix not quoted 'opaque' |
| |
| Fix leak regression introduced by 3a6fe0c. |
| |
| Closes https://github.com/curl/curl/pull/9199 |
| |
| Daniel Stenberg (23 Jul 2022) |
| - tests: several enumerated type cleanups |
| |
| To please icc |
| |
| Closes #9179 |
| |
| - tool_paramhlp: fix "enumerated type mixed with another type" |
| |
| Warning by icc |
| |
| Closes #9179 |
| |
| - tool_writeout: fix enumerated type mixed with another type |
| |
| Closes #9179 |
| |
| - tool_cfgable: make 'synthetic_error' a plain bool |
| |
| The specific reason was not used. |
| |
| Closes #9179 |
| |
| - tool_paramhlp: make check_protocol return ParameterError |
| |
| "enumerated type mixed with another type" |
| |
| Closes #9179 |
| |
| - tool_formparse: fix variable may be used before its value is set |
| |
| Warning by icc |
| |
| Closes #9179 |
| |
| - sendf: skip storing HTTP headers if HTTP disabled |
| |
| Closes #9179 |
| |
| - url: enumerated type mixed with another type |
| |
| Follow-up to 1c58e7ae99ce2030213f28b |
| |
| Closes #9179 |
| |
| - urldata: change second proxytype field to unsigned char to match |
| |
| To avoid "enumerated type mixed with another type" |
| |
| Closes #9179 |
| |
| - http: typecast the httpreq assignment to avoid icc compiler warning |
| |
| error #188: enumerated type mixed with another type |
| |
| Closes #9179 |
| |
| - urldata: make state.httpreq an unsigned char |
| |
| To match set.method used for the same purpose. |
| |
| Closes #9179 |
| |
| - splay: avoid using -1 in unsigned variable |
| |
| To fix icc compiler warning integer conversion resulted in a change of sign |
| |
| Closes #9179 |
| |
| - sendf: store the header type in an usigned char to avoid icc warnings |
| |
| Closes #9179 |
| |
| - multi: fix the return code from Curl_pgrsDone() |
| |
| It does not return a CURLcode. Detected by the icc compiler warning |
| "enumerated type mixed with another type" |
| |
| Closes #9179 |
| |
| - sendf: make Curl_debug a void function |
| |
| As virtually no called checked the return code, and those that did |
| wrongly treated it as a CURLcode. Detected by the icc compiler warning: |
| enumerated type mixed with another type |
| |
| Closes #9179 |
| |
| - http_chunks: remove an assign + typecast |
| |
| As it caused icc to complain: "pointer cast involving 64-bit pointed-to |
| type" |
| |
| Closes #9179 |
| |
| - vtls: make Curl_ssl_backend() return the enum type curl_sslbackend |
| |
| To fix the icc warning enumerated type mixed with another type |
| |
| Closes #9179 |
| |
| - curl-compilers.m4: make icc use -diag* options and disable two warnings |
| |
| -wd and -we are deprecated and are now -diag-disable and -diag-error |
| |
| Disable warning 1024 and 2259 |
| |
| Closes #9179 |
| |
| - [Matthew Thompson brought this change] |
| |
| GHA: add two Intel compiler CI jobs |
| |
| Closes #9179 |
| |
| - [Daniel Katz brought this change] |
| |
| curl-functions.m4: check whether atomics can link rather than just compile |
| |
| Some build toolchains support C11 atomics (i.e., _Atomic types), but |
| will not link the associated atomics runtime unless a flag is passed. In |
| such an environment, linking an application with libcurl.a can fail due |
| to undefined symbols for atomic load/store functions. |
| |
| I encountered this behavior when upgrading curl to 7.84.0 and attempting |
| to build with Solaris Studio 12.6. Solaris provides the flag |
| -xatomic=[gcc | studio], allowing users to link to one of two atomics |
| runtime implementations. However, if the user does not provide this |
| flag, then neither runtime is linked. This led to builds failing in CI. |
| |
| Closes #9190 |
| |
| - [Rosen Penev brought this change] |
| |
| curl-wolfssl.m4: add options header when building test code |
| |
| Needed for certain configurations of wolfSSL. Otherwise, missing header |
| error may occur. |
| |
| Tested with OpenWrt. |
| |
| Closes #9187 |
| |
| - ftp: use a correct expire ID for timer expiry |
| |
| This was an accurate error pointed out by the icc warning: enumerated |
| type mixed with another type |
| |
| Ref: #9179 |
| Closes #9184 |
| |
| - sendf: fix paused header writes since after the header API |
| |
| Regression since d1e4a67 |
| |
| Reported-by: Sergey Ogryzkov |
| Fixes #9180 |
| Closes #9182 |
| |
| - mprintf: fix *dyn_vprintf() when out-of-memory |
| |
| Follow-up to 0e48ac1f99a. Torture-testing 1455 would lead to a memory |
| leak otherwise. |
| |
| Closes #9185 |
| |
| - curl-confopts: remove leftover AC_REQUIREs |
| |
| configure.ac:3488: warning: CURL_CHECK_FUNC_IOCTL is m4_require'd but not m4_defun'd |
| configure.ac:3488: warning: CURL_CHECK_FUNC_SETSOCKOPT is m4_require'd but not m4_defun'd |
| |
| follow-up from 4d73854462f30 |
| |
| Closes #9183 |
| |
| - file: fix icc enumerated type mixed with another type warning |
| |
| Ref: #9179 |
| Closes #9181 |
| |
| Viktor Szakats (19 Jul 2022) |
| - tidy-up: delete unused build configuration macros |
| |
| Most of them feature guards: |
| |
| - `CURL_INCLUDES_SYS_UIO` [1] |
| - `HAVE_ALLOCA_H` [2] |
| - `HAVE_CRYPTO_CLEANUP_ALL_EX_DATA` (unused since de71e68000c8624ea13f90b136f8734dd0fb1bdc) |
| - `HAVE_DLFCN_H` |
| - `HAVE_DLOPEN` |
| - `HAVE_DOPRNT` |
| - `HAVE_FCNTL` |
| - `HAVE_GETHOSTBYNAME` [3] |
| - `HAVE_GETOPT_H` |
| - `HAVE_GETPASS` |
| - `HAVE_GETPROTOBYNAME` |
| - `HAVE_GETSERVBYNAME` |
| - `HAVE_IDN_FREE*` |
| - `HAVE_INET_ADDR` |
| - `HAVE_IOCTL` |
| - `HAVE_KRB4` |
| - `HAVE_KRB_GET_OUR_IP_FOR_REALM` |
| - `HAVE_KRB_H` |
| - `HAVE_LDAPSSL_H` |
| - `HAVE_LDAP_INIT_FD` |
| - `HAVE_LIBDL` |
| - `HAVE_LIBNSL` |
| - `HAVE_LIBRESOLV*` |
| - `HAVE_LIBUCB` |
| - `HAVE_LL` |
| - `HAVE_LOCALTIME_R` |
| - `HAVE_MALLOC_H` |
| - `HAVE_MEMCPY` |
| - `HAVE_MEMORY_H` |
| - `HAVE_NETINET_IF_ETHER_H` |
| - `HAVE_NI_WITHSCOPEID` |
| - `HAVE_OPENSSL_CRYPTO_H` |
| - `HAVE_OPENSSL_ERR_H` |
| - `HAVE_OPENSSL_PEM_H` |
| - `HAVE_OPENSSL_PKCS12_H` |
| - `HAVE_OPENSSL_RAND_H` |
| - `HAVE_OPENSSL_RSA_H` |
| - `HAVE_OPENSSL_SSL_H` |
| - `HAVE_OPENSSL_X509_H` |
| - `HAVE_PEM_H` |
| - `HAVE_POLL` |
| - `HAVE_RAND_SCREEN` |
| - `HAVE_RAND_STATUS` |
| - `HAVE_RECVFROM` |
| - `HAVE_SETSOCKOPT` |
| - `HAVE_SETVBUF` |
| - `HAVE_SIZEOF_LONG_DOUBLE` |
| - `HAVE_SOCKIO_H` |
| - `HAVE_SOCK_OPTS` |
| - `HAVE_STDIO_H` |
| - `HAVE_STRCASESTR` |
| - `HAVE_STRFTIME` |
| - `HAVE_STRLCAT` |
| - `HAVE_STRNCMPI` |
| - `HAVE_STRNICMP` |
| - `HAVE_STRSTR` |
| - `HAVE_STRUCT_IN6_ADDR` |
| - `HAVE_TLD_H` |
| - `HAVE_TLD_STRERROR` |
| - `HAVE_UNAME` |
| - `HAVE_USLEEP` |
| - `HAVE_WINBER_H` |
| - `HAVE_WRITEV` |
| - `HAVE_X509_H` |
| - `LT_OBJDIR` |
| - `NEED_BASENAME_PROTO` |
| - `NOT_NEED_LIBNSL` |
| - `OPENSSL_NO_KRB5` |
| - `RECVFROM_TYPE*` |
| - `SIZEOF_LONG_DOUBLE` |
| - `STRERROR_R_TYPE_ARG3` |
| - `USE_YASSLEMUL` |
| - `_USRDLL` (from CMake) [4] |
| |
| [1] Related parts in `m4/curl-functions.m4` and `configure.ac` might |
| also be deleted. |
| |
| [2] Related comment can possibly be deleted in |
| `packages/vms/generate_config_vms_h_curl.com`. |
| |
| [3] There are more instances of this in autotools, but I did not dare to |
| touch those. Looked like it's used to detect socket support. |
| |
| [4] This is necessary for MFC (Microsoft Foundation Class) DLLs to |
| force linking MFC components statically to the DLL. `libcurl.dll` |
| does not use MFC, so we can delete this define. |
| Ref: https://docs.microsoft.com/cpp/build/regular-dlls-statically-linked-to-mfc |
| |
| Script that can help finding unused settings like above: |
| ```shell |
| |
| autoheader configure.ac # generate lib/curl_config.h.in |
| |
| { |
| grep -o -E 'set\([A-Z][A-Z0-9_]{3,}' CMake/Platforms/WindowsCache.cmake | sed -E 's|set\(||g' |
| grep -o -E -h '#define +[A-Z][A-Z0-9_]{3,}' lib/config-*.h | sed -E 's|#define +||g' |
| grep -o -E '#cmakedefine +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.cmake | sed -E 's|#cmakedefine +||g' |
| grep -o -E '#undef +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.in | sed -E 's|#undef +||g' |
| } | sort -u | grep -v -F 'HEADER_CURL_' | while read -r def; do |
| c="$(git grep -w -F "${def}" | grep -v -E -c '(/libcurl\.tmpl|^lib/config-|^lib/curl_config\.h\.cmake|^CMakeLists\.txt|^CMake/Platforms/WindowsCache\.cmake|^packages/vms/config_h\.com|^m4/curl-functions\.m4|^acinclude\.m4|^configure\.ac)')" |
| if [ "${c}" = '0' ]; then |
| echo "${def}" |
| fi |
| done |
| ``` |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9044 |
| |
| Daniel Stenberg (19 Jul 2022) |
| - RELEASE-NOTES: synced |
| |
| - cookie: treat a blank domain in Set-Cookie: as non-existing |
| |
| This matches what RFC 6265 section 5.2.3 says. |
| |
| Extended test 31 to verify. |
| |
| Fixes #9164 |
| Reported-by: Gwen Shapira |
| Closes #9177 |
| |
| - [Patrick Monnerat brought this change] |
| |
| base64: base64url encoding has no padding |
| |
| See RFC4648 section 5 and RFC7540 section 3.2.1. |
| |
| Suppress generation of '=' padding of base64url encoding. This is |
| accomplished by considering the string beginning at offset 64 in the |
| character table as the padding: this is "=" for base64, "" for base64url. |
| |
| Also use strchr() to replace character search loops where possible. |
| |
| Suppress erroneous comments about empty encoding results. |
| |
| Adjust unit test 1302 to unpadded base64url encoding and add tests for |
| empty results. |
| |
| Closes #9139 |
| |
| - easyoptions: fix icc warning |
| |
| easyoptions.c(360): error #188: enumerated type mixed with another type |
| |
| Ref: #9156 |
| Reported-by: Matthew Thompson |
| Closes #9176 |
| |
| - [lwthiker brought this change] |
| |
| h2h3: fix overriding the 'TE: Trailers' header |
| |
| A 'TE: Trailers' header is explicitly replaced by 'te: trailers' |
| (lowercase) in Curl_pseudo_headers() when building the list of HTTP/2 or |
| HTTP/3 headers. However, this is then replaced again by the original |
| value due to a bug, resulting in the uppercased version being sent. Some |
| HTTP/2 servers reject the whole HTTP/2 stream when this is the case. |
| |
| Closes #9170 |
| |
| - lib3026: reduce the number of threads to 100 |
| |
| Down from 1000, to make it run and work in more systems. |
| |
| Fixes #9172 |
| Reported-by: Ćrico Nogueira Rolim |
| Closes #9173 |
| |
| - doh: move doh related struct definitions to doh.h |
| |
| and make 'dnstype' in 'struct dnsprobe' use the DNStype to fix the icc compiler warning: |
| |
| doh.c(924): error #188: enumerated type mixed with another type |
| |
| Reported-by: Matthew Thompson |
| Ref #9156 |
| Closes #9174 |
| |
| Viktor Szakats (17 Jul 2022) |
| - Makefile.m32: stop trying to build libcares.a [ci skip] |
| |
| Before this patch, `lib/Makefile.m32` had a rule to build `libcares.a` in |
| `-cares`-enabled builds, via c-ares's own `Makefile.m32`. Committed in |
| 2007 [1]. The commit message doesn't specifically address this particular |
| change. This logic comes from the times when c-ares was part of the curl |
| source tree, hence the special treatment. |
| |
| This feature creates problems when building c-ares first, using CMake |
| and pointing `LIBCARES_PATH` to its install prefix, where `Makefile.m32` |
| is missing in such case. A sub-build for c-ares is undesired also when |
| c-ares had already been build via its own `Makefile.m32`. |
| |
| To avoid the sub-build, this patch deletes its Makefile rule. After this |
| patch `libcares.a` needs to be manually built before using it in |
| `Makefile.m32`. Aligning it with the rest of dependencies. |
| |
| [1] 46c92c0b806da041d7a5c6fb64dbcdc474d99b31 |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9169 |
| |
| Daniel Stenberg (17 Jul 2022) |
| - curl: writeout: fix repeated header outputs |
| |
| The function stored a terminating zero into the buffer for convenience, |
| but when on repeated calls that would cause problems. Starting now, the |
| passed in buffer is not modified. |
| |
| Reported-by: highmtworks on github |
| Fixes #9150 |
| Closes #9152 |
| |
| - curl_multi_timeout.3: clarify usage |
| |
| Fixes #9155 |
| Closes #9157 |
| Reported-by: jvvprasad78 on github |
| |
| - mprintf: make dprintf_formatf never return negative |
| |
| This function no longer returns a negative value if the formatting |
| string is bad since the return value would sometimes be propagated as a |
| return code from the mprintf* functions and they are documented to |
| return the length of the output. Which cannot be negative. |
| |
| Fixes #9149 |
| Closes #9151 |
| Reported-by: yiyuaner on github |
| |
| Viktor Szakats (17 Jul 2022) |
| - trace: 0x7F character is non-printable |
| |
| `0x7F` is `DEL`, a non-printable symbol, so print it as |
| `UNPRINTABLE_CHAR`. |
| |
| Reported-by: MasterInQuestion on github |
| Fixes #9162 |
| Closes #9166 |
| |
| - doh: use https protocol by default |
| |
| The only allowed protocol is https, so it makes sense to use that |
| by default if not passed explicitly by the user. |
| |
| Reported-by: MasterInQuestion on github |
| Reviewed-by: Jay Satiro |
| Fixes #9163 |
| Closes #9165 |
| |
| - openssl: fix BoringSSL symbol conflicts with LDAP and Schannel |
| |
| Same issue as here [1], but this time when building curl with BoringSSL |
| for Windows with LDAP(S) or Schannel support enabled. |
| |
| Apply the same fix [2] for these source files as well. |
| |
| This can also be fixed by moving `#include "urldata.h"` _before_ |
| including `winldap.h` and `schnlsp.h` respectively. This seems like |
| a cleaner fix, though I'm not sure why it works and if it has any |
| downside. |
| |
| [1] https://github.com/curl/curl/issues/5669 |
| [2] https://github.com/curl/curl/commit/fbe07c6829ba8c5793c84c2856526e19e9029ab9 |
| |
| Co-authored-by: Jay Satiro |
| Closes #9110 |
| |
| Daniel Stenberg (13 Jul 2022) |
| - asyn-thread: make getaddrinfo_complete return CURLcode |
| |
| ... as the only caller that cares about what it returns assumes that |
| anyway. This caused icc to warn: |
| |
| asyn-thread.c(505): error #188: enumerated type mixed with another type |
| result = getaddrinfo_complete(data); |
| |
| Repoorted-by: Matthew Thompson |
| Bug: https://github.com/curl/curl/issues/9081#issuecomment-1182143076 |
| Closes #9146 |
| |
| - easy_lock: fix build with icc |
| |
| The Intel compiler tries to look like GCC *and* clang *and* it lies in |
| its __has_builtin() function (returns true when it should return false), |
| so override it. |
| |
| Reported-by: Matthew Thompson |
| Fixes #9081 |
| Closes #9144 |
| |
| - configure: fix --disable-headers-api |
| |
| Reported-by: MichaÅ Antoniak |
| Fixes #9134 |
| Closes #9143 |
| |
| - test3026: require 'threadsafe' |
| |
| Reported-by: Sukanya Hanumanthu |
| Fixes #9141 |
| Closes #9142 |
| |
| - [Even Rouault brought this change] |
| |
| CMake: link curl to its dependencies with PRIVATE |
| |
| The current PUBLIC visibility causes issues for downstream users. |
| Cf https://github.com/OSGeo/PROJ/pull/3172#issuecomment-1157942986 |
| |
| Reviewed-by: Jakub Zakrzewski |
| Closes #9125 |
| |
| - [Even Rouault brought this change] |
| |
| CMake: remove APPEND in export(TARGETS) |
| |
| When running cmake several times, new content was appended to already |
| existing generated files, which is not appropriate |
| |
| Reviewed-by: Jakub Zakrzewski |
| Closes #9124 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks |
| |
| Closes #9135 |
| |
| - RELEASE-NOTES: synced |
| |
| Viktor Szakats (11 Jul 2022) |
| - build: improve OS string in CMake and `config-win32.h` |
| |
| This patch makes CMake fill the "OS string" with the value of |
| `CMAKE_C_COMPILER_TARGET`, if passed. This typically contains a triplet, |
| the same we can pass to `./configure` via `--host=`. |
| |
| For non-CMake, non-autotools, Windows builds, this patch adds the ability |
| to override the default `OS` value in `lib/config-win32.h`. |
| |
| With these its possible to get the same OS string across the three build |
| systems. |
| |
| This patch supersedes the earlier, partial, CMake-only solution: |
| 435f395f3f8c11eebfcc243ca55ebcc11a19b8b8, thus retiring the |
| `CURL_OS_SUFFIX` CMake option. |
| |
| Reviewed-by: Jay Satiro |
| Closes #9117 |
| |
| - Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip] |
| |
| They allow to override the hardcoded values for the `windres` and `strip` |
| tools, complementing the existing set of `CURL_{CC,AR,RANLIB}` variables. |
| |
| `CURL_RC` comes handy when using LLVM tools with `CROSSPREFIX=llvm-` and |
| `CURL_CC=clang` set on current latest debian:unstable or earlier, where |
| `llvm-windres` is missing, and a `CURL_RC=<triplet>-windres` fixes it. |
| Hopefully this will be fixed in the llvm package. FWIW `llvm-windres` |
| does exist in Homebrew llvm, MSYS2 llvm and llvm-mingw. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9132 |
| |
| Daniel Stenberg (10 Jul 2022) |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: fix stall or busy loop on STOP_SENDING with upload data |
| |
| Fixes #9122 |
| Closes #9123 |
| |
| - [Xiaoke Wang brought this change] |
| |
| tool_operate: better cleanup of easy handle in exit path |
| |
| Closes #9114 |
| |
| - [Xiaoke Wang brought this change] |
| |
| getinfo: return better error on NULL as first argument |
| |
| Closes #9114 |
| |
| - tool_getparam: repair cleanarg |
| |
| Regression since 9e5669f. |
| |
| Make sure the "cleaning" of command line arguments is done on the |
| original argv[] pointers. As a bonus, it also exits better on out of |
| memory error. |
| |
| Reported-by: Litter White |
| Fixes #9128 |
| Closes #9130 |
| |
| Jay Satiro (10 Jul 2022) |
| - docs: explain curl_easy_escape/unescape curl handle is ignored |
| |
| 26101421 (precedes 7.82.0) removed character conversion support used by |
| very old legacy operating systems and since then the curl handle passed |
| to curl_easy_escape/unescape is always ignored. |
| |
| Bug: https://github.com/curl/curl/discussions/9115 |
| Reported-by: Ted Lyngmo |
| |
| Closes https://github.com/curl/curl/pull/9121 |
| |
| Viktor Szakats (8 Jul 2022) |
| - openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL |
| |
| BoringSSL doesn't keep a version number, and doesn't self-identify itself |
| via any other revision number via its own headers. We can identify |
| BoringSSL revisions by their commit hash. This hash is typically known by |
| the builder. This patch adds a way to pass this hash to libcurl, so that |
| it can display in the curl version string: |
| |
| For example: |
| |
| `CFLAGS=-DCURL_BORINGSSL_VERSION="c239ffd0"` |
| |
| ``` |
| curl 7.84.0 (x86_64-w64-mingw32) libcurl/7.84.0 BoringSSL/c239ffd0 (Schannel) zlib/1.2.12 [...] |
| Release-Date: 2022-06-27 |
| Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 [...] |
| Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos [...] |
| ``` |
| |
| The setting is optional, and if not passed, BoringSSL will appear without |
| a version number, like before this patch. |
| |
| Closes #9113 |
| |
| Jay Satiro (8 Jul 2022) |
| - escape: remove outdated comment |
| |
| Bug: https://github.com/curl/curl/discussions/9115 |
| Reported-by: Ted Lyngmo |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: Fix missing initialization of nghttp3_nv.flags |
| |
| Closes https://github.com/curl/curl/pull/9118 |
| |
| Daniel Stenberg (6 Jul 2022) |
| - [Brad Forschinger brought this change] |
| |
| netrc.d: remove spurious quote |
| |
| Closes #9111 |
| |
| Viktor Szakats (6 Jul 2022) |
| - Makefile.m32: add `NGTCP2_LIBS` option [ci skip] |
| |
| Makefile.m32's ngtcp2 has its two libs hardwired for OpenSSL. |
| Add `NGTCP2_LIBS` envvar to override them with a custom list, |
| making it possible to use BoringSSL, or any other backend. |
| |
| Closes #9109 |
| |
| Jay Satiro (6 Jul 2022) |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| digest: fix missing increment of 'nc' value for auth-int |
| |
| - Increment nc regardless of qop type. |
| |
| Prior to this change nc was only incremented for qop type auth even |
| though libcurl sends nc with any qop. |
| |
| Closes https://github.com/curl/curl/pull/9090 |
| |
| Daniel Stenberg (5 Jul 2022) |
| - RELEASE-NOTES: synced |
| |
| Bumped to 7.85.0 |
| |
| - urldata: reduce size of four ftp related members |
| |
| ftp_filemethod, ftpsslauth and ftp_ccc are now uchars |
| |
| accepttimeout is now unsigned int - almost 50 days ought to be enough |
| for this value. |
| |
| Closes #9106 |
| |
| - urldata: reduce three type-members from int to uchar |
| |
| - timecondition |
| - proxytype |
| - method |
| |
| ... previously used their enum type in the struct, which made them |
| unnecesarily large. |
| |
| Closes #9105 |
| |
| - CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name |
| |
| Starting now, CURLOPT_FTP_RESPONSE_TIMEOUT is the alias instead of the |
| other way around. |
| |
| Since 7.20.0, CURLOPT_SERVER_RESPONSE_TIMEOUT has existed as an alias |
| but since the option is for more protocols than FTP the more "correct" |
| version of the option is the "server" one so now we switch. |
| |
| Closes #9104 |
| |
| - urldata: make 'ftp_create_missing_dirs' a uchar |
| |
| It only ever holds the values 0-2. |
| |
| Closes #9103 |
| |
| - [Don J Olmstead brought this change] |
| |
| cmake: support ngtcp2 boringssl backend |
| |
| Update the ngtcp2 find module to detect the boringssl backend. Determine |
| if the underlying OpenSSL implementation is BoringSSL and if so use that |
| as the ngtcp2 backend. |
| |
| Reviewed-by: Jakub Zakrzewski |
| Closes #9065 |
| |
| - urldata: change 4 timeouts to unsigned int from long |
| |
| They're not used for that long times anyway, 32 bit milliseconds is long |
| enough. |
| |
| Closes #9101 |
| |
| - urldata: make 'use_netrc' a uchar |
| |
| Closes #9102 |
| |
| - urldata: make 'buffer_size' an unsigned int |
| |
| It is already capped at READBUFFER_MAX which fits easily in 32 bits. |
| |
| Closes #9098 |
| |
| - urldata: remove the unused 'rtspversion' struct member |
| |
| Closes #9100 |
| |
| - urldata: make 'use_port' an usigned short |
| |
| ... instead of a long. It is already enforced to not attempt to set any |
| value outside of 16 bits unsigned. |
| |
| Closes #9099 |
| |
| - urldata: store dns cache timeout in an int |
| |
| 68 years ought to be enough for most. |
| |
| Closes #9097 |
| |
| - curl: proto2num: make sure obuf is inited |
| |
| Detected by Coverity. CID 1507052. |
| |
| Closes #9096 |
| |
| - cookie: use %zu to infof() for size_t values |
| |
| Detected by Coverity. CID 1507051 |
| Closes #9095 |
| |
| Viktor Szakats (4 Jul 2022) |
| - makefile.m32: add support for custom ARCH [ci skip] |
| |
| When building curl for target platform other than x64 and x86, it is now |
| possible to pass `ARCH=custom`, that will omit all hardcoded logic for |
| setting up CFLAGS/LDFLAGS/RCFLAGS for these platforms, and let these be |
| customized via `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, and a newly |
| added one for the resource compiler: `CURL_RCFLAG_EXTRAS`. |
| |
| This makes it possible to use `makefile.m32` to build for ARM64 for |
| example. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9092 |
| |
| - cmake: do not force Windows target versions |
| |
| The goal of this patch is to avoid CMake forcing specific Windows |
| versions and rely on toolchain defaults or manual selection instead. |
| This gives back control to the user. This also brings CMake closer to |
| how autotools and `Makefile.m32` behaves in this regard. |
| |
| - CMake had a setting `ENABLE_INET_PTON` defaulting to `ON`, which did |
| nothing else than fixing the Windows build target to Vista. This also |
| happened when the toolchain did not have Vista support (e.g. original |
| MinGW), breaking such builds. |
| |
| In other environments it did not make a user-facing difference, |
| because libcurl has its own pton() implementation, so it works well |
| with or without Vista's inet_pton(). |
| |
| This patch drops this setting. inet_pton() is now used whenever |
| building for Vista or newer, either when requested manually or by |
| default with modern toolchains (e.g. mingw-w64). Older envs will fall |
| back to curl's pton(). |
| |
| Ref: https://github.com/curl/curl/pull/9027#issuecomment-1164157604 |
| Ref: https://github.com/curl/curl/pull/8997#issuecomment-1164344155 |
| |
| - When the user did no select a Windows target version manually, stop |
| explicitly targeting Windows XP, and instead use the toolchain default. |
| |
| This may pose an issue with old toolchains defaulting to pre-XP |
| targets. In such case you must manually target Windows XP via: |
| `-DCURL_TARGET_WINDOWS_VERSION=0x0501` |
| or |
| `-DCMAKE_C_FLAGS=-D_WIN32_WINNT=0x0501` |
| |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Marcel Raad |
| Closes #9046 |
| |
| - windows: improve random source |
| |
| - Use the Windows API to seed the fallback random generator. |
| |
| This ensures to always have a random seed, even when libcurl is built |
| with a vtls backend lacking a random generator API, such as rustls |
| (experimental), GSKit and certain mbedTLS builds, or, when libcurl is |
| built without a TLS backend. We reuse the Windows-specific random |
| function from the Schannel backend. |
| |
| - Implement support for `BCryptGenRandom()` [1] on Windows, as a |
| replacement for the deprecated `CryptGenRandom()` [2] function. |
| |
| It is used as the secure random generator for Schannel, and also to |
| provide entropy for libcurl's fallback random generator. The new |
| function is supported on Vista and newer via its `bcrypt.dll`. It is |
| used automatically when building for supported versions. It also works |
| in UWP apps (the old function did not). |
| |
| - Clear entropy buffer before calling the Windows random generator. |
| |
| This avoids using arbitrary application memory as entropy (with |
| `CryptGenRandom()`) and makes sure to return in a predictable state |
| when an API call fails. |
| |
| [1] https://docs.microsoft.com/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom |
| [2] https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom |
| |
| Closes #9027 |
| |
| Daniel Stenberg (4 Jul 2022) |
| - setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR |
| |
| ... as replacements for deprecated CURLOPT_PROTOCOLS and |
| CURLOPT_REDIR_PROTOCOLS as these new ones do not risk running into the |
| 32 bit limit the old ones are facing. |
| |
| CURLINFO_PROTCOOL is now deprecated. |
| |
| The curl tool is updated to use the new options. |
| |
| Added test 1597 to verify the libcurl protocol parser. |
| |
| Closes #8992 |
| |
| - digest: simplify a switch() to a simple if |
| |
| - digest: provide a special bit for "sess" algos |
| |
| Also shortened the names and moved them to the .c file since they are |
| private for this source file only. Also made them #defines instead of |
| enum. |
| |
| Closes #9079 |
| |
| Jay Satiro (4 Jul 2022) |
| - [Thomas WeiĆschuh brought this change] |
| |
| select: do not return fatal error on EINTR from poll() |
| |
| The same was done for select() in 5912da25 but poll() was missed. |
| |
| Bug: https://bugs.archlinux.org/task/75201 |
| Reported-by: Alexandre Bury (gyscos at archlinux) |
| |
| Ref: https://github.com/curl/curl/issues/8921 |
| Ref: https://github.com/curl/curl/pull/8961 |
| Ref: https://github.com/curl/curl/commit/5912da25#r77584294 |
| |
| Closes https://github.com/curl/curl/pull/9091 |
| |
| - [Kai Pastor brought this change] |
| |
| cmake: fix build for mingw cross compile |
| |
| - Change normaliz lib name to all lowercase. |
| |
| This is from a standing patch in vcpkg: |
| Mingw has libnormaliz.a. For case-sensitive file systems (e.g. cross |
| builds from Linux), the spelling must match exactly. |
| |
| Closes https://github.com/curl/curl/pull/9084 |
| |
| - easy_lock: fix build for mingw |
| |
| - Define SRWLOCK symbols missing in some mingw environments. |
| |
| Closes https://github.com/curl/curl/pull/8997 |
| |
| Daniel Stenberg (2 Jul 2022) |
| - tool_progress: avoid division by zero in parallel progress meter |
| |
| Reported-by: Brian Carpenter |
| Fixes #9082 |
| Closes #9083 |
| |
| - http_aws_sigv4.c: remove two unusued includes |
| |
| Closes #9080 |
| |
| - .mailmap: additional edit |
| |
| Follow-up to 861e2a8aca6c7 so that Evgeny appears with the same in git |
| logs even when using old email. |
| |
| - RELEASE-NOTES: synced |
| |
| bumped to 7.84.1 |
| |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| .mailmap: updated |
| |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| THANKS: merged two entries for Evgeny Grin |
| |
| Also updated THANKS-filter file |
| |
| Closes #9076 |
| |
| - [Jilayne Lovejoy brought this change] |
| |
| lib/curl_path.c: add ISC to license expression |
| |
| THe text of the ISC license is in this file, so the SPDX license |
| expression should be updated |
| |
| Closes #9073 |
| |
| - [Sean McArthur brought this change] |
| |
| hyper: use wakers for curl pause/resume |
| |
| Closes #9070 |
| |
| Viktor Szakats (30 Jun 2022) |
| - Makefile.m32: do not set the libcurl.rc debug flag [ci skip] |
| |
| Delete `-DDEBUGBUILD=0` windres option. This was likely meant to |
| disable VS_FF_DEBUG in FILEFLAGS, but any assigned value enabled |
| it instead. Delete this unnecessary option and thus sync up with |
| how CMake compiles libcurl.rc by default. |
| |
| Reviewed-by: Jay Satiro |
| Closes #9069 |
| |
| Daniel Stenberg (29 Jun 2022) |
| - curl.h: CURLE_CONV_FAILED is obsoleted |
| |
| The last use was removed in 7.82.0. Updated some docs too to reflect the |
| current error code situation. |
| |
| Closes #9067 |
| |
| - curl: output warning when a cookie is dropped due to size |
| |
| Dropped from the request, that is. |
| |
| Closes #9064 |
| |
| - curl_mime_data.3: polish the wording |
| |
| Closes #9063 |
| |
| - configure: check for the stdatomic.h header in configure |
| |
| ... and only set HAVE_ATOMIC if that header exists since we use |
| typedefes set in it. |
| |
| Reported-by: Ryan Schmidt |
| Fixes #9059 |
| Closes #9060 |
| |
| - easy_lock: fix the #ifdef conditional for ia32_pause |
| |
| To work better with new and old clang compilers. |
| |
| Reported-by: Ryan Schmidt |
| Assisted-by: Joshua Root |
| |
| Fixes #9058 |
| Closes #9062 |
| |
| - easy_lock: switch to using atomic_int instead of bool |
| |
| To work with more compilers without requiring separate libs to |
| link. Like with gcc-12 for RISC-V on Linux. |
| |
| Reported-by: Adam Sampson |
| Fixes #9055 |
| Closes #9061 |
| |
| - [vvb2060 brought this change] |
| |
| ngtcp2: fix incompatible function pointer types |
| |
| Closes #9056 |
| |
| - [vvb2060 brought this change] |
| |
| easy_lock.h: use __asm__ instead of asm to fix build |
| |
| Closes #9056 |
| |
| - [Samuel Henrique brought this change] |
| |
| libcurl-security.3: fix typo on macro "SH_" |
| |
| During the packaging of the latest curl release for Debian, Lintian |
| warned me about a typo which causes the section name "Secrets in memory" |
| to not be rendered in the manpage due to "SH_" not being recognized as a |
| header. |
| |
| Closes #9057 |
| |
| - easy_lock.h: include sched.h if available to fix build |
| |
| Patched-by: Harry Sintonen |
| |
| Closes #9054 |
| |
| Version 7.84.0 (27 Jun 2022) |
| |
| Daniel Stenberg (27 Jun 2022) |
| - RELEASE-NOTES: synced |
| |
| Version 7.84.0 release |
| |
| - THANKS: contributors from 7.84.0 release notes |
| |
| - hsts: use Curl_fopen() |
| |
| - altsvc: use Curl_fopen() |
| |
| - fopen: add Curl_fopen() for better overwriting of files |
| |
| Bug: https://curl.se/docs/CVE-2022-32207.html |
| CVE-2022-32207 |
| Reported-by: Harry Sintonen |
| Closes #9050 |
| |
| - test444: test many received Set-Cookie: |
| |
| The amount of sent cookies in the test is limited to 80 because hyper |
| has its own strict limits in how many headers it allows to be received |
| which triggers at some point beyond this number. |
| |
| - test442/443: test cookie caps |
| |
| 442 - verify that only 150 cookies are sent |
| 443 - verify that the cookie: header remains less than 8K in size |
| |
| - cookie: apply limits |
| |
| - Send no more than 150 cookies per request |
| - Cap the max length used for a cookie: header to 8K |
| - Cap the max number of received Set-Cookie: headers to 50 |
| |
| Bug: https://curl.se/docs/CVE-2022-32205.html |
| CVE-2022-32205 |
| Reported-by: Harry Sintonen |
| Closes #9048 |
| |
| - test387: verify rejection of compression chain attack |
| |
| - content_encoding: return error on too many compression steps |
| |
| The max allowed steps is arbitrarily set to 5. |
| |
| Bug: https://curl.se/docs/CVE-2022-32206.html |
| CVE-2022-32206 |
| Reported-by: Harry Sintonen |
| Closes #9049 |
| |
| - krb5: return error properly on decode errors |
| |
| Bug: https://curl.se/docs/CVE-2022-32208.html |
| CVE-2022-32208 |
| Reported-by: Harry Sintonen |
| Closes #9051 |
| |
| - easy_lock.h: remove use of the deprecated ATOMIC_VAR_INIT macro |
| |
| clang 14 warns about its use. It is being deprecated by the working |
| group for the programming language C: "The macro ATOMIC_VAR_INIT is |
| basically useless for the purpose for which it was designed" |
| |
| Ref: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2886.htm |
| |
| Reported-by: Tatsuhiro Tsujikawa |
| Fixes #9041 |
| Closes #9042 |
| |
| - [Stefan Eissing brought this change] |
| |
| ngtcp2: avoid supplying 0 length `msg_control` to sendmsg() |
| |
| Testing on macOS 12.4, sendmsg() fails with EINVAL when a msg_control |
| buffer is provided in sengmsg(), even though msg_controllen was set to |
| 0. |
| |
| Initialize msg.msg_controllen just as needed and also perform the size |
| assertion only when needed. |
| |
| Closes #9039 |
| |
| - [Tom Eccles brought this change] |
| |
| ftp: restore protocol state after http proxy CONNECT |
| |
| connect_init() (lib/http_proxy.c) swaps out the protocol state while |
| working on the proxy connection, this is then restored by |
| Curl_connect_done() after the connection completes. |
| |
| ftp_do_more() extracted the protocol state pointer to a local variable |
| at the start of the function then calls Curl_proxy_connect(). If the proxy |
| connection completes, Curl_proxy_connect() will call Curl_connect_done() |
| (via Curl_proxyCONNECT()), which restores data->req.p to point to the ftp |
| protocol state instead of the http proxy protocol state, but the local |
| variable in ftp_do_more still pointed to the old value. |
| |
| Ultimately this meant that the state worked on by ftp_do_more() was the |
| http proxy state not the ftp state initialised by ftp_connect(), but |
| subsequent calls to any ftp_ function would use the original state. |
| |
| For my use-case, the visible consequence was that ftp->downloadsize was |
| never set and so downloaded data was never returned to the application. |
| |
| This commit updates the ftp protocol state pointer in ftp_do_more() after |
| Curl_proxy_connect() returns, ensuring that the correct state pointer is |
| used. |
| |
| Fixes #8737 |
| Closes #9043 |
| |
| Jay Satiro (23 Jun 2022) |
| - THANKS: add contributor missing from aea8ac1 |
| |
| aea8ac1 fixed #8980 which was reported by Sgharat on github, but that |
| info was not included in the commit message. |
| |
| - curl_setup: include _mingw.h |
| |
| Prior to this change _mingw.h needed to be included in each unit before |
| evaluating __MINGW{32,64}_xxx_VERSION macros since it defines them. It |
| is included only in some mingw headers (eg stdio.h) and not others |
| (eg windows.h) so it's better to explicitly include it once. |
| |
| Closes https://github.com/curl/curl/pull/9036 |
| |
| Viktor Szakats (22 Jun 2022) |
| - rand: stop detecting /dev/urandom in cross-builds |
| |
| - Prevent CMake to auto-detect /dev/urandom when cross-building. |
| Before this patch, it would detect it in a cross-build scenario on *nix |
| hosts with this device present. This was a problem for example with |
| Windows builds, but it could affect any target system with this device |
| missing. This also syncs detection behaviour with autotools, which also |
| skips it for cross-builds. |
| - Also, make sure to never use the file RANDOM_FILE as entropy for libcurl's |
| fallback random number generator on Windows. Windows does not have the |
| concept of reading a random stream from a filename, nor any guaranteed |
| non-world-writable path on disk. With this, a manual misconfiguration or |
| an overeager auto-detection can no longer result in a user-controllable |
| seed source. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #9038 |
| |
| Daniel Stenberg (22 Jun 2022) |
| - [Emanuele Torre brought this change] |
| |
| ci: avoid `cmake -Hpath` |
| |
| This is an undocumented option similar to the `-Spath' option introduced |
| in cmake 3.13. |
| Replace all instances of `-Hpath' with `-Spath' in macos workflow. |
| Replace `-H. -Bpath' with `mkdir path; cd ./path; cmake ..' in zuul |
| scripts since it runs an older version of cmake. |
| |
| Fixes #9008 |
| Closes #9014 |
| |
| - INTERNALS: bring back the "Library symbols" section |
| |
| Most contents was moved, but this text should remain here. |
| |
| Follow-up to: d324ac8 |
| Reported-by: Viktor Szakats |
| Bug: https://github.com/curl/curl/pull/9027#discussion_r903382326 |
| Closes #9037 |
| |
| Viktor Szakats (22 Jun 2022) |
| - Makefile.m32: stop forcing XP target with ipv6 enabled [ci skip] |
| |
| Since this [1] commit in 2011, `_WIN32_WINNT` was set fixed to Windows |
| XP when the `-ipv6` option is selected. Maybe this was added to support |
| pre-XP Windows versions (?). These days libcurl builds fine for both XP |
| and post-XP versions with IPv6 support enabled. The relevance of pre-XP |
| version is also low by now. Other build methods also do not impose such |
| limitation for a similar configuration. So, drop this hard-wired |
| `_WIN32_WINNT` limit from `Makefile.m32`, thus building for the default |
| Windows version set by the compiler. This is Vista for recent MinGW |
| versions. |
| |
| Old behaviour can be restored by setting this envvar: |
| export CURL_CFLAG_EXTRAS=-D_WIN32_WINNT=0x0501 |
| |
| [1] 98a61d8e2e8982786aaf3916cbbcac96838316e7 |
| |
| Closes #9035 |
| |
| Daniel Stenberg (21 Jun 2022) |
| - CONTRIBUTE: mention how we maintain REUSE compliance |
| |
| for copyright and license information of all files stored in git |
| |
| Closes #9032 |
| |
| - CURLOPT_ALTSVC.3: document the file format |
| |
| Closes #9033 |
| |
| Jay Satiro (21 Jun 2022) |
| - runtests: add "threadsafe" to detected features |
| |
| Follow-up to recent commits which added thread-safety support. |
| |
| Bug: https://github.com/curl/curl/pull/9012#discussion_r902018782 |
| Reported-by: Marc Hƶrsken |
| |
| Closes https://github.com/curl/curl/pull/9030 |
| |
| Daniel Stenberg (20 Jun 2022) |
| - easy: remove dead code |
| |
| Follow-up from 5912da253b64d |
| |
| Detected by Coverity (CID 1506519) |
| |
| Closes #9029 |
| |
| - [Glenn Strauss brought this change] |
| |
| transfer: upload performance; avoid tiny send |
| |
| Append to the upload buffer when only small amount remains in buffer |
| rather than performing a separate tiny send to empty buffer. |
| |
| Avoid degenerative upload behavior which might cause curl to send mostly |
| 1-byte DATA frames after exhausing the h2 send window size |
| |
| Related discussion: https://github.com/nghttp2/nghttp2/issues/1722 |
| |
| Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com> |
| Closes #8965 |
| |
| - [Steve Holme brought this change] |
| |
| projects: fix third-party SSL library build paths for Visual Studio |
| |
| The paths used by the build batch files were inconsistent with those in |
| the Visual Studio project files. |
| |
| Closes #8991 |
| |
| - [Pierrick Charron brought this change] |
| |
| urlapi: make curl_url_set(url, CURLUPART_URL, NULL, 0) clear all parts |
| |
| As per the documentation : |
| |
| > Setting a part to a NULL pointer will effectively remove that |
| > part's contents from the CURLU handle. |
| |
| But currently clearing CURLUPART_URL does nothing and returns |
| CURLUE_OK. This change will clear all parts of the URL at once. |
| |
| Closes #9028 |
| |
| - [Philip Heiduck brought this change] |
| |
| CI: bump FreeBSD 13.0 to 13.1 |
| |
| Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> |
| Closes #8815 |
| |
| - RELEASE-NOTES: synced |
| |
| and updated release date in RELEASE-PROCEDURE.md |
| |
| - [divinity76 brought this change] |
| |
| CURLOPT_HTTPHEADER.3: improve comment in example |
| |
| Closes #9025 |
| |
| Marc Hoersken (16 Jun 2022) |
| - CI/azure: reduce flakiness by retrying install/prepare steps |
| |
| Closes #9010 |
| |
| - CI/cirrus: align Windows timeout with Azure CI at 120 minutes |
| |
| Closes #9009 |
| |
| Jay Satiro (16 Jun 2022) |
| - vtls: make curl_global_sslset thread-safe |
| |
| .. and update some docs to explain curl_global_* is now thread-safe. |
| |
| Follow-up to 23af112 which made curl_global_init/cleanup thread-safe. |
| |
| Closes https://github.com/curl/curl/pull/9016 |
| |
| - curl_easy_pause.3: remove explanation of progress function |
| |
| - Remove misleading text that says progress function "gets called at |
| least once per second, even if the connection is paused." |
| |
| The progress function behavior is more nuanced and the user is better |
| served reading the progress function doc rather than attempt to explain |
| it in the curl_easy_pause doc. |
| |
| The progress function can only be called at least once per second if an |
| appropriate multi transfer function is called (eg curl_multi_perform) in |
| that time. For a paused transfer there may not be such a call. Rather |
| than explain this in detail in the curl_easy_pause doc, rely on the user |
| reading the CURLOPT_PROGRESSFUNCTION doc. |
| |
| Ref: https://github.com/curl/curl/issues/8983 |
| |
| Closes https://github.com/curl/curl/pull/9015 |
| |
| Daniel Stenberg (15 Jun 2022) |
| - libssh: skip the fake-close when libssh does the right thing |
| |
| Starting in libssh 0.10.0 ssh_disconnect() will no longer close our |
| socket. Instead it will be kept alive as we want it, and it is our |
| responsibility to close it later. |
| |
| Ref: #8718 |
| Ref: https://gitlab.com/libssh/libssh-mirror/-/merge_requests/240 |
| Closes #9021 |
| |
| - configure: warn about rustls being experimental |
| |
| Right now a dozen test cases are disabled because they don't work with |
| rustls. |
| |
| Closes #9019 |
| |
| - runtests: skip starting the ssh server if user name is lacking |
| |
| Because the ssh server startup script *requires* a user name there's no |
| point in invoking it if no name was found. |
| |
| Reported-by: Ricardo M. Correia |
| Ref: #9007 |
| Closes #9013 |
| |
| - copyright.pl: parse and use .reuse/dep5 for skips |
| |
| Also scan skipped files to be able to find superfluous ignores, shown with -v. |
| |
| Closes #9006 |
| |
| - reuse/dep5: adjusted to parse better |
| |
| ... adjusted a few files to contain copyright and license info. |
| |
| Closes #9006 |
| |
| - buildconf.bat: update copyright year range |
| |
| Closes #9006 |
| |
| - README.md: use the common "Copyright" style formatting |
| |
| Closes #9006 |
| |
| - reuse: move license info from .mailmap.license to .reuse/dep5 |
| |
| Closes #9006 |
| |
| - README.md: add a REUSE badge |
| |
| Closes #9004 |
| |
| - .reuse/dep5: remove recursive docs ignore, only skip markdown files |
| |
| ... and some additional non-markdown individual files in docs/ |
| |
| Closes #9005 |
| |
| - docs/cmdline-opts: add copyright and license identifier to each file |
| |
| gen.pl now insists on C: and SPDX-License-Identifier: fields to be |
| present in all files. |
| |
| Closes #9002 |
| |
| - copyright: info for/ignore .github/ISSUE_TEMPLATE/bug_report.md |
| |
| Follow-up from 448f7ef9ab2afb7. The adding of the copyright text in that |
| file broke site functionality. |
| |
| Closes #9001 |
| |
| - bug_report.md: revert the REUSE template to see if it works again |
| |
| Viktor Szakats (13 Jun 2022) |
| - version: rename threadsafe-init to threadsafe |
| |
| Referring to Daniel's article [1], making the init function thread-safe |
| was the last bit to make libcurl thread-safe as a whole. So the name of |
| the feature may as well be the more concise 'threadsafe', also telling |
| the story that libcurl is now fully thread-safe, not just its init |
| function. Chances are high that libcurl wants to remain so in the |
| future, so there is little likelihood of ever needing any other distinct |
| `threadsafe-<name>` feature flags. |
| |
| For consistency we also shorten `CURL_VERSION_THREADSAFE_INIT` to |
| `CURL_VERSION_THREADSAFE`, update its description and reference libcurl's |
| thread safety documentation. |
| |
| [1]: https://daniel.haxx.se/blog/2022/06/08/making-libcurl-init-more-thread-safe/ |
| |
| Reviewed-by: Daniel Stenberg |
| Reviewed-by: Jay Satiro |
| Closes #8989 |
| |
| Daniel Stenberg (13 Jun 2022) |
| - test3026: disable on win32 |
| |
| ... as it's not likely to have working pthreads |
| |
| Closes #8996 |
| |
| - GHA: shorten the reuse CI job name |
| |
| "REUSE compliance / check" should be good enough |
| |
| Closes #9000 |
| |
| - misc: add missing SPDX-License-Identifier info |
| |
| For some reason the REUSE CI job did not find these. |
| |
| Closes #8999 |
| |
| - copyright: verify SPDX-License-Identifier presence as well |
| |
| - easy_lock: add SPDX license identifier |
| |
| Closes #8998 |
| |
| - mailmap: Max Mehl |
| |
| - [Max Mehl brought this change] |
| |
| git: ignore large commit making the curl REUSE compliant |
| |
| - [Max Mehl brought this change] |
| |
| copyright: make repository REUSE compliant |
| |
| Add licensing and copyright information for all files in this repository. This |
| either happens in the file itself as a comment header or in the file |
| `.reuse/dep5`. |
| |
| This commit also adds a Github workflow to check pull requests and adapts |
| copyright.pl to the changes. |
| |
| Closes #8869 |
| |
| - curl_url_set.3: clarify by default using known schemes only |
| |
| Closes #8994 |
| |
| - scripts/copyright.pl: ignore leading spaces |
| |
| Viktor Szakats (10 Jun 2022) |
| - ngtcp2: fix typo in preprocessor condition |
| |
| Ref: 927ede7edcb7b05b8e8bbf9ced6aed523ae594a7 |
| |
| Bug: https://github.com/curl/curl/pull/8981#discussion_r894312185 |
| Reported-by: Emil Engler |
| Closes #8987 |
| |
| Daniel Stenberg (10 Jun 2022) |
| - RELEASE-NOTES: synced |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: build without sendmsg |
| |
| Closes #8981 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: use handshake helper funcs to simplify TLS handshake integration |
| |
| Closes #8968 |
| |
| - test390: verify --parallel |
| |
| Closes #8985 |
| |
| - test1543: verify CURLINFO_EFFECTIVE_URL with CURLOPT_CURLU set |
| |
| Triggered by a bug report from Adam Light: |
| https://curl.se/mail/lib-2022-06/0013.html - which ended up being mostly |
| a misunderstanding of how CURLINFO_EFFECTIVE_URL works. |
| |
| Closes #8971 |
| |
| - url: URL encode the path when extracted, if spaces were set |
| |
| - urlapi: support CURLU_URLENCODE for curl_url_get() |
| |
| - server/sws: support spaces in the HTTP request path |
| |
| - tests/getpart: fix getpartattr to work with "data" and "data2" |
| |
| - select: return error from "lethal" poll/select errors |
| |
| Adds two new error codes: CURLE_UNRECOVERABLE_POLL and |
| CURLM_UNRECOVERABLE_POLL one each for the easy and the multi interfaces. |
| |
| Reported-by: Harry Sintonen |
| Fixes #8921 |
| Closes #8961 |
| |
| - test3026: add missing control file |
| |
| Follow-up from 2ed101256414ea5 |
| |
| Makes the test run, makes 'make dist' work |
| |
| This single test takes 24-25 seconds on my machine (with valgrind). For |
| this reason I tag it with a "slow" keyword. |
| |
| Closes #8976 |
| |
| - runtests: fix skipping tests not done event-based |
| |
| ... and call timestampskippedevents() to avoid the flood of |
| uninitialized variable warnings. |
| |
| Closes #8977 |
| |
| - transfer: maintain --path-as-is after redirects |
| |
| Reported-by: Marcus T |
| Fixes #8974 |
| Closes #8975 |
| |
| - test391: verify --path-as-is with redirect |
| |
| Jay Satiro (8 Jun 2022) |
| - curl_global_init.3: Separate the Windows loader lock warning |
| |
| This is a slight correction of the parent commit which implied the |
| loader lock warning only applied if not thread-safe. In fact the loader |
| lock warning applies either way. |
| |
| Ref: https://github.com/curl/curl/pull/8972#discussion_r891987030 |
| |
| Daniel Stenberg (8 Jun 2022) |
| - curl_global_init.3: this is now (usually) thread-safe |
| |
| Follow-up to 23af112f5556 |
| |
| Closes #8972 |
| |
| Jay Satiro (8 Jun 2022) |
| - [Haxatron brought this change] |
| |
| libcurl-security.3: Document CRLF header injection |
| |
| - Document that user input to header options is not sanitized, which |
| could result in CRLF used to modify the request in a way other than |
| what was intended. |
| |
| Ref: https://hackerone.com/reports/1589877 |
| Ref: https://medium.com/@tomnomnom/crlf-injection-into-phps-curl-options-e2e0d7cfe545 |
| |
| Closes https://github.com/curl/curl/pull/8964 |
| |
| - CURLOPT_RANGE.3: remove ranged upload advice |
| |
| The e-mail link in the advice contains instructions that are prone to |
| error. We need an example that works and can demonstrate how to properly |
| perform a ranged upload, and then we can refer to that example instead. |
| |
| Bug: https://github.com/curl/curl/issues/8969 |
| Reported-by: Simon Berger |
| |
| Closes https://github.com/curl/curl/pull/8970 |
| |
| Daniel Stenberg (7 Jun 2022) |
| - [Thomas Guillem brought this change] |
| |
| curl_version_info: add CURL_VERSION_THREADSAFE_INIT |
| |
| This flag can be used to make sure that curl_global_init() is |
| thread-safe. |
| |
| This can be useful for libraries that can't control what other |
| dependencies are doing with Curl. |
| |
| Closes #8680 |
| |
| - [Thomas Guillem brought this change] |
| |
| lib: make curl_global_init() threadsafe when possible |
| |
| Use a posix pthread or a Windows SRWLOCK to lock curl_global_init*() and |
| curl_global_cleanup(). |
| |
| Closes #8680 |
| |
| - RELEASE-NOTES: synced |
| |
| - [Fabian Keil brought this change] |
| |
| test414: add the '--resolve' keyword |
| |
| ... so the test can be automatically skipped when |
| using an external proxy like Privoxy. |
| |
| Closes #8959 |
| |
| - [Fabian Keil brought this change] |
| |
| test{440,441,493,977}: add "HTTP proxy" keywords |
| |
| ... so the tests can be automatically skipped when |
| using an external proxy like Privoxy. |
| |
| Closes #8959 |
| |
| - [Fabian Keil brought this change] |
| |
| runtests.pl: add the --repeat parameter to the --help output |
| |
| Closes #8959 |
| |
| - [Fabian Keil brought this change] |
| |
| test 2081: add a valid reply for the second request |
| |
| ... so the test works when using a HTTP proxy like |
| Privoxy that sends an error message if the server |
| doesn't send data. |
| |
| Closes #8959 |
| |
| - [Fabian Keil brought this change] |
| |
| test 675: add missing CR so the test passes when run through Privoxy |
| |
| Closes #8959 |
| |
| - ftp: when failing to do a secure GSSAPI login, fail hard |
| |
| ... instead of switching to cleartext. For the sake of security. |
| |
| Reported-by: Harry Sintonen |
| Bug: https://hackerone.com/reports/1590102 |
| Closes #8963 |
| |
| - http2: reject overly many push-promise headers |
| |
| Getting more than a thousand of them is rather a sign of some kind of |
| attack. |
| |
| Reported-by: Harry Sintonen |
| Bug: https://hackerone.com/reports/1589847 |
| Closes #8962 |
| |
| - [Fabian Keil brought this change] |
| |
| misc: spelling improvements |
| |
| Closes #8956 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: fix assertion failure on EMSGSIZE |
| |
| Closes #8958 |
| |
| - easy/transfer: fix cookie-disabled build |
| |
| Follow-up from 45de940cebf6a |
| Reported-by: Marcel Raad |
| Fixes #8953 |
| Closes #8954 |
| |
| - examples/crawler.c: use the curl license |
| |
| With permission from Jeroen Ooms |
| |
| URL: https://github.com/curl/curl/pull/8869#issuecomment-1144742731 |
| Closes #8950 |
| |
| - speed-limit/time.d: mention these affect transfers in either direction |
| |
| Reported-by: Ladar Levison |
| Fixes #8948 |
| Closes #8951 |
| |
| - scripts/copyright.pl: fix the exclusion to not ignore man pages |
| |
| Ref: #8869 |
| Closes #8952 |
| |
| - examples: remove fopen.c and rtsp.c |
| |
| To simplify the license situation, as they were the only files in the |
| source tree using these specific BSD-3 clause licenses. |
| |
| For an fopen style API, we recommend instead going |
| https://github.com/curl/fcurl |
| |
| Ref: #8869 |
| Closes #8949 |
| |
| - [Wolf Vollprecht brought this change] |
| |
| netrc: check %USERPROFILE% as well on Windows |
| |
| Closes #8855 |
| |
| - CURLOPT_SSH_HOSTKEYDATA/FUNCTION.3: minor polish |
| |
| - [michael musset brought this change] |
| |
| libssh2: add CURLOPT_SSH_HOSTKEYFUNCTION |
| |
| The callback set by CURLOPT_SSH_HOSTKEYFUNCTION is called to check |
| wether or not the connection should continue. |
| |
| The host key is passed in argument with a custom handle for the |
| application. |
| |
| It overrides CURLOPT_SSH_KNOWNHOSTS |
| |
| Closes #7959 |
| |
| - docs/CONTRIBUTE.md: document the 'needs-votes' concept |
| |
| A pull request sent to the project might get labeled `needs-votes` by a |
| project maintainer. This label means that in addition to meeting all |
| other checks and qualifications this pull request must also receive |
| proven support/thumbs-ups from more community members to be considered |
| for merging. |
| |
| Closes #8910 |
| |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| digest: tolerate missing "realm" |
| |
| Server headers may not define "realm", avoid NULL pointer dereference |
| in such cases. |
| |
| Closes #8912 |
| |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| digest: added detection of more syntax error in server headers |
| |
| Invalid headers should not be processed otherwise they may create |
| a security risk. |
| |
| Closes #8912 |
| |
| - [Evgeny Grin (Karlson2k) brought this change] |
| |
| digest: unquote realm and nonce before processing |
| |
| RFC 7616 (and 2617) requires values to be "unquoted" before used for |
| digest calculations. The only place where unquoting can be done |
| correctly is header parsing function (realm="DOMAIN\\host" and |
| realm=DOMAN\\host are different realms). |
| |
| This commit adds unquoting (de-escaping) of all values during header |
| parsing and quoting of the values during header forming. This approach |
| should be most straightforward and easy to read/maintain as all values |
| are processed in the same way as required by RFC. |
| |
| Closes #8912 |
| |
| - headers: handle unfold of space-cleansed headers |
| |
| Detected by OSS-fuzz |
| |
| Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47767 |
| |
| Updated test 1274 |
| |
| Closes #8947 |
| |
| - lib: make more protocol specific struct fields #ifdefed |
| |
| ... so that they don't take up space if the protocols are disabled in |
| the build. |
| |
| Closes #8944 |
| |
| - DISABLED: disable 1021 for hyper again |
| |
| due to flakiness in the CI builds |
| |
| - urldata: store tcp_keepidle and tcp_keepintvl as ints |
| |
| They can't be set larger than INT_MAX in the setsocket API calls. |
| |
| Also document the max values in their respective man pages. |
| |
| Closes #8940 |
| |
| - urldata: reduce size of a few struct fields |
| |
| When the values are never larger than 32 bit, ints are better than longs. |
| |
| Closes #8940 |
| |
| - urldata: remove three unused booleans from struct UserDefined |
| |
| - is_fwrite_set |
| - free_referer |
| - strip_path_slash |
| |
| Closes #8940 |
| |
| - remote-name.d: mention --output-dir |
| |
| plus add two see-alsos |
| |
| Closes #8945 |
| |
| Jay Satiro (1 Jun 2022) |
| - configure: skip libidn2 detection when winidn is used |
| |
| Prior to this change --with-winidn could be overridden by libidn2 |
| detection. |
| |
| Closes https://github.com/curl/curl/pull/8934 |
| |
| Daniel Stenberg (31 May 2022) |
| - CURLOPT_FILETIME.3: fix the protocols this works with |
| |
| - test681: verify --no-remote-name |
| |
| Follow-up to 83ee5c428d960 (from #8931) |
| |
| Closes #8942 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: enable Linux GSO |
| |
| Enable Linux GSO in ngtcp2 QUIC. In order to recover from the |
| EAGAIN/EWOULDBLOCK by sendmsg with multiple packets in one GSO write, |
| packet buffer is now held by struct quicsocket. GSO write might fail in |
| runtime depending on NIC. Disable GSO if sendmsg returns EIO. |
| |
| Closes #8909 |
| |
| - CURLOPT_PORT.3: We discourage using this option |
| |
| Closes #8941 |
| |
| - RELEASE-NOTES: synced |
| |
| - headers_push: error out if a folded header has no previous header |
| |
| As that would indicate an illegal header. The fuzzer reached the assert |
| in unfold_value() proving that this case can happen. |
| |
| Follow-up to c9b60f005358a364 |
| |
| Closes #8939 |
| |
| - [Boris Verkhovskiy brought this change] |
| |
| curl: re-enable --no-remote-name |
| |
| Closes #8931 |
| |
| - test680: require 'http' since it uses such a URL |
| |
| Follow-up to d1b376c03524 |
| |
| - CURLOPT_NETRC.3: document the .netrc file format |
| |
| - test680: verify rejection of malformatted .netrc quoted password |
| |
| - test679: verify netrc quoted string |
| |
| - netrc: support quoted strings |
| |
| The .netrc parser now accepts strings within double-quotes in order to |
| deal with for example passwords containing white space - which |
| previously was not possible. |
| |
| A password that starts with a double-quote also ends with one, and |
| double-quotes themselves are escaped with backslashes, like \". It also |
| supports \n, \r and \t for newline, carriage return and tabs |
| respectively. |
| |
| If the password does not start with a double quote, it will end at first |
| white space and no escaping is performed. |
| |
| WARNING: this change is not entirely backwards compatible. If anyone |
| previously used a double-quote as the first letter of their password, |
| the parser will now get it differently compared to before. This is |
| highly unfortunate but hard to avoid. |
| |
| Reported-by: ImpatientHippo on GitHub |
| Fixes #8908 |
| Closes #8937 |
| |
| - curl_getdate.3: document that some illegal dates pass through |
| |
| Closes #8938 |
| |
| - CI: remove configure --enable-headers-api flags |
| |
| - headers api: remove EXPERIMENTAL tag |
| |
| Closes #8900 |
| |
| Daniel Gustafsson (30 May 2022) |
| - cookies: fix documentation comment |
| |
| Commit 4073cd83b2 added the noexpire parameter to Curl_cookie_add but |
| missed updating the documentation comment at the head of the file. |
| |
| Daniel Stenberg (30 May 2022) |
| - [Marc Hoersken brought this change] |
| |
| tests/data/test1940: use binary mode for expected stdout |
| |
| The generated stdout data is written in binary mode with [LF] |
| line endings, therefore we also need to do a binary comparison. |
| |
| Assisted-by: Jay Satiro |
| Assisted-by: Daniel Stenberg |
| |
| Follow up to c9b60f005358a364cbcddbebd8d12593acffdd84 |
| Fixes #8920 |
| Closes #8936 |
| |
| - CURLINFO_CAINFO/PATH.3: clarify the multiple TLS situation |
| |
| Spell out the multi-TLS situation. |
| |
| Reported-by: Dan Fandrich |
| Fixes #8926 |
| Closes #8932 |
| |
| Jay Satiro (28 May 2022) |
| - [JustAnotherArchivist brought this change] |
| |
| tool_getparam: fix --parallel-max maximum value constraint |
| |
| - Clamp --parallel-max to MAX_PARALLEL (300) instead of resetting to |
| default value. |
| |
| Previously, --parallel-max 300 would use 300 concurrent transfers, but |
| --parallel-max 301 would unexpectedly use only 50. This change clamps |
| higher values to the maximum (ie --parallel-max 301 would use 300). |
| |
| Closes https://github.com/curl/curl/pull/8930 |
| |
| Daniel Stenberg (27 May 2022) |
| - curl.1: add a few see also --tls-max |
| |
| Closes #8929 |
| |
| Viktor Szakats (26 May 2022) |
| - cmake: do not add libcurl.rc to the static libcurl library |
| |
| Fixes: https://github.com/curl/curl/pull/8918#issuecomment-1138263855 |
| |
| Reviewed-By: Karlson2k@users.noreply.github.com |
| Closes #8923 |
| |
| - cmake: support adding a suffix to the OS value |
| |
| CMake automatically uses the `CMAKE_SYSTEM_NAME` value to fill the OS |
| string appearing in the --version output after the curl version number, |
| for example: |
| |
| 'curl 7.83.1 (Windows)' |
| |
| This patchs adds the ability to pass a suffix that is appended to this |
| value. It's useful to add CPU info or other platform details, |
| for example: |
| |
| 'curl 7.83.1 (Windows-x64)' |
| |
| Closes #8919 |
| |
| - cmake: enable curl.rc for all Windows targets |
| |
| Before this patch, it was only enabled for MSVC. This syncs this |
| configuration with libcurl.rc, which was already included with |
| every Windows compiler. |
| |
| Closes #8918 |
| |
| - cmake: fix detecting libidn2 |
| |
| Without this patch, libidn2 detection doesn't even seem to be |
| attempted. With this patch, cmake can be configured to pick it |
| up and enable it. Necessary configuration remains manual and |
| differs from most other dependencies. |
| |
| If you are aware of a better fix, we're glad hearing about it |
| in a new Issue. |
| |
| Closes #8917 |
| |
| - version: allow stricmp() for sorting the feature list |
| |
| In CMakeLists.txt there is an attempt to detect `stricmp()`, and in |
| certain cases, this attempt is the only successful one to detect a |
| case-insensitive comparison function. `HAVE_STRICMP` is defined as |
| a result, but this macro wasn't used anywhere in the source. This |
| patch makes use of it as an alternative when alpha-sorting the |
| `--version` feature list. |
| |
| Reviewed-by: Daniel Stenberg |
| Closes #8916 |
| |
| Daniel Stenberg (25 May 2022) |
| - DISABLED: add six tests that fail with hyper |
| |
| 1117 1274 1940 1941 1942 1943 |
| |
| - c-hyper: mark status line as status for Curl_client_write() |
| |
| To make sure the headers API can filter it out as not a regular header. |
| |
| Reported-by: Gisle Vanem |
| Fixes #8894 |
| Closes #8914 |
| |
| Marc Hoersken (25 May 2022) |
| - tests/data/test1501: kill ftp server after slow LIST response |
| |
| This test is contributing to flakiness on the Windows CI runs. |
| Killing the ftp server after the test run like other slowness |
| tests already do may help resolve or reduce the flakiness. |
| |
| Closes #8907 |
| |
| Daniel Stenberg (25 May 2022) |
| - headers: fix the unfold realloc to use proper new size |
| |
| Previously it didn't take the old name length into acount |
| |
| Follow-up to: c9b60f005358a364 |
| Closes #8913 |
| |
| Marc Hoersken (25 May 2022) |
| - GHA: align all install, configure and build steps again |
| |
| First step towards more unified build steps on GitHub Actions. |
| |
| Closes #8873 |
| |
| - CI/azure: remove obsolete strategy for single builds |
| |
| This shortens these CI job names on GitHub even more. |
| Follow up to #8906 which also increased their timeout. |
| |
| Closes #8911 |
| |
| - CI/azure: shorten names of Windows CI jobs |
| |
| Suggested-by: Daniel Stenberg |
| Closes #8906 |
| |
| Daniel Stenberg (24 May 2022) |
| - http: restore header folding behavior |
| |
| Folded header lines will now get passed through like before. The headers |
| API is adapted and will provide the content unfolded. |
| |
| Added test 1274 and extended test 1940 to verify. |
| |
| Reported-by: Petr Pisar |
| Fixes #8844 |
| Closes #8899 |
| |
| Viktor Szakats (24 May 2022) |
| - Makefile.m32: delete obsolete options, improve -On [ci skip] |
| |
| - `-D_AMD64_` has not been necessary for mingw-w64 builds for a long time now. |
| - `-fno-strict-aliasing` is mentioned for Intel C compiler in autotools, and |
| I used this with VxWorks in another project, but otherwise this isn't |
| necessary anymore as a default. If a target still needs it, it can be |
| added with `CURL_CFLAG_EXTRAS=-fno-strict-aliasing` |
| - bump up default optimization level to `-O3` (from `-O2`), and also rearrange |
| option order so the default can now be overridden via |
| `CURL_CFLAG_EXTRAS`. |
| - delete `-g` (generate debug info) from `CFLAGS` and `-s` from `LDFLAGS` |
| (strip debug info). They were working against each other. Now, if someone |
| needs debug info, it can be enabled via `CURL_CFLAG_EXTRAS=-g` |
| |
| Closes #8904 |
| |
| Daniel Gustafsson (24 May 2022) |
| - ntlm: fix one more hostname test fallout |
| |
| This fixup was missed in commit 5a41abef6dca19. |
| |
| Closes: #8901 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - doh: remove UNITTEST macro definition |
| |
| The UNITTEST macro is defined by curl_setup.h so there is no use in |
| carry a local copy of the logic. |
| |
| Closes: #8902 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (24 May 2022) |
| - cookie: fix false positive "potentially uninitialized local variable" |
| |
| Reviewed-by: Daniel Gustafsson |
| Closes #8903 |
| |
| - curl: add --rate to set max request rate per time unit |
| |
| --rate "12/m" - for 12 per minute or |
| --rate "5/h" - for 5 per hour |
| |
| Removed from TODO |
| |
| Closes #8671 |
| |
| - [Jay Satiro brought this change] |
| |
| max-time.d: clarify max-time sets max transfer time |
| |
| Prior to this change the doc said --max-time set the maximum time of the |
| 'whole operation' which is not accurate. The option maps to |
| CURLOPT_TIMEOUT_MS which sets maximum transfer time. |
| |
| For example, the maximum time on a transfer is reset if the transfer is |
| retried (--retry). |
| |
| Reported-by: Nuru@users.noreply.github.com |
| |
| Fixes https://github.com/curl/curl/issues/8877 |
| Closes #8879 |
| |
| - GHA/hyper: enable debug in the build |
| |
| - hyper: use 'alt-used' |
| |
| Makes test 412+413 work |
| |
| Closes #8898 |
| |
| - RELEASE-NOTES: synced |
| |
| - CURLINFO_CAPATH/CAINFO: get the default CA paths from libcurl |
| |
| Closes #8888 |
| |
| - links: update dead links |
| |
| The wiki pages are gone, remove and link to more long-living docs. |
| |
| Closes #8897 |
| |
| - ntlm: (void) typecast msnprintf() where we ignore return code |
| |
| Follow-up to 5a41abef6, to please Coverity |
| |
| Daniel Gustafsson (22 May 2022) |
| - ntlm: copy NTLM_HOSTNAME to host buffer |
| |
| Commit 709ae2454f43 added a fake hostname to avoid leaking the local |
| hostname, but omitted copying it to the host buffer. Fix by copying |
| and adjust the test fallout. |
| |
| Closes: #8895 |
| Fixes: #8893 |
| Reported-by: Patrick Monnerat <patrick@monnerat.net> |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - configure: use the SED value to invoke sed |
| |
| Rather than assuming sed in PATH, use the resolved $SED variable |
| like in all other invocations of sed in configure. |
| |
| Closes: #8891 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com> |
| |
| Daniel Stenberg (20 May 2022) |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: Allow curl to send larger UDP datagrams |
| |
| Allow curl to send larger UDP datagram if Path MTU Discovery finds the |
| availability of larger path MTU. To make it work and not to send |
| fragmented packet, we need to set DF bit. That makes send(2) fail with |
| EMSGSIZE if UDP datagram is too large. In that case, just let it be |
| lost. This patch enables DF bit for Linux only. |
| |
| Closes #8883 |
| |
| - libcurl-security.3: add "Secrets in memory" |
| |
| Closes #8881 |
| |
| - tests: update NTLM tests to use new host name |
| |
| Also drop the debug requirement, remove the setenv sections, remove |
| prechecks and add NTLM to the top keywords. |
| |
| Closes #8889 |
| |
| - ntlm: provide a fixed fake host name |
| |
| The NTLM protocol includes providing the local host name, but apparently |
| other implementations already provide a fixed fake name instead to avoid |
| leaking the real local name. |
| |
| The exact name used is 'WORKSTATION', because Firefox uses that. |
| |
| The change is written to allow someone to "back-pedal" fairly easy in |
| case of need. |
| |
| Reported-by: Carlo Alberto |
| Fixes #8859 |
| Closes #8889 |
| |
| Daniel Gustafsson (20 May 2022) |
| - KNOWN_BUGS: fix typo in problem description |
| |
| s/TSL/TLS/ |
| |
| - FEATURES: remove yassl as TLS library for NTLM |
| |
| yassl was added in commit 9d904ee41b880b but is no longer available |
| and is thus not a library to use for NTLM. This aligns the FEATURES |
| doc with the FAQ. |
| |
| Closes: #8886 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - FEATURES: reorder footnotes |
| |
| The empty left-behind footnote confused the website rendering into |
| creating a nested emoty list, making the resulting page look quite |
| odd. Remove and re-order the remaining ones to avoid a gap in the |
| sequence. |
| |
| Closes: #8886 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - FAQ: remove opinionated sentence on NTLM |
| |
| curl is a tool that support many different things, and it doesn't |
| really seem like our job to tell other what to use (as they might |
| not have much say in the matter even). Also tidy up wording. |
| |
| Closes: #8886 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Viktor Szakats (20 May 2022) |
| - log2changes: do not indent empty lines [ci skip] |
| |
| This will omit two spaces of indentation from lines with no content, |
| thus avoiding 'spaces @ EOL'. |
| |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| Closes #8887 |
| |
| Daniel Stenberg (19 May 2022) |
| - wolfssl: correct the failf() message when a handle can't be made |
| |
| Closes #8885 |
| |
| Viktor Szakats (19 May 2022) |
| - Makefile.m32: delete two obsolete OpenSSL options [ci skip] |
| |
| - -DOPENSSL_NO_KRB5: No longer used by OpenSSL 1.1.x, 3.x, or |
| LibreSSL 3.5.x, yet it collides with the latter, which defines |
| it unconditionally, resulting in this warning: |
| ../../libressl/include/openssl/opensslfeatures.h:14:9: warning: 'OPENSSL_NO_KRB5' macro redefined [-Wmacro-redefined] |
| It was originally added to curl in 2004. |
| |
| - -DHAVE_OPENSSL_PKCS12_H: No longer used by OpenSSL 1.1.x, 3.x, or |
| LibreSSL back to at least 2.5.5. Originally added in the same |
| commit as the above, in 2004. |
| |
| Closes #8884 |
| |
| Daniel Stenberg (19 May 2022) |
| - RELEASE-NOTES: synced |
| |
| bump to 7.84.0 |
| |
| - [Christian Weisgerber via curl-library brought this change] |
| |
| Makefile.am: fix portability issues |
| |
| Commit a04f0b961333e1a19848d073d8c7db9c20b2a371 made me notice that |
| there is a portability issue in curl's top-level Makefile.am. |
| |
| $< can only be used in rules that deal with .SUFFIXES. Its use |
| for general prerequisites is a GNU make extension. |
| |
| $< could be replaced by $?, but I think in an autotools context, |
| something like this is better: |
| |
| Bug: https://curl.se/mail/lib-2022-05/0024.html |
| Closes #8861 |
| |
| - [Balakrishnan Balasubramanian brought this change] |
| |
| socks: support unix sockets for socks proxy |
| |
| Usage: |
| curl -x "socks5h://localhost/run/tor/socks" "https://example.com" |
| |
| Updated runtests.pl to run a socksd server listening on unix socket |
| |
| Added tests test1467 test1468 |
| |
| Added documentation for proxy command line option and socks proxy |
| options |
| |
| Closes #8668 |
| |
| - [Vincent Torri brought this change] |
| |
| cmake: add libpsl support |
| |
| Fixes #8865 |
| Closes #8867 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: extend QUIC transport parameters buffer |
| |
| Extend QUIC transport parameters buffer because 64 bytes are too |
| short for the ever increasing parameters. |
| |
| Closes #8872 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: handle error from ngtcp2_conn_submit_crypto_data |
| |
| Closes #8871 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: send appropriate connection close error code |
| |
| Closes #8870 |
| |
| - test1561: adjusted for the cookie fix |
| |
| - test414: verify secure cookie domain overlay |
| |
| - [Harry Sintonen brought this change] |
| |
| cookie: address secure domain overlay |
| |
| Bug: https://hackerone.com/reports/1560324 |
| Co-authored-by: Daniel Stenberg |
| Closes #8840 |
| |
| - [Frank Gevaerts brought this change] |
| |
| strcase: some optimisations |
| |
| Lookup tables for toupper() and tolower() make Curl_strcasecompare() |
| about 1.5 times faster. Reorganising Curl_strcasecompare() to fully exit |
| early then also allows simplifying the check at the end, for another |
| 15%. In total, the changes make Curl_strcasecompare() around 1.6 to 1.7 |
| times faster. |
| |
| Note that these optimisation assume ASCII. The original |
| Curl_raw_toupper() and raw_tolower() look like they already made that |
| assumption. |
| |
| Closes #8875 |
| |
| - BUG-BOUNTY.md: mention the audit exception |
| |
| Dedicated - paid for - security audits that are performed in |
| collaboration with curl developers are not eligible for bounties. |
| |
| (plus I changed the sub-titles to use ## instead of # in the markdown) |
| |
| Closes #8880 |
| |
| - lib/vssh/wolfssh.h: removed |
| |
| Unused header file |
| |
| Reported-by: Illarion Taev |
| Fixes #8863 |
| Closes #8866 |
| |
| - [Elms brought this change] |
| |
| wolfSSL: explicitly use compatibility layer |
| |
| This change removes adding an include `$prefix/wolfssl` or similar to |
| allow for openssl include aliasing. Include paths of `wolfssl/openssl/` |
| are used to explicitly use wolfSSL includes. This fixes cmake builds as |
| well as avoiding potentially using openSSL headers since include path |
| order is not guaranteed. |
| |
| Closes #8864 |
| |
| - curl: deprecate --random-file and --egd-file |
| |
| As libcurl no longer has any functionality for them, the tool now does |
| nothing with them. |
| |
| Closes #8670 |
| |
| - opts: deprecate RANDOM_FILE and EGDSOCKET |
| |
| These two options were only ever used for the OpenSSL backend for |
| versions before 1.1.0. They were never used for other backends and they |
| are not used with recent OpenSSL versions. They were never used much by |
| applications. |
| |
| The defines RANDOM_FILE and EGD_SOCKET can still be set at build-time |
| for ancient EOL OpenSSL versions. |
| |
| Closes #8670 |
| |
| - [Harry Sintonen brought this change] |
| |
| bindlocal: don't use a random port if port number would wrap |
| |
| Earlier if CURLOPT_LOCALPORT + CURLOPT_LOCALPORTRANGE would go past port |
| 65535 the code would fall back to random port rather than giving up. |
| |
| Closes #8862 |
| |
| Daniel Gustafsson (16 May 2022) |
| - transfer: Fix potential NULL pointer dereference |
| |
| Commit 0ef54abf5208 accidentally used the conn variable before the |
| assertion for it being NULL. Fix by moving the assignment which use |
| conn to after the assertion. |
| |
| Closes: #8857 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - docs: clarify data replacement policy for MIME API |
| |
| The API documentation for the MIME functions specify that the parts |
| can be set twice, with the last call winning. While true, the user |
| can set the parts n times for n > 2, reword to specify multiple API |
| calls instead. |
| |
| Closes: #8860 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (16 May 2022) |
| - [vvb2060 on github brought this change] |
| |
| ngtcp2: support boringssl crypto backend |
| |
| Closes #8789 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| quic: add Curl_quic_idle |
| |
| Add Curl_quic_idle which is called when no HTTP level read or write is |
| performed. It is a good place to handle timer expiry for QUIC transport |
| (.e.g, retransmission). |
| |
| Closes #8698 |
| |
| - [Gregor Jasny brought this change] |
| |
| mprintf: ignore clang non-literal format string |
| |
| Closes #8740 |
| |
| - [Nick Zitzmann brought this change] |
| |
| sectransp: check for a function defined when __BLOCKS__ is undefined |
| |
| SecTrustEvaluateAsync() is defined in the macOS 10.7 SDK, but it |
| requires Grand Central Dispatch to be supported by the compiler, and |
| some third-party macOS compilers do not support Grand Central Dispatch. |
| SecTrustCopyPublicKey() is not present in macOS 10.6, so this shouldn't |
| adversely affect anything. |
| |
| Fixes #8846 |
| Reported-by: Egor Pugin |
| Closes #8854 |
| |
| Daniel Gustafsson (16 May 2022) |
| - test412/413: Use version macro for User-Agent |
| |
| Commit 46d45ea3a incorrectly hardcoded the User-Agent in the test |
| output file which breaks when curlver is updated. Shift to using |
| the %VERSION macro instead. |
| |
| Closes: #8856 |
| |
| - macos9: remove partial support |
| |
| The support for compiling on Mac OS 9 hasn't been modified since 2001 |
| and has no active maintainer or packager, so it's time to remove it as |
| it's incredibly unlikely to work. If a maintainer re-emerges it can be |
| resurrected from Git history. |
| |
| Closes: #8836 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (16 May 2022) |
| - test1635: verify --fail-with-body with --retry |
| |
| Almost a dupe of 1634 |
| |
| Closes #8847 |
| |
| - tool_operate: make sure --fail-with-body works with --retry |
| |
| ... in the same way --fail already does. |
| |
| Reported-by: Jakub Bochenski |
| Fixes #8845 |
| Closes #8847 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: Correct use of ngtcp2 and nghttp3 signed integer types |
| |
| Closes #8851 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: Fix alert_read_func return value |
| |
| Closes #8852 |
| |
| - [Harry Sintonen brought this change] |
| |
| Curl_parsenetrc: don't access local pwbuf outside of scope |
| |
| Accessing local variables outside of the scope is forbidden and |
| depending on the compiler can result in the value being |
| overwritten. Fixed by moving the pwbuf to be in scope. |
| |
| Closes #8850 |
| |
| - RELEASE-NOTES: synced |
| |
| and bump curlver to 7.83.2 for now (but likely to become 7.84.0 soon) |
| |
| - [Frazer Smith brought this change] |
| |
| ci: update github actions |
| |
| - bump actions/checkout from 2 to 3 |
| - bump actions/upload-artifact from 1 to 3 |
| - bump github/codeql-actions from 1 to 2 |
| - use version tag for actions/checkout |
| |
| Closes #8843 |
| |
| - test1919: verify CURLOPT_XOAUTH2_BEARER leak fix |
| |
| - url: free old conn better on reuse |
| |
| Make use of conn_free() better and avoid duplicate code. |
| |
| Reported-by: Andrea Pappacoda |
| Fixes #8841 |
| Closes #8842 |
| |
| Jay Satiro (14 May 2022) |
| - FAQ: Clarify Windows double quote usage |
| |
| - Windows command prompt doesn't use literal quoting via single quotes. |
| |
| - Windows command prompt inner double quotes are escaped with a |
| backslash. |
| |
| - Windows powershell does use single quotes but curl is not a powershell |
| script so the arguments may not be passed on correctly. |
| |
| - Windows powershell inner double quotes seems can be passed to curl if |
| the outer quotes are double quotes and an escape of backslash-backtick |
| is used. |
| |
| Command prompt example: |
| |
| ~~~ |
| getargs -v -d "\"a\"" |
| |
| argv[0]: getargs |
| argv[1]: -v |
| argv[2]: -d |
| argv[3]: "a" |
| ~~~ |
| |
| Ref: https://github.com/curl/curl/issues/8818 |
| Ref: https://gist.github.com/jay/19aba48653bd591cf4b90eb9249a302c |
| |
| Reported-by: KotlinIsland@users.noreply.github.com |
| |
| Closes https://github.com/curl/curl/pull/8823 |
| |
| Daniel Stenberg (12 May 2022) |
| - github/workflows/nss: apt update first |
| |
| Fix "libnss3-dev_3.49.1-1ubuntu1.6_amd64.deb 404 Not Found" |
| |
| Closes #8837 |
| |
| - page-footer: mention exit code zero too |
| |
| Success (zero) is also an "exit code" worth mentioning. |
| |
| Closes #8833 |
| |
| Daniel Gustafsson (12 May 2022) |
| - gssapi: initialize gss_buffer_desc strings |
| |
| Explicitly initialize gss_buffer_desc strings such that a call to |
| freeing resources will succeed even if no data has been allocated |
| to it. |
| |
| Reported-by: Jay Satiro <raysatiro@yahoo.com> |
| |
| - gssapi: improve handling of errors from gss_display_status |
| |
| In case gss_display_status() returns an error, avoid trying to add |
| it to the buffer as the message may well be a NULL pointer. |
| |
| Originally this fix comes from a discussion in issue #8816. |
| |
| Closes: #8832 |
| Reviewed-by: Jay Satiro <raysatiro@yahoo.com> |
| |
| Jay Satiro (12 May 2022) |
| - [steini2000 brought this change] |
| |
| http2: always debug print stream id in decimal with %u |
| |
| Prior to this change the stream id shown could be hex or decimal which |
| was inconsistent and confusing. |
| |
| Closes https://github.com/curl/curl/pull/8808 |
| |
| Kamil Dudka (11 May 2022) |
| - url: remove redundant #ifdefs in allocate_conn() |
| |
| No change in behavior intended by this commit. |
| |
| Daniel Stenberg (11 May 2022) |
| - [Fabian Keil brought this change] |
| |
| tests 266, 116 and 1540: add a small write delay |
| |
| This makes it more likely that the trailer is received |
| seperately from the last-chunk. |
| |
| curl doesn't seem to care about this but it makes the tests |
| more useful when testing external proxies like Privoxy. |
| |
| - [Fabian Keil brought this change] |
| |
| tests 1117,1238,1523: adjust writedelay servercmds |
| |
| ... so the delays are the same now that the unit |
| is in milliseconds. |
| |
| - [Fabian Keil brought this change] |
| |
| tests/server/sws.c: change the HTTP writedelay unit to milliseconds |
| |
| This allows to use write delays for large responses without |
| resulting in the test taking an unreasonable amount of time. |
| |
| In many cases delaying writes by a whole second or more isn't |
| necessary for the desired effect. |
| |
| Closes #8827 |
| |
| Daniel Gustafsson (11 May 2022) |
| - aws-sigv4: fix potentional NULL pointer arithmetic |
| |
| We need to check if the strchr() call returns NULL (due to missing |
| char) before we use the returned value in arithmetic. There is no |
| live bug here, but fixing it before it can become for hygiene. |
| |
| Closes: #8814 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (11 May 2022) |
| - quiche: support ca-fallback |
| |
| Follow-up to b01f3e679f4c1ea3 which added this for ngtcp2/openssl |
| |
| Removed from KNOWN_BUGS |
| |
| Fixes #8696 |
| Closes #8830 |
| |
| Daniel Gustafsson (11 May 2022) |
| - x509asn1: mark msnprintf return as unchecked |
| |
| We have lots of unchecked msnprintf calls, and this particular msnprintf |
| call isn't more interesting than the others, but this one yields a Coverity |
| warning so let's implicitly silence it. Going over the other invocations |
| is probably a worthwhile project, but for now let's keep the static |
| analyzers happy. |
| |
| Closes: #8831 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Version 7.83.1 (11 May 2022) |
| |
| Daniel Stenberg (11 May 2022) |
| - RELEASE-NOTES: synced |
| |
| curl 7.83.1 release |
| |
| - THANKS: added contributors from 7.83.1 |
| |
| - zuul: fix the ngtcp2-gnutls build |
| |
| Add packages and tweak the configure options. |
| |
| Use the GnuTLS 3.7.4 branch (not main). |
| |
| Closes #8829 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: add ca-fallback support for OpenSSL backend |
| |
| Closes #8828 |
| |
| - url: check SSH config match on connection reuse |
| |
| CVE-2022-27782 |
| |
| Reported-by: Harry Sintonen |
| Bug: https://curl.se/docs/CVE-2022-27782.html |
| Closes #8825 |
| |
| - tls: check more TLS details for connection reuse |
| |
| CVE-2022-27782 |
| |
| Reported-by: Harry Sintonen |
| Bug: https://curl.se/docs/CVE-2022-27782.html |
| Closes #8825 |
| |
| - cookies: make bad_domain() not consider a trailing dot fine |
| |
| The check for a dot in the domain must not consider a single trailing |
| dot to be fine, as then TLD + trailing dot is fine and curl will accept |
| setting cookies for it. |
| |
| CVE-2022-27779 |
| |
| Reported-by: Axel Chong |
| Bug: https://curl.se/docs/CVE-2022-27779.html |
| Closes #8820 |
| |
| - test977: reproduce ability to set cookie on TLD |
| |
| When PSL is not enabled |
| |
| - scripts/contributors.sh: correct the copyright range |
| |
| - docs/RELEASE-PROCEDURE.md: refreshed and adjsuted the release dates |
| |
| - test379: verify --remove-on-error with --no-clobber |
| |
| - post_per_transfer: remove the updated file name |
| |
| When --remove-on-error is used with --no-clobber, it might have an |
| updated file name to remove. |
| |
| Bug: https://curl.se/docs/CVE-2022-27778.html |
| |
| CVE-2022-27778 |
| |
| Reported-by: Harry Sintonen |
| |
| Closes #8824 |
| |
| - hsts: ignore trailing dots when comparing hosts names |
| |
| CVE-2022-30115 |
| |
| Reported-by: Axel Chong |
| Bug: https://curl.se/docs/CVE-2022-30115.html |
| Closes #8821 |
| |
| - test440/441: verify HSTS with trailing dots |
| |
| - libtest/lib1560: verify the host name percent decode fix |
| |
| - urlapi: reject percent-decoding host name into separator bytes |
| |
| CVE-2022-27780 |
| |
| Reported-by: Axel Chong |
| Bug: https://curl.se/docs/CVE-2022-27780.html |
| Closes #8826 |
| |
| - nss: return error if seemingly stuck in a cert loop |
| |
| CVE-2022-27781 |
| |
| Reported-by: Florian KohnhƤuser |
| Bug: https://curl.se/docs/CVE-2022-27781.html |
| Closes #8822 |
| |
| - test412/413: verify alt-svc with trailing dots |
| |
| - altsvc: fix host name matching for trailing dots |
| |
| Closes #8819 |
| |
| - [Garrett Squire brought this change] |
| |
| hyper: fix test 357 |
| |
| This change fixes the hyper API such that PUT requests that receive a |
| 417 response can retry without the Expect header. |
| |
| Closes #8811 |
| |
| - [Harry Sintonen brought this change] |
| |
| sectransp: bail out if SSLSetPeerDomainName fails |
| |
| Before the code would just warn about SSLSetPeerDomainName() errors. |
| |
| Closes #8798 |
| |
| - http_proxy/hyper: handle closed connections |
| |
| Enable test 1021 for hyper builds. |
| |
| Patched-by: Prithvi MK |
| Fixes #8700 |
| Closes #8806 |
| |
| - KNOWN_BUGS: timeout when reusing a http3 connection |
| |
| Closes #8764 |
| |
| - KNOWN_BUGS: configure --with-ca-fallback is not supported by h3 |
| |
| Closes #8696 |
| |
| - [Ryan Schmidt brought this change] |
| |
| Makefile: fix "make ca-firefox" |
| |
| Closes #8804 |
| |
| Daniel Gustafsson (5 May 2022) |
| - tests: fix markdown formatting in README |
| |
| The asterisk in the abbreviation *NIX (for UNIX/Linux) needs to be |
| escaped to not mean start of italic formatting. This is consistent |
| with docs/RELEASE-PROCEDURE.md. |
| |
| Closes: #8802 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (5 May 2022) |
| - TODO: expand on "Expose tried IP addresses that failed" |
| |
| Ref: #8794 |
| |
| Daniel Gustafsson (5 May 2022) |
| - [Fabian Keil brought this change] |
| |
| tests/server: declare variable 'reqlogfile' static |
| |
| Silences the warning: |
| |
| CC socksd-socksd.o |
| socksd.c:143:13: warning: no previous extern declaration for |
| non-static variable 'reqlogfile' [-Wmissing-variable-declarations] |
| const char *reqlogfile = DEFAULT_REQFILE; |
| ^ |
| socksd.c:143:7: note: declare 'static' if the variable is not |
| intended to be used outside of this translation unit |
| const char *reqlogfile = DEFAULT_REQFILE; |
| ^ |
| 1 warning generated. |
| |
| ... when compiling with clang 13. |
| |
| Closes: #8799 |
| Reviewed-by: Daniel Gustafsson <daniel@yesql.se> |
| |
| - HTTP-COOKIES: add missing CURLOPT_COOKIESESSION |
| |
| Commit 980a47b42 added support for ignoring session cookies, but it |
| was never added to the documentation. |
| |
| Closes: #8795 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (5 May 2022) |
| - docs/THANKS: remove name duplicate |
| |
| - [Philip Heiduck brought this change] |
| |
| .mailmap: update |
| |
| Closes #8800 |
| |
| Jay Satiro (5 May 2022) |
| - mbedtls: fix some error messages |
| |
| Prior to this change some of the error messages misidentified the |
| function that failed. |
| |
| Daniel Stenberg (5 May 2022) |
| - RELEASE-NOTES: synced |
| |
| - [Sergey Markelov brought this change] |
| |
| x509asn1: make do_pubkey handle EC public keys |
| |
| Closes #8757 |
| |
| - [Harry Sintonen brought this change] |
| |
| mbedtls: bail out if rng init fails |
| |
| There was a failf() call but no actual error return. |
| |
| Closes #8796 |
| |
| - [Sergey Markelov brought this change] |
| |
| urlapi: address (harmless) UndefinedBehavior sanitizer warning |
| |
| `while(i--)` causes runtime error: unsigned integer overflow: 0 - 1 |
| cannot be represented in type 'size_t' (aka 'unsigned long') |
| |
| Closes #8797 |
| |
| - [Fabian Keil brought this change] |
| |
| test{898,974,976}: add 'HTTP proxy' keywords |
| |
| ... so the tests can be automatically skipped when |
| testing external HTTP proxies like Privoxy. |
| |
| Closes #8791 |
| |
| - [Harry Sintonen brought this change] |
| |
| gskit_connect_step1: fixed bogus setsockopt calls |
| |
| setsockopt takes a reference to value, not value. With the current |
| code this just leads to -1 return value with errno EFAULT. |
| |
| Closes #8793 |
| |
| - CURLOPT_SSH_AUTH_TYPES.3: fix the default |
| |
| The default is all possible methods. |
| |
| Closes #8792 |
| |
| - CURLOPT_DOH_URL.3: mention the known bug |
| |
| It is mostly duplicating info from KNOWN_BUGS but make it easier to find |
| for users of this option. |
| |
| Closes #8790 |
| |
| - CURLOPT_HSTS*FUNCTION.3: document the involved structs as well |
| |
| Reviewed-By: Daniel Gustafsson |
| Closes #8788 |
| |
| - docs/SECURITY-PROCESS.md: "Visible command line arguments" |
| |
| - SECURITY-PROCESS: mention "URL inconsistencies" |
| |
| ... as common problems that are *not* vulns. |
| |
| Daniel Gustafsson (2 May 2022) |
| - contributors: strip off final comma |
| |
| The final row of contributors should not end with a comma as it's the |
| end of the list. |
| |
| Closes: #8785 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (2 May 2022) |
| - [Philip Heiduck brought this change] |
| |
| misc: use "autoreconf -fi" instead buildconf |
| |
| Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> |
| Closes #8777 |
| |
| Daniel Gustafsson (2 May 2022) |
| - [Philip Heiduck brought this change] |
| |
| cirrus: Use pip for Python packages on FreeBSD |
| |
| Using pip instead of easy_install is more in line with how other |
| CI images are being maintained. |
| |
| Closes: #8783 |
| Reviewed-by: Daniel Gustafsson <daniel@yesql.se> |
| |
| - [Philip Heiduck brought this change] |
| |
| cirrus: Update to FreeBSD 12.3 |
| |
| Closes: #8783 |
| Reviewed-by: Daniel Gustafsson <daniel@yesql.se> |
| |
| - tool_getparam: simplify conditional statement |
| |
| param_place cannot be NULL here since we immediately efter this block |
| perform arithmetic on it (and use it in order to get here) so there is |
| little reason to check. |
| |
| Closes: #8786 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - RELEASE-NOTES: synced |
| |
| - gskit: remove unused function set_callback |
| |
| This function has been unused since the initial commit of the GSKit |
| backend in 0eba02fd4. The motivation for the code was getting the |
| whole certificate chain: the only place where the latter is available |
| is as a callback parameter. Unfortunately it is not possible to pass |
| a user pointer to this callback, which precludes the possibility to |
| associate the cert chain with a data/conn structure. |
| |
| For further information, search for pgsk_cert_validation_callback on: |
| https://www.ibm.com/docs/api/v1/content/ssw_ibm_i_71/apis/gsk_attribute_set_callback.htm |
| |
| As the upstream library never added a parameter like that to the API, |
| we give up the wait and remove the dead code. |
| |
| Closes: #8782 |
| Reviewed-by: Patrick Monnerat <patrick@monnerat.net> |
| |
| - curl: free resource in error path |
| |
| If the new filename cannot be generated due to memory pressure, free |
| the allocated aname on the way out to avoid a small leak. |
| |
| Closes: #8770 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - curl: guard against size_t wraparound in no-clobber code |
| |
| When generating the new filename, make sure we aren't overflowing the |
| size_t limit when calculating the new length. This is mostly academic |
| but good code hygeine nonetheless. |
| |
| Closes: #8771 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Daniel Stenberg (30 Apr 2022) |
| - gha: build msh3 |
| |
| Closes #8779 |
| |
| - scripts/cijobs.pl: try "current branch" first then "master" |
| |
| - [Yusuke Nakamura brought this change] |
| |
| msh3: get msh3 version from MsH3Version |
| |
| Closes #8762 |
| |
| - [Yusuke Nakamura brought this change] |
| |
| msh3: psss remote_port to MsH3ConnectionOpen |
| |
| MsH3 supported additional "Port" parameter to connect not hosted on |
| 443 port QUIC website. |
| |
| * https://github.com/nibanks/msh3/releases/tag/v0.3.0 |
| * https://github.com/nibanks/msh3/pull/37 |
| |
| Closes #8762 |
| |
| - [Christian Weisgerber brought this change] |
| |
| openssl: define HAVE_SSL_CTX_SET_EC_CURVES for libressl |
| |
| SSL_CTX_set1_curves_list() has been available since LibreSSL 2.5.3, |
| released five years ago. |
| |
| Bug: https://curl.se/mail/lib-2022-04/0059.html |
| Closes #8773 |
| |
| - http: move Curl_allow_auth_to_host() |
| |
| It was mistakenly put within the CURL_DISABLE_HTTP_AUTH #ifdef |
| |
| Reported-by: Michael Olbrich |
| Fixes #8772 |
| Closes #8775 |
| |
| Daniel Gustafsson (29 Apr 2022) |
| - msh3: print boolean value as text representation |
| |
| Print the boolean value as its string representation instead of with |
| %hhu which isn't a format we typically use. |
| |
| Closes: #8763 |
| Reviewed-by: Nick Banks <nibanks@microsoft.com> |
| |
| Daniel Stenberg (29 Apr 2022) |
| - data/test376: set a proper name |
| |
| - GHA/mbedtls: enabled nghttp2 in the build |
| |
| Closes #8767 |
| |
| - mbedtls: fix compile when h2-enabled |
| |
| Fixes #8766 |
| Reported-by: LigH-de on github |
| Closes #8768 |
| |
| - RELEASE-NOTES: synced |
| |
| bumped curlver to 7.83.1-dev |
| |
| - SECURITY-PROCESS: extended |
| |
| Also clarify BUG-BOUNTY.md with IBB details. |
| |
| Closes #8754 |
| |
| - [Adam Rosenfield brought this change] |
| |
| conn: fix typo 'connnection' -> 'connection' in two function names |
| |
| Closes #8759 |
| |
| Version 7.83.0 (27 Apr 2022) |
| |
| Daniel Stenberg (27 Apr 2022) |
| - RELEASE-NOTES: synced |
| |
| The 7.83.0 release |
| |
| - docs/THANKS: contributors from 7.83.0 |
| |
| - test 898/974/976: require proxy to run |
| |
| Fixes #8755 |
| Reported-by: Marc Hƶrsken |
| Closes #8756 |
| |
| - gnutls: don't leak the SRP credentials in redirects |
| |
| Follow-up to 620ea21410030 and 139a54ed0a172a |
| |
| Reported-by: Harry Sintonen |
| Closes #8752 |
| |
| - CURLOPT*TLSAUTH: they only work with OpenSSL or GnuTLS |
| |
| Closes #8753 |
| |
| - openssl: don't leak the SRP credentials in redirects either |
| |
| Follow-up to 620ea21410030 |
| |
| Reported-by: Harry Sintonen |
| Closes #8751 |
| |
| - [Liam Warfield brought this change] |
| |
| hyper: fix tests 580 and 581 for hyper |
| |
| Hyper now has the ability to preserve header order. This commit adds a |
| few lines setting the connection options for this feature. |
| |
| Related to issue #8617 |
| Closes #8707 |
| |
| - conncache: remove name arg from Curl_conncache_find_bundle |
| |
| To simplify, and also since the returned name is not the full actual |
| name used for the check. The port number and zone id is also involved, |
| so just showing the name is misleading. |
| |
| Closes #8750 |
| |
| - tests: verify the fix for CVE-2022-27774 |
| |
| - Test 973 redirects from HTTP to FTP, clear auth |
| - Test 974 redirects from HTTP to HTTP different port, clear auth |
| - Test 975 redirects from HTTP to FTP, permitted to keep auth |
| - Test 976 redirects from HTTP to HTTP different port, permitted to keep |
| auth |
| |
| - transfer: redirects to other protocols or ports clear auth |
| |
| ... unless explicitly permitted. |
| |
| Bug: https://curl.se/docs/CVE-2022-27774.html |
| Reported-by: Harry Sintonen |
| Closes #8748 |
| |
| - connect: store "conn_remote_port" in the info struct |
| |
| To make it available after the connection ended. |
| |
| - cookie.d: clarify when cookies are always sent |
| |
| - test898: verify the fix for CVE-2022-27776 |
| |
| Do not pass on Authorization headers on redirects to another port |
| |
| - http: avoid auth/cookie on redirects same host diff port |
| |
| CVE-2022-27776 |
| |
| Reported-by: Harry Sintonen |
| Bug: https://curl.se/docs/CVE-2022-27776.html |
| Closes #8749 |
| |
| - libssh2: make the md5 comparison fail if wrong length |
| |
| Making it just skip the check unless exactly 32 is too brittle. Even if |
| the docs says it needs to be exactly 32, it is be safer to make the |
| comparison fail here instead. |
| |
| Reported-by: Harry Sintonen |
| Bug: https://hackerone.com/reports/1549461 |
| Closes #8745 |
| |
| - conncache: include the zone id in the "bundle" hashkey |
| |
| Make connections to two separate IPv6 zone ids create separate |
| connections. |
| |
| Reported-by: Harry Sintonen |
| Bug: https://curl.se/docs/CVE-2022-27775.html |
| Closes #8747 |
| |
| - [Patrick Monnerat brought this change] |
| |
| url: check sasl additional parameters for connection reuse. |
| |
| Also move static function safecmp() as non-static Curl_safecmp() since |
| its purpose is needed at several places. |
| |
| Bug: https://curl.se/docs/CVE-2022-22576.html |
| |
| CVE-2022-22576 |
| |
| Closes #8746 |
| |
| - libssh2: compare sha256 strings case sensitively |
| |
| Reported-by: Harry Sintonen |
| Bug: https://hackerone.com/reports/1549435 |
| Closes #8744 |
| |
| - tool_getparam: error out on missing -K file |
| |
| Add test 411 to verify. |
| |
| Reported-by: Median Median Stride |
| Bug: https://hackerone.com/reports/1542881 |
| Closes #8731 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: deal with sub-millisecond timeout |
| |
| Closes #8738 |
| |
| - misc: update copyright year ranges |
| |
| - c_escape: escape '?' in generated --libcurl code |
| |
| In order to avoid the risk of it being used in an accidental trigraph in |
| the generated code. |
| |
| Reported-by: Harry Sintonen |
| Bug: https://hackerone.com/reports/1548535 |
| Closes #8742 |
| |
| - [Philip Heiduck brought this change] |
| |
| mlc: curl.zuul.vexxhost.dev is reachable again |
| |
| remove it from ignorelist for linkcheck |
| |
| Closes #8736 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: avoid busy loop in low CWND situation |
| |
| Closes #8739 |
| |
| - TODO: telnet - exit immediately upon connection if stdin is /dev/null |
| |
| Suggested-by: Robin A. Meade |
| URL: https://curl.se/mail/archive-2022-04/0027.html |
| |
| - [Kushal Das brought this change] |
| |
| docs: updates spellings with full words |
| |
| Closes #8730 |
| |
| - tests/FILEFORMAT.md: spellfix |
| |
| Daniel Gustafsson (21 Apr 2022) |
| - misc: fix typos |
| |
| Fix a few random typos is comments and workflow names. |
| |
| - macos: fix .plist installation into framework |
| |
| The copy command introduced in e498a9b1f had leftover '>' from the |
| previous sed command it replaced, which broke its syntax. Fix by |
| removing. |
| |
| Reported-by: Emanuele Torre <torreemanuele6@gmail.com> |
| |
| Daniel Stenberg (21 Apr 2022) |
| - [Christopher Degawa brought this change] |
| |
| Makefile: fix ca-bundle due to mk-ca-bundle.pl being moved |
| |
| The script was moved in 8e22fc68e7dda43e9f but the lines that called it |
| was not changed to reflect it's new position |
| |
| Signed-off-by: Christopher Degawa <ccom@randomderp.com> |
| |
| Closes #8728 |
| |
| Daniel Gustafsson (20 Apr 2022) |
| - macos: set .plist version in autoconf |
| |
| Set the libcurl version in libcurl.plist like how libcurl.vers is |
| created. |
| |
| Closes: #8692 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| Reviewed-by: Nick Zitzmann <nickzman@gmail.com> |
| |
| - cookies: Improve errorhandling for reading cookiefile |
| |
| The existing programming had some issues with errorhandling for reading |
| the cookie file. If the file failed to open, we would silently ignore it |
| and continue as if there was no file (or stdin) passed. In this case, we |
| would also call fclose() on the NULL FILE pointer, which is undefined |
| behavior. Fix by ensuring that the FILE pointer is set before calling |
| fclose on it, and issue a warning in case the file cannot be opened. |
| Erroring out on nonexisting file would break backwards compatibility of |
| very old behavior so we can't really go there. |
| |
| Closes: #8699 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| Reviewed-by: Jay Satiro <raysatiro@yahoo.com> |
| |
| Daniel Stenberg (20 Apr 2022) |
| - libcurl-tutorial.3: spellfix and minor polish |
| |
| - CURLINFO_PRIMARY_PORT.3: spellfix |
| |
| Reported-by: Patrick Monnerat |
| |
| - [Jay Dommaschk brought this change] |
| |
| libssh: fix double close |
| |
| libssh closes the socket in ssh_diconnect() so make sure that libcurl |
| does not also close it. |
| |
| Fixes #8708 |
| Closes #8718 |
| |
| Jay Satiro (20 Apr 2022) |
| - [Gisle Vanem brought this change] |
| |
| unit1620: call global_init before calling Curl_open |
| |
| Curl_open calls the resolver init and on Windows if the resolver backend |
| is c-ares then the Windows sockets library (winsock) must already have |
| been initialized (via global init). |
| |
| Ref: https://github.com/curl/curl/pull/8540#issuecomment-1059771800 |
| |
| Closes https://github.com/curl/curl/pull/8719 |
| |
| Daniel Stenberg (19 Apr 2022) |
| - CURLINFO_PRIMARY_PORT.3: clarify which port this is |
| |
| As it was not entirely clear previously. |
| |
| Closes #8725 |
| |
| - CURLOPT_UNRESTRICTED_AUTH.3: extended explanation |
| |
| Include details about Authentication headers. |
| |
| Reported-by: Brad Spencer |
| Fixes #8724 |
| Closes #8726 |
| |
| - .github/workflows/macos.yml: add a libssh job with c-ares |
| |
| ... to enable the memdebug system |
| |
| Closes #8720 |
| |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (17 Apr 2022) |
| - [Gisle Vanem brought this change] |
| |
| docs/HTTP3.md: fix typo |
| |
| also fix msh3 section formatting |
| |
| Ref: https://github.com/curl/curl/commit/37492ebb#r70980087 |
| |
| Marc Hoersken (17 Apr 2022) |
| - timediff.[ch]: add curlx helper functions for timeval conversions |
| |
| Also move timediff_t definitions from timeval.h to timediff.h and |
| then make timeval.h include the new standalone-capable timediff.h. |
| |
| Reviewed-by: Jay Satiro |
| Reviewed-by: Daniel Stenberg |
| |
| Supersedes #5888 |
| Closes #8595 |
| |
| Daniel Stenberg (17 Apr 2022) |
| - [Balakrishnan Balasubramanian brought this change] |
| |
| tests: refactor server/socksd.c to support --unix-socket |
| |
| Closes #8687 |
| |
| - [Emanuele Torre brought this change] |
| |
| tool_paramhlp: use feof(3) to identify EOF correctly when using fread(3) |
| |
| This loop was using the number of bytes read from the file as condition |
| to keep reading. |
| |
| From Linux's fread(3) man page: |
| > On success, fread() and fwrite() return the number of items read or |
| > written. This number equals the number of bytes transferred only when |
| > size is 1. If an error occurs, or the end of the file is reached, the |
| > return value is a short item count (or zero). |
| > |
| > The file position indicator for the stream is advanced by the number |
| > of bytes successfully read or written. |
| > |
| > fread() does not distinguish between end-of-file and error, and |
| > callers must use feof(3) and ferror(3) to determine which occurred. |
| |
| This means that nread!=0 doesn't make much sense as an end condition for |
| the loop: nread==0 doesn't necessarily mean that EOF has been reached or |
| an error has occured (but that is usually the case) and nread!=0 doesn't |
| necessarily mean that EOF has not been reached or that no read errors |
| have occured. feof(3) and ferror(3) should be uses when using fread(3). |
| |
| Currently curl has to performs an extra fread(3) call to get a return |
| value equal to 0 to stop looping. |
| |
| This usually "works" (even though nread==0 shouldn't be interpreted as |
| EOF) if stdin is a pipe because EOF usually marks the "real" end of the |
| stream, so the extra fread(3) call will return immediately and the extra |
| read syscall won't be noticeable: |
| |
| bash-5.1$ strace -e read curl -s -F file=@- 0x0.st <<< a 2>&1 | |
| > tail -n 5 |
| read(0, "a\n", 4096) = 2 |
| read(0, "", 4096) = 0 |
| read(0, "", 4096) = 0 |
| http://0x0.st/oRs.txt |
| +++ exited with 0 +++ |
| bash-5.1$ |
| |
| But this doesn't work if curl is reading from stdin, stdin is a |
| terminal, and the EOF is being emulated using a shell with ^D. Two |
| consecutive ^D will be required in this case to actually make curl stop |
| reading: |
| |
| bash-5.1$ curl -F file=@- 0x0.st |
| a |
| ^D^D |
| http://0x0.st/oRs.txt |
| bash-5.1$ |
| |
| A possible workaround to this issue is to use a program that handles EOF |
| correctly to indirectly send data to curl's stdin: |
| |
| bash-5.1$ cat - | curl -F file=@- 0x0.st |
| a |
| ^D |
| http://0x0.st/oRs.txt |
| bash-5.1$ |
| |
| This patch makes curl handle EOF properly when using fread(3) in |
| file2memory() so that the workaround is not necessary. |
| |
| Since curl was previously ignoring read errors caused by this fread(3), |
| ferror(3) is also used in the condition of the loop: read errors and EOF |
| will have the same meaning; this is done to somewhat preserve the old |
| behaviour instead of making the command fail when a read error occurs. |
| |
| Closes #8701 |
| |
| - gen.pl: change wording for mutexed options |
| |
| Instead of saying "This option overrides NNN", now say "This option is |
| mutually exclusive to NNN" in the generated man page ouput, as the |
| option does not in all cases actually override the others but they are |
| always mutually exclusive. |
| |
| Ref: #8704 |
| Closes #8716 |
| |
| - curl: error out if -T and -d are used for the same URL |
| |
| As one implies PUT and the other POST, both cannot be used |
| simultaneously. |
| |
| Add test 378 to verify. |
| |
| Reported-by: Boris Verkhovskiy |
| Fixes #8704 |
| Closes #8715 |
| |
| - lib: remove exclamation marks |
| |
| ... from infof() and failf() calls. Make them less attention seeking. |
| |
| Closes #8713 |
| |
| - fail.d: tweak the description |
| |
| Reviewed-by: Daniel Gustafsson |
| Suggested-by: Robert Charles Muir |
| Ref: https://twitter.com/rcmuir/status/1514915401574010887 |
| |
| Closes #8714 |
| |
| Daniel Gustafsson (15 Apr 2022) |
| - docs: Fix missing semicolon in example code |
| |
| Multiple share examples were missing a semicolon on the line defining |
| the CURLSHcode variable. |
| |
| Closes: #8697 |
| Reported-by: Michael Kaufmann <mail@michael-kaufmann.ch> |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - infof: consistent capitalization of warning messages |
| |
| Ensure that all infof calls with a warning message are capitalized |
| in the same way. At some point we should probably set up a style- |
| guide for infof but until then let's aim for a little consistenncy |
| where we can. |
| |
| Closes: #8711 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| - RELEASE-NOTES: synced |
| |
| - [Matteo Baccan brought this change] |
| |
| perl: removed a double semicolon at end of line |
| |
| Remove double semicolons at end of line in Perl code. |
| |
| Closes: #8709 |
| Reviewed-by: Daniel Gustafsson <daniel@yesql.se> |
| |
| - curl_easy_header: fix typos in documentation |
| |
| Closes: #8694 |
| Reviewed-by: Daniel Stenberg <daniel@haxx.se> |
| |
| Marcel Raad (11 Apr 2022) |
| - appveyor: add Cygwin build |
| |
| Closes https://github.com/curl/curl/pull/8693 |
| |
| - appveyor: only add MSYS2 to PATH where required |
| |
| Closes https://github.com/curl/curl/pull/8693 |
| |
| Daniel Stenberg (10 Apr 2022) |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: fix memory leak |
| |
| Closes #8691 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: remove remote_addr which is not used in a meaningful way |
| |
| Closes #8689 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: enlarge H3_SEND_SIZE |
| |
| Make h3_SEND_SIZE larger because current value (20KiB) is too small |
| for the high latency environment. |
| |
| Closes #8690 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: fix HTTP/3 upload stall and avoid busy loop |
| |
| This commit fixes HTTP/3 upload stall if upload data is larger than |
| H3_SEND_SIZE. Only check writability of socket if a stream is |
| writable to avoid busy loop when QUIC flow control window is filled |
| up, or upload buffer is full. |
| |
| Closes #8688 |
| |
| - [Nick Banks brought this change] |
| |
| msh3: add support for QUIC and HTTP/3 using msh3 |
| |
| Considered experimental, as the other HTTP/3 backends. |
| |
| Closes #8517 |
| |
| - TODO: "SFTP with SCP://" |
| |
| - GHA: move bearssl jobs over from zuul |
| |
| Closes #8684 |
| |
| - data/DISABLED: disable test 313 on bearssl builds |
| |
| Closes #8684 |
| |
| - runtests: add 'bearssl' as testable feature |
| |
| Closes #8684 |
| |
| - GHA: add openssl3 jobs moved over from zuul |
| |
| Closes #8683 |
| |
| - schannel: remove dead code that will never run |
| |
| As the condition can't ever evaluate true |
| |
| Reported-by: Andrey Alifanov |
| Ref: #8675 |
| Closes #8677 |
| |
| - connecache: remove duplicate connc->closure_handle check |
| |
| The superfluous extra check could cause analyzer false positives |
| and doesn't serve any purpose. |
| |
| Closes #8676 |
| |
| - [MichaÅ Antoniak brought this change] |
| |
| mbedtls: remove server_fd from backend |
| |
| Closes #8682 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: use token when detecting :status header field |
| |
| Closes #8679 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: make curl 1ms faster |
| |
| Pass 0 for an already expired timer. |
| |
| Closes #8678 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: fix QUIC_IDLE_TIMEOUT |
| |
| QUIC_IDLE_TIMEOUT should be of type ngtcp2_duration which is |
| nanoseconds resolution. |
| |
| Closes #8678 |
| |
| - English: use American spelling consistently |
| |
| Authorization, Initialization, Organization etc. |
| |
| Closes #8673 |
| |
| Daniel Gustafsson (5 Apr 2022) |
| - [Sascha Zengler brought this change] |
| |
| BUGS: Fix incorrect punctuation |
| |
| Closes #8672 |
| Reviewed-by: Daniel Gustafsson <daniel@yesql.se> |
| |
| Daniel Stenberg (4 Apr 2022) |
| - tool_listhelp.c: uppercase URL |
| |
| - RELEASE-NOTES: synced |
| |
| - http: streamclose "already downloaded" |
| |
| Instead of connclose()ing, since when HTTP/2 is used it doesn't need to |
| close the connection as stopping the current transfer is enough. |
| |
| Reported-by: Evangelos Foutras |
| Closes #8665 |
| |
| Jay Satiro (1 Apr 2022) |
| - ftp: fix error message for partial file upload |
| |
| - Show the count of bytes written on partial file upload. |
| |
| Prior to this change the error message mistakenly showed the count of |
| bytes read, not written. |
| |
| Bug: https://github.com/curl/curl/discussions/8637 |
| Reported-by: Taras Kushnir |
| |
| Closes https://github.com/curl/curl/pull/8649 |
| |
| Daniel Stenberg (1 Apr 2022) |
| - http: correct the header error message to say colon |
| |
| Not semicolon |
| |
| Reported-by: Gisle Vanem |
| Ref: #8666 |
| Closes #8667 |
| |
| - lib: #ifdef on USE_HTTP2 better |
| |
| ... as nghttp2 might not be the library that provides HTTP/2 support. |
| |
| Closes #8661 |
| |
| - [MichaÅ Antoniak brought this change] |
| |
| mbedtls: remove 'protocols' array from backend when ALPN is not used |
| |
| Closes #8663 |
| |
| - http2: RST the stream if we stop it on our own will |
| |
| For the "simulated 304" case the done-call isn't considered "premature" |
| but since the server didn't close the stream it needs to be reset to |
| stop delivering data. |
| |
| Closes #8664 |
| |
| - http: close the stream (not connection) on time condition abort |
| |
| Closes #8664 |
| |
| - http2: handle DONE called for the paused stream |
| |
| As it could otherwise stall all streams on the connection |
| |
| Reported-by: Evangelos Foutras |
| Fixes #8626 |
| Closes #8664 |
| |
| - tls: make mbedtls and NSS check for h2, not nghttp2 |
| |
| This makes them able to also negotiate HTTP/2 even when built to use |
| hyper for h2. |
| |
| Closes #8656 |
| |
| - tests/libtest/lib670.c: fixup the copyright year range |
| |
| follow-up to b54e18640ea4b7 |
| |
| - [Leandro Coutinho brought this change] |
| |
| lib670: avoid double check result |
| |
| Closes #8660 |
| |
| - vtls: use a generic "ALPN, server accepted" message |
| |
| Closes #8657 |
| |
| - vtls: use a backend standard message for "ALPN: offers %s" |
| |
| I call it VTLS_INFOF_ALPN_OFFER_1STR, the '1str' meaning that the |
| infof() call also needs a string argument: the ALPN ID. |
| |
| Closes #8657 |
| |
| - [Christian Schmitz brought this change] |
| |
| strcase.h: add comment about the return code |
| |
| Tool often we run into expecting this to work like strcmp, but it |
| returns 1 instead of 0 for match. |
| |
| Closes #8658 |
| |
| - vtls: provide a unified APLN-disagree string for all backends |
| |
| Also rephrase to make it sound less dangerous: |
| |
| "ALPN: server did not agree on a protocol. Uses default." |
| |
| Reported-by: Nick Coghlan |
| Fixes #8643 |
| Closes #8651 |
| |
| - projects/README: converted to markdown |
| |
| Closes #8652 |
| |
| - misc: spelling fixes |
| |
| Mostly in comments but also in the -w documentation for headers_json. |
| |
| Closes #8647 |
| |
| - KNOW_BUGS: HTTP3/Transfer closed with n bytes remaining to read |
| |
| "HTTP/3 does not support client certs" considered fixed, at least with |
| the ngtcp2 backend. |
| |
| Closes #8523 |
| |
| - CURLOPT_PREQUOTE.3: only works for FTP file transfers, not dirs |
| |
| Also add to quote.d. Add to TODO as something to add in a future. |
| |
| Reported-by: anon00000000 on github |
| Closes #8602 |
| Closes #8648 |
| |
| - RELEASE-NOTES: synced |
| |
| - pop3/smtp: return *WEIRD_SERVER_REPLY when not understood |
| |
| This leaves the CURLE_RECV_ERROR error code for explicit failure to |
| receive network data and allows users to better separate the problems. |
| |
| Ref #8356 |
| Reported-by: Rianov Viacheslav |
| Closes #8506 |
| |
| - docs: lots of minor language polish |
| |
| Mostly based on recent language decisions from "everything curl": |
| |
| - remove contractions (isn't => is not) |
| - *an* HTTP (consistency) |
| - runtime (no hyphen) |
| - backend (no hyphen) |
| - URL is uppercase |
| |
| Closes #8646 |
| |
| Jay Satiro (29 Mar 2022) |
| - projects: Update VC version names for VS2017, VS2022 |
| |
| - Rename VC15 -> VC14.10, VC17 -> VC14.30. |
| |
| The projects directory that holds the pre-generated Visual Studio |
| project files uses VC<ver> to indicate the MSVC version. At some point |
| support for Visual Studio 2017 (Visual Studio version 15 which uses MSVC |
| 14.10) was added as VC15. Visual Studio 2022 (Visual Studio version 17 |
| which uses MSVC 14.30) project files were recently added and followed |
| that same format using VC17. |
| |
| There is no such MSVC version (yet) as VC15 or VC17. |
| |
| For VS 2017 for example, the name we use is correct as either VS17, |
| VS2017, VC14.10. I opted for the latter since we use VC for earlier |
| versions (eg VC10, VC12, etc). |
| |
| Ref: https://github.com/curl/curl/pull/8438#issuecomment-1037070192 |
| |
| Closes https://github.com/curl/curl/pull/8447 |
| |
| Daniel Stenberg (29 Mar 2022) |
| - mqtt: better handling of TCP disconnect mid-message |
| |
| Reported-by: Jenny Heino |
| Bug: https://hackerone.com/reports/1521610 |
| Closes #8644 |
| |
| - CURLOPT_DISALLOW_USERNAME_IN_URL.3: use uppercase URL |
| |
| - [Ian Blanes brought this change] |
| |
| docs/DYNBUF: clarify documentation for Curl_dyn_ptr and Curl_dyn_uptr |
| |
| Closes #8606 |
| |
| - [Ian Blanes brought this change] |
| |
| curl: fix segmentation fault for empty output file names. |
| |
| Function glob_match_url set *result to NULL when called with filename = |
| "", producing an indirect NULL pointer dereference. |
| |
| Closes #8606 |
| |
| - TODO: Read keys from ~/.ssh/id_ecdsa, id_ed25519 |
| |
| It would be nice to expand the list of key locations curl uses for the |
| newer key types supported by libssh2. |
| |
| Closes #8586 |
| |
| - ngtcp2: update to work after recent ngtcp2 updates |
| |
| Assisted-by: Tatsuhiro Tsujikawa |
| Reported-by: jurisuk on github |
| Fixes #8638 |
| Closes #8639 |
| |
| - [Farzin brought this change] |
| |
| CURLOPT_PROGRESSFUNCTION.3: fix typo in example |
| |
| Closes #8636 |
| |
| - curl/header_json: output the header names in lowercase |
| |
| To better allow json[āheaderā]. |
| |
| Reported-by: Peter Korsgaard |
| Bug: https://daniel.haxx.se/blog/2022/03/24/easier-header-picking-with-curl/comment-page-1/#comment-25878 |
| Closes #8633 |
| |
| - RELEASE-NOTES: synced |
| |
| - headers.h: make Curl_headers_push() be CURLE_OK when not built |
| |
| ... to avoid errors when the function isn't there. |
| |
| Reported-by: Marcel Raad |
| Fixes #8627 |
| Closes #8628 |
| |
| - scripts: move three scripts from lib/ to scripts/ |
| |
| Move checksrc.pl, firefox-db2pem.sh and mk-ca-bundle.pl since they don't |
| particularly belong in lib/ |
| |
| Also created an EXTRA_DIST= in scripts/Makefile.am instead of specifying |
| those files in the root Makefile.am |
| |
| Closes #8625 |
| |
| Marc Hoersken (23 Mar 2022) |
| - lib/warnless.[ch]: only check for WIN32 and ignore _WIN32 |
| |
| curl_setup.h automatically defines WIN32 if just _WIN32 is defined. |
| |
| Therefore make sure curl_setup.h is included through warnless.h. |
| |
| Reviewed-by: Daniel Stenberg |
| Reviewed-by: Jay Satiro |
| |
| Closes #8594 |
| |
| - tests/server/util.h: align WIN32 condition with util.c |
| |
| There is no need to test for both _WIN32 and WIN32 as curl_setup.h |
| automatically defines the later if the first one is defined. |
| |
| Also tests/server/util.c is only checking for WIN32 arouund the |
| implementation of win32_perror, so just defining _WIN32 |
| would not be sufficient for a successful compilation. |
| |
| Reviewed-by: Daniel Stenberg |
| Reviewed-by: Jay Satiro |
| |
| Closes #8594 |
| |
| Daniel Stenberg (22 Mar 2022) |
| - [Philip Heiduck brought this change] |
| |
| firefox-db2pem.sh: make the shell script safer |
| |
| Reported by lift |
| |
| Closes #8616 |
| |
| Jay Satiro (22 Mar 2022) |
| - gtls: fix build for disabled TLS-SRP |
| |
| Prior to this change if, at build time, the GnuTLS backend was found to |
| have TLS-SRP support (HAVE_GNUTLS_SRP) but TLS-SRP was disabled in curl |
| via --disable-tls-srp (!USE_TLS_SRP) then a build error would occur. |
| |
| Bug: https://curl.se/mail/lib-2022-03/0046.html |
| Reported-by: Robert Brose |
| |
| Closes https://github.com/curl/curl/pull/8604 |
| |
| - winbuild: Add a Visual Studio example to the README |
| |
| - Add an example that explains in detail how the user can add libcurl to |
| their Visual Studio project. |
| |
| Ref: https://github.com/curl/curl/issues/8591 |
| |
| Closes https://github.com/curl/curl/pull/8592 |
| |
| - docs/opts: Mention Schannel client cert type is P12 |
| |
| Schannel backend code behaves same as Secure Transport, it expects a P12 |
| certificate file or the name of a certificate already in the user's OS |
| key store. Also, both backends ignore CURLOPT_SSLKEY (tool: --key) |
| because they expect the private key to already be available from the |
| keystore or P12 certificate. |
| |
| Ref: https://github.com/curl/curl/discussions/8581#discussioncomment-2337260 |
| |
| Closes https://github.com/curl/curl/pull/8587 |
| |
| Daniel Stenberg (22 Mar 2022) |
| - lib1945: fix compiler warning 4706 on MSVC |
| |
| Follow-up from d1e4a677340c |
| |
| Closes #8623 |
| |
| - [Philip Heiduck brought this change] |
| |
| ci/event-based.yml: improve impacket install |
| |
| skip python3-pip |
| install impacket with library module |
| |
| Closes #8621 |
| |
| - test1459: disable for oldlibssh |
| |
| This test with libssh 0.9.3 works fine on github but fails on circleci. |
| Might as well disable this test for oldlibssh installations. |
| |
| Closes #8622 |
| |
| - test1135: sync with recent API updates |
| |
| This test verifies that the order of functions in public headers remain |
| the same but hasn't been updated to care for recently added header |
| files. The order is important for some few platforms - or VERSIONINFO |
| needs to updated. |
| |
| This fix also updates VERSIONINFO to be sure. |
| |
| Closes #8620 |
| |
| - curl_easy_nextheader.3: fix two typos |
| |
| Reported-by: Timothe Litt |
| Bug: https://curl.se/mail/lib-2022-03/0060.html |
| |
| - options: remove mistaken space before paren in prototype |
| |
| - cirrus: add --enable-headers-api for some windows builds |
| |
| - GHA: --enable-headers-api in all workflows |
| |
| - lib: make the headers API depend on --enable-headers-api |
| |
| - configure: add --enable-headers-api to enable the headers API |
| |
| Defaults to disabled while labeled EXPERIMENTAL. |
| |
| Make all the headers API tests require 'headers-api' to run. |
| |
| - test1671: verify -w '%{header_json} |
| |
| - test1670: verify -w %header{} |
| |
| - curl: add %{header_json} support in -w handling |
| |
| Outputs all response headers as a JSON object. |
| |
| - curl: add %header{name} support in -w handling |
| |
| Outputs the response header 'name' |
| |
| - header api: add curl_easy_header and curl_easy_nextheader |
| |
| Add test 1940 to 1946 to verify. |
| |
| Closes #8593 |
| |
| - test1459: remove the different exit code for oldlibssh |
| |
| When using libssh/0.9.3/openssl/zlib, we seem to be getting the "right" |
| error code. |
| |
| Closes #8490 |
| |
| - libssh: unstick SFTP transfers when done event-based |
| |
| Test 604 and 606 (at least). |
| |
| Closes #8490 |
| |
| - gha: move the event-based test over from Zuul |
| |
| Switched libssh2 to libssh |
| |
| Closes #8490 |
| |
| - RELEASE-NOTES: synced |
| |
| - http: return error on colon-less HTTP headers |
| |
| It's a protocol violation and accepting them leads to no good. |
| |
| Add test case 398 to verify |
| |
| Closes #8610 |
| |
| - test718: edited slightly to return better HTTP |
| |
| Since hyper is picky and won't play ball otherwise. |
| |
| Bug: https://github.com/hyperium/hyper/issues/2783 |
| Reported-by: Daniel Valenzuela |
| Closes #8614 |
| |
| - hyper: no h2c support |
| |
| Make tests require h2c feature present to run, and only set h2c if |
| nghttp2 is used in the build. Hyper does not support it. |
| |
| Remove those tests from DISABLED |
| |
| Fixes #8605 |
| Closes #8613 |
| |
| - configure: bump the copyright year range int the generated output |
| |
| - [Andreas Falkenhahn brought this change] |
| |
| BINDINGS.md: add Hollywood binding |
| |
| Closes #8609 |
| |
| - HISTORY: add some 2022 data |
| |
| - scripts/copyright.pl: ignore the new mlc_config.json file |
| |
| - [Philip Heiduck brought this change] |
| |
| mlc_config.json: add file to ignore known troublesome URLs |
| |
| This is the config file for the CI markdown link checker and lets us |
| filter URLs that are known to cause problems. Like |
| https://curl.zuul.vexxhost.dev/ for now. |
| |
| Closes #8597 |
| |
| - [Philip Heiduck brought this change] |
| |
| winbuild/README.md: fixup dead link |
| |
| Closes #8597 |
| |
| Jay Satiro (18 Mar 2022) |
| - rtsp: don't let CSeq error override earlier errors |
| |
| - When done, if an error has already occurred then don't check the |
| sequence numbers for mismatch. |
| |
| A sequence number may not have been received if an error occurred. |
| |
| Prior to this change a sequence mismatch error would override earlier |
| errors. For example, a server that returns nothing would cause error |
| CURLE_GOT_NOTHING in Curl_http_done which was then overridden by |
| CURLE_RTSP_CSEQ_ERROR in rtsp_done. |
| |
| Closes https://github.com/curl/curl/pull/8525 |
| |
| - lib: fix some misuse of curlx_convert_wchar_to_UTF8 |
| |
| curlx_convert_wchar_to_UTF8 must be freed by curlx_unicodefree, but |
| prior to this change some uses mistakenly called free. |
| |
| I've reviewed all other uses of curlx_convert_wchar_to_UTF8 and |
| curlx_convert_UTF8_to_wchar. |
| |
| Ref: https://github.com/curl/curl/commit/1d5d0ae |
| |
| Closes https://github.com/curl/curl/pull/8521 |
| |
| - mk-ca-bundle.pl: Use stricter logic to process the certificates |
| |
| .. and bump version to 1.29. |
| |
| This change makes the script properly ignore unknown blocks and |
| otherwise fail when Mozilla changes the certdata format in ways we |
| don't expect. Though this is less flexible behavior it makes it far less |
| likely that an invalid certificate can slip through. |
| |
| Prior to this change the state machine did not always properly reset, |
| and it was possible that a certificate marked as invalid could then |
| later be marked as valid when there was conflicting trust info or |
| an unknown block was erroneously processed as part of the certificate. |
| |
| Ref: https://github.com/curl/curl/pull/7801#pullrequestreview-768384569 |
| |
| Closes https://github.com/curl/curl/pull/8411 |
| |
| Marcel Raad (17 Mar 2022) |
| - test375: fix line endings on Windows |
| |
| Closes https://github.com/curl/curl/pull/8599 |
| |
| Daniel Stenberg (17 Mar 2022) |
| - http: reject header contents with nul bytes |
| |
| They are not allowed by the protocol and allowing them risk that curl |
| misbehaves somewhere where C functions are used but won't work on the |
| full contents. Further, they are not supported by hyper and they cause |
| problems for the new coming headers API work. |
| |
| Updated test 262 to verify and enabled it for hyper as well |
| |
| Closes #8601 |
| |
| - [Philip Heiduck brought this change] |
| |
| CI: Do not use buildconf. Instead, just use: autoreconf -fi |
| |
| Closes #8596 |
| |
| - RELEASE-NOTES: synced |
| |
| Jay Satiro (14 Mar 2022) |
| - libssh: Improve fix for missing SSH_S_ stat macros |
| |
| - If building libcurl against an old libssh version missing SSH_S_IFMT |
| and SSH_S_IFLNK then use the values from a supported version. |
| |
| Prior to this change if libssh did not define SSH_S_IFMT and SSH_S_IFLNK |
| then S_IFMT and S_IFLNK, respectively, were used instead. The problem |
| with that is the user's S_ stat macros don't have the same values across |
| platforms. For example Windows has values different from Linux. |
| |
| Follow-up to 7b0fd39. |
| |
| Ref: https://github.com/curl/curl/pull/8511#discussion_r815292391 |
| Ref: https://github.com/curl/curl/pull/8574 |
| |
| Closes https://github.com/curl/curl/pull/8588 |
| |
| Marc Hoersken (13 Mar 2022) |
| - tool and tests: force flush of all buffers at end of program |
| |
| On Windows data can be lost in buffers in case of abnormal program |
| termination, especially in process chains as seen due to flaky tests. |
| Therefore flushing all buffers manually should avoid this data loss. |
| |
| In the curl tool we play the safe game by only flushing write buffers, |
| but in the testsuite where we manage all buffers, we flush everything. |
| |
| This should drastically reduce Windows CI and testsuite flakiness. |
| |
| Reviewed-by: Daniel Stenberg |
| |
| Supersedes #7833 and #6064 |
| Closes #8516 |
| |
| Daniel Stenberg (12 Mar 2022) |
| - [Jan Venekamp brought this change] |
| |
| BearSSL: add CURLOPT_SSL_CTX_FUNCTION support |
| |
| Closes #8478 |
| |
| - [Jan Venekamp brought this change] |
| |
| BearSSL: add CURLOPT_SSL_CIPHER_LIST support |
| |
| Closes #8477 |
| |
| Dan Fandrich (11 Mar 2022) |
| - tool_cb_hdr: Turn the Location: into a terminal hyperlink |
| |
| This turns even relative URLs into clickable hyperlinks in a supported |
| terminal when --styled-output is enabled. Many terminals already turn |
| URLs into clickable links but there is not enough information in a |
| relative URL to do this automatically otherwise. |
| |
| - keepalive-time.d: It takes many probes to detect brokenness |
| |
| Daniel Stenberg (11 Mar 2022) |
| - [HexTheDragon brought this change] |
| |
| curl: add --no-clobber |
| |
| Does not overwrite output files if they already exist |
| |
| Closes #7708 |
| Co-authored-by: Daniel Stenberg |
| |
| - RELEASE-NOTES: synced |
| |
| also bump next pending version to become 7.83.0 |
| |
| - [Jean-Philippe Menil brought this change] |
| |
| openssl: check SSL_get_peer_cert_chain return value |
| |
| Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com> |
| Closes #8579 |
| |
| - [Jay Satiro brought this change] |
| |
| mk-ca-bundle.vbs: delete this script in favor of mk-ca-bundle.pl |
| |
| mk-ca-bundle.vbs is a Windows-specific script for Mozilla certificate |
| extraction, similar to mk-ca-bundle.pl which runs on any platform. The |
| vbs version has not been maintained while the perl version has been |
| maintained with improvements and security fixes. I don't think it's |
| worth the work to maintain both versions. Windows users should be able |
| to use mk-ca-bundle.pl without any problems, as long as they have perl. |
| |
| Closes #8412 |
| |
| - CURLSHOPT_UNLOCKFUNC.3: fix the callback prototype |
| |
| Copy and paste error |
| |
| Reported-by: Francisco Olarte |
| Fixes #8573 |
| Closes #8577 |
| |
| - remove-on-error.d: typo |
| |
| Reported-by: Colin Leroy |
| Bug: https://github.com/curl/curl/pull/8503#pullrequestreview-906520081 |
| |
| - curl: add --remove-on-error |
| |
| If a transfer returns an error, using this option makes curl remove the |
| leftover downloded (partial) local file before exiting. |
| |
| Added test 376 to verify |
| |
| Closes #8503 |
| |
| - libssh: fix build with old libssh versions |
| |
| ... that don't have the SSH_S_* defines. Spotted on a machine using |
| libssh 0.7.3 |
| |
| Closes #8574 |
| |
| - hyper: fix status_line() return code |
| |
| Detected while working on #7708 that happened to trigger an error here |
| with a new test case. |
| |
| Closes #8572 |
| |
| - [Alejandro R. SedeƱo brought this change] |
| |
| configure.ac: move -pthread CFLAGS setting back where it used to be |
| |
| The fix for #8276 proposed in #8374 set `CFLAGS="$CFLAGS -pthead"` |
| earlier than it used to be set, applying it in cases where it should not |
| have been applied. |
| |
| This moves the AIX XLC check to a new `case $host in` block inside of |
| the `if test "$USE_THREADS_POSIX" != "1"` block, where `CFLAGS="$CFLAGS |
| -pthead"` used to happen. |
| |
| Fixes #8541 |
| Closes #8542 |
| |
| - [Tatsuhiro Tsujikawa brought this change] |
| |
| ngtcp2: add client certificate authentication for OpenSSL |
| |
| Closes #8522 |
| |
| - tool_operate: fix a scan-build warning |
| |
| ... and avoid the temp storing of the return code in a diff variable. |
| |
| Closes #8565 |
| |
| - test375: verify that --proxy errors out if proxy is disabled in the build |
| |
| Closes #8565 |
| |
| - curl: error out when options need features not present in libcurl |
| |
| Trying to use a proxy when libcurl was built with proxy support disabled |
| should make curl error out properly. |
| |
| Remove knowledge of disabled features from the tool code and instead |
| make it properly respond to what libcurl returns. Update all tests to |
| properly require the necessary features to be present/absent so that the |
| test suite can still be run even with libcurl builds with disabled |
| features. |
| |
| Ref: https://curl.se/mail/archive-2022-03/0013.html |
| Closes #8565 |
| |
| - ngtcp2: disconnect the QUIC connection proper |
| |
| Reported-by: mehatzri on github |
| Reviewed-by: Tatsuhiro Tsujikawa |
| Fixes #8534 |
| closes #8569 |
| |
| Dan Fandrich (9 Mar 2022) |
| - test386: Fix an incorrect test markup tag |
| |
| Daniel Stenberg (9 Mar 2022) |
| - [Don J Olmstead brought this change] |
| |
| nonblock: restore setsockopt method to curlx_nonblock |
| |
| The implementation using setsockopt was removed when BeOS support was |
| purged. However this functionality wasn't BeOS specific, it is still |
| used by for example Orbis OS (Playstation 4/5 OS). |
| |
| Closes #8562 |
| |
| - openssl: fix CN check error code |
| |
| Due to a missing 'else' this returns error too easily. |
| |
| Regressed in: d15692ebb |
| |
| Reported-by: Kristoffer Gleditsch |
| Fixes #8559 |
| Closes #8560 |
| |
| - [Frank Meier brought this change] |
| |
| connect: make Curl_getconnectinfo work with conn cache from share handle |
| |
| Closes #8524 |