]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
5 months agosetopt: an "illegal" auth set with CURLOPT_SOCKS5_AUTH returns error bagder/reject-bad-socks5-auth 16617/head
Daniel Stenberg [Fri, 7 Mar 2025 22:01:33 +0000 (23:01 +0100)] 
setopt: an "illegal" auth set with CURLOPT_SOCKS5_AUTH returns error

The check was just wrong before.

Regression introduced in 30da1f5974d34841b30c4fac3

Bug: https://issues.oss-fuzz.com/issues/401430844

5 months agoopenssl-quic: do not iterate over multi handles
Stefan Eissing [Fri, 7 Mar 2025 12:09:16 +0000 (13:09 +0100)] 
openssl-quic: do not iterate over multi handles

Iterate over the filters stream hash instead, lookup easy handles
at the multi when needed.

This also limits to pollset array sizes to the number of streams
on the connection and not the total number of transfers in the multi.

Closes #16611

5 months agoGHA/windows: ignore flaky 2310 with MSVC again
Viktor Szakats [Fri, 7 Mar 2025 13:28:04 +0000 (14:28 +0100)] 
GHA/windows: ignore flaky 2310 with MSVC again

Follow-up to 1bd5ac998bbc943dbf812b2824ad0f532201734c #16570

5 months agotests/server: round of tidy-ups (part 2)
Viktor Szakats [Sun, 22 Sep 2024 15:48:17 +0000 (17:48 +0200)] 
tests/server: round of tidy-ups (part 2)

General tidy-ups, to identify and reduce duplications and potential
issues, while also making the server modules compile as a single binary.

- ensure unique symbols and no shadowing across server sources, by
  renaming variables.
- move globals common to multiple servers into shared `util` module.
- drop constants with a single use.
- undef macro before re-using them across server sources.
- move common functions into shared `util` module.
- drop redundant static declarations.
- disable IPv6 code when built without IPv6.
- start syncing the 3 almost identical copies of `sockdaemon` function.
- drop unused `timeval.h` header.
- drop `poll()` from `wait_ms()`, for macOS, following an earlier core
  update.
  Follow-up to c72cefea0fadaf4114a0036c86005ee5739ec30a #15096

Follow-up to 9213e4e497d575d2bc2c9265d40da6c5549f526d #16525
Cherry-picked from #15000
Closes #16609

5 months agowolfssl: fix unused variable warning
Viktor Szakats [Fri, 7 Mar 2025 03:40:08 +0000 (04:40 +0100)] 
wolfssl: fix unused variable warning

E.g. when building against msys2-mingw wolfssl:
https://packages.msys2.org/base/mingw-w64-wolfssl

```
lib/vtls/wolfssl.c: In function 'wssl_verify_pinned':
lib/vtls/wolfssl.c:1534:20: error: unused variable 'wssl' [-Werror=unused-variable]
   struct wssl_ctx *wssl = (struct wssl_ctx *)connssl->backend;
                    ^~~~
```
Ref: https://github.com/curl/curl/actions/runs/13713131802/job/38353245932#step:10:78

Building with the MSYS2 wolfssl is broken due to further issues.

Closes #16608

5 months agocmake: `CURL_LIBDIRS` improvements (upstreamed from vcpkg)
Viktor Szakats [Tue, 25 Feb 2025 15:27:15 +0000 (16:27 +0100)] 
cmake: `CURL_LIBDIRS` improvements (upstreamed from vcpkg)

Apply downstream patches from the vcpkg project:

- cmake: remove duplicates from `CURL_LIBDIRS`.

- cmake: set `CURL_LIBDIRS` as `INTERFACE_LINK_DIRECTORIES` for static
  libcurl.
  To support CMake <3.13, change downstream patch from:
  ```cmake
  target_link_directories(${LIB_STATIC} INTERFACE ${CURL_LIBDIRS})
  ```
  to:
  ```cmake
  set_target_properties(${LIB_STATIC} PROPERTIES [...] INTERFACE_LINK_DIRECTORIES "${CURL_LIBDIRS}")
  ```

Co-authored-by: Kai Pastor
Ref: https://github.com/microsoft/vcpkg/pull/43819

Closes #16610

5 months agobuild: cmake multi-pkg-config detection improvements (brotli, ldap, mbedtls)
Viktor Szakats [Tue, 25 Feb 2025 15:36:21 +0000 (16:36 +0100)] 
build: cmake multi-pkg-config detection improvements (brotli, ldap, mbedtls)

Apply downstream patch from the vcpkg project:

- cmake/FindBrotli: streamline detecting multiple pkg-config modules.
  Add `libbrotlicommon` to `Requires.private` in `libcurl.pc`.

Apply the above idea to the rest of multi-module dependencies:

- cmake/FindMbedTLS: streamline detecting multiple pkg-config modules
  Add `mbedx509`, `mbedcrypto` to `Requires.private` in `libcurl.pc`.

- cmake/FindLDAP: streamline detecting multiple pkg-config modules

And sync these changes with autotools, and add `libbrotlicommon`,
`mbedx509`, `mbedcrypto` to `Requires.private`.

Co-authored-by: Kai Pastor
Ref: https://github.com/microsoft/vcpkg/pull/43819

Closes #16479

5 months agourl: call protocol handler's disconnect in Curl_conn_free
Daniel Stenberg [Fri, 7 Mar 2025 08:32:57 +0000 (09:32 +0100)] 
url: call protocol handler's disconnect in Curl_conn_free

For the case when the connection struct is all setup, the protocol
handler allocates data in its setup_connection function, but the
connection struct is discarded again before used further because a
connection reuse is prefered. Then the handler's disconnect function was
not previously called, which then would lead to a memory leak.

I added test case 698 that reproduces the leak and the fix.

Reported-by: Philippe Antoine
Closes #16604

5 months agongtcp2: do not iterate over multi handles
Stefan Eissing [Fri, 7 Mar 2025 09:17:25 +0000 (10:17 +0100)] 
ngtcp2: do not iterate over multi handles

There was on place left iterating over `multi->process` list which was
unnecessary. Remove that.

Closes #16606

5 months agosrc: cleanup ISBLANK vs ISSPACE
Daniel Stenberg [Thu, 6 Mar 2025 10:01:55 +0000 (11:01 +0100)] 
src: cleanup ISBLANK vs ISSPACE

- use ISBLANK() where only spaces and tabs should match
- change while(x && ISBLANK(X)) => while(ISBLANK(x))

Closes #16589

5 months agoGHA/macos: add initial pytest support
Viktor Szakats [Thu, 27 Feb 2025 16:06:58 +0000 (17:06 +0100)] 
GHA/macos: add initial pytest support

Add support for running pytest in GHA/macos jobs.

Experimental, with caveats:
- slow.
- `httpd` often fails to start.
- 10-15 tests (depending on C compiler) fail consistently:
  02_20, 02_33, 02_34, 03_01, 03_03, 05_04, 07_42.
- Homebrew build of vsftpd misses TLS support.
- `nghttpx` temporarily disabled for pytest.

You can test pytest by adding `install_steps: pytest` to a job.

Closes #16518

5 months agosetopt: setting PROXYUSERPWD after PROXYUSERNAME/PASSWORD is fine 16601/head
Daniel Stenberg [Thu, 6 Mar 2025 22:40:17 +0000 (23:40 +0100)] 
setopt: setting PROXYUSERPWD after PROXYUSERNAME/PASSWORD is fine

Prevent the previous memory leak. Adjusted test 590 to reproduce the
problem then verify the fix.

Fixes #16599
Reported-by: Catena cyber
Closes #16601

5 months agodoh: improve HTTPS RR svcparams parsing
Harry Sintonen [Thu, 6 Mar 2025 19:42:43 +0000 (21:42 +0200)] 
doh: improve HTTPS RR svcparams parsing

Fixed a heap read overflow when parsing the HTTP RR svcparams. Also the
code failed to enforce the requirements of SvcParamKey order specified
in section 2.2 of the RFC 9460.

Closes #16598

5 months agoGHA/windows: drop `handle64.exe`
Viktor Szakats [Tue, 25 Feb 2025 17:09:02 +0000 (18:09 +0100)] 
GHA/windows: drop `handle64.exe`

To test its effect on stability/flakiness of Windows jobs.

Ref: https://github.com/curl/curl/pull/16484#issuecomment-2705016375
Cherry-picked from #16484
Closes #16600

5 months agosectransp: add support for HTTP/2 in gcc builds
Viktor Szakats [Wed, 5 Mar 2025 23:17:08 +0000 (00:17 +0100)] 
sectransp: add support for HTTP/2 in gcc builds

Before this patch `--http2` did not work in gcc builds with Secure
Transport, because ALPN relied on a compiler supporting the
`HAVE_BUILTIN_AVAILABLE` aka `__builtin_available()` feature. This
is clang-specific and missing from gcc (as of gcc v14).

Add support for ALPN and HTTP/2 when this compiler feature is missing.

Also drop test exceptions from GHA/macos in CI.

Follow-up to 092f6815c808489f1cea3df8449e16dff2c35e6b
Ref: c349bd668c91f2484ae21c0f361ddf497143093c #14097 (issue 15.)
Ref: #4314

Closes #16581

5 months agotests: reformat error messages to avoid tripping MSBuild
Viktor Szakats [Thu, 6 Mar 2025 03:13:23 +0000 (04:13 +0100)] 
tests: reformat error messages to avoid tripping MSBuild

Change the format of error messages sent to stderr from tests and test
servers. As a workaround to avoid triggering Visual Studio's MSBuild
tool's built-in regexp matcher, and making it mark builds failed for
reasons we don't want them to hard fail.

Roughly, the pattern to avoid is the word "error" (case-insensitive)
in the same line with a colon `:`.

It affected GHA/windows MSVC CI jobs, causing flakiness:
```
CUSTOMBUILD : fopen() failed with error : 13 Permission denied [D:\a\curl\curl\bld\tests\test-ci.vcxproj]
  Error opening file: log/4/smtp_sockfilt.log
[...]
CUSTOMBUILD : fopen() failed with error : 13 Permission denied [D:\a\curl\curl\bld\tests\test-ci.vcxproj]
  Error opening file: log/8/imap_sockfilt.log
  Msg not logged: 00:18:10.656000 > 178 bytes data, server => client
[...]
  TESTDONE: 1629 tests out of 1634 reported OK: 99%
  Building Custom Rule D:/a/curl/curl/tests/CMakeLists.txt
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(254,5): error MSB8066: Custom build for 'D:\a\curl\curl\bld\CMakeFiles\621f80ddbb0fa48179f056ca77842ff0\test-ci.rule;D:\a\curl\curl\tests\CMakeLists.txt' exited with code -1. [D:\a\curl\curl\bld\tests\test-ci.vcxproj]
Error: Process completed with exit code 1.
```
Ref: https://github.com/curl/curl/actions/runs/13643149623/job/38137076210?pr=16490#step:14:3125
Ref: https://github.com/curl/curl/actions/runs/13688765792/job/38277961720?pr=16582#step:14:1717

The `IgnoreStandardErrorWarningFormat="true"` MSBuild Exec option
controls this behavior:
https://learn.microsoft.com/visualstudio/msbuild/exec-task#parameters
I couldn't figure out a way to apply it to CMake builds.

MSBuid pattern matching rules:
https://github.com/dotnet/msbuild/blob/353c0f3d37957cc98bfa6a76b568d70d12193fc3/src/Shared/CanonicalError.cs
https://learn.microsoft.com/visualstudio/msbuild/msbuild-diagnostic-format-for-tasks

Note: There may be further error messages output from runtests scripts,
that use this format, which are not explicitly fatal. They may need
future fixes.

Thanks-to: Dion Williams
Ref: https://github.com/curl/curl/discussions/14854#discussioncomment-12382190
Ref: https://github.com/curl/curl/discussions/14854#discussioncomment-12395224

Closes #16583

5 months agowindows: do not use winsock2 `inet_ntop()`/`inet_pton()`
Viktor Szakats [Wed, 5 Mar 2025 17:06:37 +0000 (18:06 +0100)] 
windows: do not use winsock2 `inet_ntop()`/`inet_pton()`

Disable these winsock2 functions on Windows to use the curl wrappers
and preserve `WSAGetLastError()` aka `SOCKERRNO` error codes.

curl sources uses `inet_pton()` and `inet_ntop()` via its own `Curl_`
prefixed wrappers. These wrappers promise to not overwrite
`WSAGetLastError()` aka `SOCKERRNO` error codes when calling them.
But, for Windows builds with these built-in winsock2 functions detected
(meaning all supported Windows versions, except Windows CE),
the wrappers were 1-to-1 mapped to the winsock2 functions, which broke
this promise.

https://github.com/curl/curl/blob/b06c12b7248592cf001e621d7cd8dc78a827212b/lib/inet_ntop.c#L188-L190
https://github.com/curl/curl/blob/b06c12b7248592cf001e621d7cd8dc78a827212b/lib/inet_pton.c#L66-L70

These promises are old (a1d598399146984c99baa46db148e87c75261033) and
may not be valid anymore. In this case, the callers would have to be
updated to use `SOCKERRNO` to retrieve any error, instead of using
`errno` as they do now.

https://learn.microsoft.com/windows/win32/api/ws2tcpip/nf-ws2tcpip-inet_ntop
https://learn.microsoft.com/windows/win32/api/ws2tcpip/nf-ws2tcpip-inet_pton

Closes #16577

5 months agoRELEASE-NOTES: synced
Daniel Stenberg [Thu, 6 Mar 2025 15:48:46 +0000 (16:48 +0100)] 
RELEASE-NOTES: synced

5 months agows: corrected curlws_cont to reflect its documented purpose
Ethan Wilkes [Thu, 27 Feb 2025 22:21:28 +0000 (16:21 -0600)] 
ws: corrected curlws_cont to reflect its documented purpose

Verified in test 2311

Closes #16512

5 months agomulti: start the loop over when handles are removed
Daniel Stenberg [Tue, 4 Mar 2025 13:00:03 +0000 (14:00 +0100)] 
multi: start the loop over when handles are removed

Since more than one handle can be removed in a single call to
multi_runsingle(), we cannot easily continue on the next node when a
node has been removed since that node migth ALSO have been removed.

Reported-by: Philippe Antoine
Closes #16588

5 months agotool_parsecfg: make my_get_line skip comments and newlines
Daniel Stenberg [Thu, 6 Mar 2025 10:38:23 +0000 (11:38 +0100)] 
tool_parsecfg: make my_get_line skip comments and newlines

- brings this functionality to all users of this function automatically
  and consistently

- consistently returns every line without trailing \n

Closes #16590

5 months agodocs/HISTORY: add some events from the last year
Daniel Stenberg [Thu, 6 Mar 2025 09:07:01 +0000 (10:07 +0100)] 
docs/HISTORY: add some events from the last year

Closes #16587

5 months agotool_operate: change "1 retries" to "1 retry"
Zhang Wen [Thu, 6 Mar 2025 08:13:12 +0000 (16:13 +0800)] 
tool_operate: change "1 retries" to "1 retry"

Closes #16586

5 months agotests/certs: cleanup
Stefan Eissing [Thu, 6 Mar 2025 10:01:49 +0000 (11:01 +0100)] 
tests/certs: cleanup

Keep only the generated files needed for tests. Place generated
intermediaries in `tests/certs/gen` where they are ignored by git. No
longer generated `*.dhp` files.

Have a shorter naming scheme: `test-ca` instead of `EdelCurlRoot-ca` and
`test-localhost` instead of `Server-localhost-sv`, etc.

Remove the `stunnel` certificate as it was nearly a duplicate of
`test-localhost`.

No longer copy a generated certificates to `tests/stunnel.pem`. Let test
server default to `certs/test-localhost.pem` instead.

Closes #16593

5 months agoopenssl: fix pkcs11 URI checking for key files.
Martxel [Thu, 6 Mar 2025 10:54:49 +0000 (11:54 +0100)] 
openssl: fix pkcs11 URI checking for key files.

Closes #16591

5 months agocmake: fix detection pre-fills for iOS
Viktor Szakats [Thu, 6 Mar 2025 12:42:18 +0000 (13:42 +0100)] 
cmake: fix detection pre-fills for iOS

Follow-up to 1ecf2f11136f967deff6d2c124127250d2756c48 #16585
Follow-up to e7adf3e83747c2915c671f2e560cde6f3d4a4905 #15841

Closes #16594

5 months agoGHA/windows: drop test exclusions from MSYS jobs
Viktor Szakats [Thu, 6 Mar 2025 11:19:24 +0000 (12:19 +0100)] 
GHA/windows: drop test exclusions from MSYS jobs

Re-enable running tests 19, 504, 704, 705, 1233 in CI MSYS jobs.

We carried over these exceptions from AppVeyor CI, where they have been
present for a long time. Cygwin jobs do not need these exceptions and
Cygwin and MSYS are similar envs. Time to re-evaluate if skipping them
is still necessary on MSYS.

Closes #16592

5 months agobuild: set `HAVE_STDINT_H` if `stdint.h` is available
Viktor Szakats [Thu, 6 Mar 2025 03:58:58 +0000 (04:58 +0100)] 
build: set `HAVE_STDINT_H` if `stdint.h` is available

Ref: #15907

Closes #16585

5 months agotests: mark tests 1631, 1632 flaky
Viktor Szakats [Thu, 6 Mar 2025 03:43:49 +0000 (04:43 +0100)] 
tests: mark tests 1631, 1632 flaky

We already marked them flaky in GHA/macos CI. They are also flaky in
other CI jobs, in other OSes, with multiple TLS backends:
- MSVC/LibreSSL: https://github.com/curl/curl/actions/runs/13683996410/job/38262956317
- MSVC/wolfSSL: https://github.com/curl/curl/actions/runs/13680682695/job/38252047077
- FreeBSD/OpenSSL3: https://github.com/curl/curl/actions/runs/13690910863/job/38283867721#step:3:1

Ref: fa461b4eff52b413f88debf543b5350a6cef4724 #14486

Closes #16584

5 months agoGHA/macos: stop ignoring test 2100 with gcc
Viktor Szakats [Thu, 6 Mar 2025 00:57:55 +0000 (01:57 +0100)] 
GHA/macos: stop ignoring test 2100 with gcc

It runs fine now. Tested in all gcc-12 jobs after temporarly enabling
debug in them all (test 2100 requires debug-enabled).

Ref: c349bd668c91f2484ae21c0f361ddf497143093c #14097 (issue 15.)

Closes #16582

5 months agolib1156: pass longs to `curl_easy_setopt()`
Viktor Szakats [Wed, 5 Mar 2025 21:32:47 +0000 (22:32 +0100)] 
lib1156: pass longs to `curl_easy_setopt()`

To fix this test on macOS with the gcc compiler.

Also unignore test 1156 in GHA/macos.

Ref: c349bd668c91f2484ae21c0f361ddf497143093c #14097 (issue 15.)
Ref: 7b0240c07799c28dc84272f9e38e1092ce4cc498 #16539
Ref: 2ec00372a1fc7f27cd3a6c43e29007400acfe2b6 #16482

Closes #16579

5 months agocurl.h: switch `CURL_HTTP_VERSION*` enums to long constants
Viktor Szakats [Wed, 5 Mar 2025 21:32:28 +0000 (22:32 +0100)] 
curl.h: switch `CURL_HTTP_VERSION*` enums to long constants

It fixes tests 1539, and 2402, 2404 (for non-Secure Transport), on macOS
with the gcc compiler.

Also unignore these tests in GHA/macos for non-secure transport.

Ref: c349bd668c91f2484ae21c0f361ddf497143093c #14097 (issue 15.)
Ref: 7b0240c07799c28dc84272f9e38e1092ce4cc498 #16539
Ref: 2ec00372a1fc7f27cd3a6c43e29007400acfe2b6 #16482

Closes #16580

5 months agotests/certs: drop the empty .dhp files
Daniel Stenberg [Wed, 5 Mar 2025 14:28:06 +0000 (15:28 +0100)] 
tests/certs: drop the empty .dhp files

They are not used for anything.

Closes #16576

5 months agoGHA/macos: restore nghttp2 package for runtests HTTP/2 tests
Viktor Szakats [Wed, 5 Mar 2025 21:48:46 +0000 (22:48 +0100)] 
GHA/macos: restore nghttp2 package for runtests HTTP/2 tests

Regression from e7751571ebca9f18588a1905d7741a99be5ae96b #16517

5 months agoruntests: check and report if `diff` tool is missing
Viktor Szakats [Wed, 5 Mar 2025 17:38:57 +0000 (18:38 +0100)] 
runtests: check and report if `diff` tool is missing

To make it apparent which CI jobs are missing this tool, so we can
install it to improve the runtests log.

Correction to the followed-up commit: `diff` is not installed via the
`gcc` package but via `automake`. Meaning it needs be installed manually
for MSYS cmake jobs.

Follow-up to e6c78e18dac1da2027eac6dd3829a0fdbfa55501 #16571
Closes #16578

5 months agoGHA/windows: bump msys2 action, downgrade runtime for mingw tests
Viktor Szakats [Wed, 5 Mar 2025 13:55:30 +0000 (14:55 +0100)] 
GHA/windows: bump msys2 action, downgrade runtime for mingw tests

Bump msys2/setup-msys2 from 2.26.0 to 2.27.0. It brings the perf
regression experienced earlier with GfW and the pre-installed
MSYS2 on the GHA runner. Apply the runtime downgrade trick as
a workaround.

Fixes #16440
Fixes #16547
Closes #16574

5 months agoGHA/windows: stop ignoring most ignored test results
Viktor Szakats [Wed, 5 Mar 2025 10:50:02 +0000 (11:50 +0100)] 
GHA/windows: stop ignoring most ignored test results

These tests seem to be running no less stable now than others.
Stop ignoring their results to catch real issues.

These are consistently failing and remain on the ignore list:

in MSVC / vcpkg jobs:
```
FAIL-IGNORED 2302: 'WebSockets via callback (frame mode) + curl_ws_send()' WebSockets
FAIL-IGNORED 2303: 'WebSockets but gets a 200 back' WebSockets
FAIL-IGNORED 2307: 'WebSockets, overlong PING payload' WebSockets
```
https://github.com/curl/curl/actions/runs/13674664461/job/38233949942?pr=16570#step:14:4089
- Likely curl issues either in tests, server, or in WebSockets support.

in tests running under MSYS, affecting native mingw Windows builds only:
```
FAIL-IGNORED 612: 'SFTP post-quote remove file' SFTP, post-quote
[...]
 curl: (21) rm command failed: Operation failed
```
https://github.com/curl/curl/actions/runs/13674664461/job/38233952699?pr=16570#step:14:1378

in tests running under MSYS, affecting both MSYS and native mingw Windows builds:
```diff
FAIL-IGNORED 613: 'SFTP directory retrieval' SFTP, directory
[...]
 --- log/7/check-expected 2025-03-05 11:19:54.119658000 +0000
 +++ log/7/check-generated 2025-03-05 11:19:54.119658000 +0000
@@ -1,3 +1,3 @@
 d?????????    N U         U               N ???  N NN:NN asubdir[LF]
--rw?rw?rw?    1 U         U              37 Jan  1  2000 plainfile.txt[LF]
+-rw?r-?r-?    1 U         U              37 Jan  1  2000 plainfile.txt[LF]
 -r-?r-?r-?    1 U         U              47 Dec 31  2000 rofile.txt[LF]
```
https://github.com/curl/curl/actions/runs/13674664461/job/38233950866?pr=16570#step:14:1316
- Possibly a curl test portabibility, Perl or MSYS issue.

in Cygwin tests:
```
FAIL-IGNORED 615: 'SFTP put remote failure' SFTP, SFTP put, FAILURE
```
https://github.com/curl/curl/actions/runs/13674664461/job/38233949428?pr=16570#step:12:3817

Follow-up to adcfd4fb3e9be1de0e506728066bea2aaa53c394 #16553
Ref: #14854
Closes #16570

5 months agotool_getparam: parse_header() without strtok
Daniel Stenberg [Wed, 5 Mar 2025 12:43:48 +0000 (13:43 +0100)] 
tool_getparam: parse_header() without strtok

Read a provided header file line-by-line instead. Avoids strtok(),
avoids a possibly quite large malloc for the entire file.

Closes #16572

5 months agorequest: clear sendbuf_hds_len when resetting request bufq
OndÅ™ej Hlavatý [Wed, 5 Mar 2025 13:09:26 +0000 (14:09 +0100)] 
request: clear sendbuf_hds_len when resetting request bufq

Without this, any usage of sendbuf_hds_len on a retried request is
wrong. We noticed by getting debug callbacks with incorrect header len.
We did not figure out how to trigger the retries in a test environment
though.

Closes #16573

5 months agognutls: set priority via --ciphers
Stefan Eissing [Tue, 4 Mar 2025 14:50:12 +0000 (15:50 +0100)] 
gnutls: set priority via --ciphers

No longer ignore the `--ciphers` argument in gnutls curl builds, but use
it to set the gnutls priority string.

When the set ciphers start with '+', '-' or '!', it is *appended* to the
curl generated priority string. Otherwise it replaces the curl one
completely.

Add test_17_18 to check various combinations.

Closes #16557

5 months agoGHA/windows: always install diffutils for MSYS/mingw, required by `runtests`
Viktor Szakats [Wed, 5 Mar 2025 11:56:40 +0000 (12:56 +0100)] 
GHA/windows: always install diffutils for MSYS/mingw, required by `runtests`

To include the expected/generated diffs in the error log.

Also make it explicit for pure MSYS, though it was installed by `gcc`
before this patch.

Closes #16571

5 months agotool_dirhie: create dir hierarchy without strtok
Daniel Stenberg [Wed, 5 Mar 2025 08:10:21 +0000 (09:10 +0100)] 
tool_dirhie: create dir hierarchy without strtok

And use dynbuf

Closes #16566

5 months agotool_paramhlp: do --proto parsing without strtok
Daniel Stenberg [Wed, 5 Mar 2025 09:02:36 +0000 (10:02 +0100)] 
tool_paramhlp: do --proto parsing without strtok

Saves a strdup. Avoids a banned function.

Closes #16567

5 months agohttp_aws_sigv4: cannot be used for proxy
Daniel Stenberg [Wed, 5 Mar 2025 09:55:56 +0000 (10:55 +0100)] 
http_aws_sigv4: cannot be used for proxy

Make sure it is never attempted.

Reported-by: Philippe Antoine
Closes #16569

5 months agotests: make sure 'commands.log' is generated in the correct logdir
Daniel Stenberg [Wed, 5 Mar 2025 09:40:44 +0000 (10:40 +0100)] 
tests: make sure 'commands.log' is generated in the correct logdir

Closes #16568

5 months agohttp2: detect session being closed on ingress handling
Stefan Eissing [Tue, 4 Mar 2025 11:31:32 +0000 (12:31 +0100)] 
http2: detect session being closed on ingress handling

nghttp2 will on its own send GOAWAY frames, closing the connection, when
internal processing of frames runs into errors. This may not become
visible in a direct error code from a call to nghttp2.

Check for session being closed on ingress processing (on sending, we
already did that) and report an error if so. In addition, monitor
outgoing GOAWAY not initiated by us so that the user will get a fail
message when that happens.

Add some more long response header tests.

Closes #16544

5 months agohttp2: add on_invalid_frame callback for error detection
Stefan Eissing [Tue, 4 Mar 2025 10:48:04 +0000 (11:48 +0100)] 
http2: add on_invalid_frame callback for error detection

When the server sends HEADER/CONTINUATION frames that exceed nghttp2's
size, this error is being reported via the on_invalid_frame_recv
callback. Without registering there, it will go unnoticed.

RST the stream when such a frame is encountered.

Closes #16544

5 months agohttp2: reset stream on response header error
Stefan Eissing [Mon, 3 Mar 2025 13:05:34 +0000 (14:05 +0100)] 
http2: reset stream on response header error

We send a GOAWAY, but some servers ignore that and happily continue
sending the stream response. RST the stream when response header errors
are encountered.

Fixes #16535
Reported-by: Peng-Yu Chen
Closes #16544

5 months agosrc: avoid strdup on platforms not doing UTF8 conversions
Daniel Stenberg [Tue, 4 Mar 2025 16:50:37 +0000 (17:50 +0100)] 
src: avoid strdup on platforms not doing UTF8 conversions

... and use more const strings.

Closes #16560

5 months agodocs: adapt to removed --with-random
Orgad Shaneh [Wed, 5 Mar 2025 07:09:24 +0000 (09:09 +0200)] 
docs: adapt to removed --with-random

Amends 269fdd4c6ed5d837d57448ac977f6f300968df15.

Closes #16565

5 months agotool_getparam: parse --trace-config without strdup()/free()
Daniel Stenberg [Tue, 4 Mar 2025 16:12:46 +0000 (17:12 +0100)] 
tool_getparam: parse --trace-config without strdup()/free()

Closes #16559

5 months agoGHA/windows: drop running tests with dl-mingw 7.3.0 due to flakiness
Viktor Szakats [Wed, 5 Mar 2025 01:33:19 +0000 (02:33 +0100)] 
GHA/windows: drop running tests with dl-mingw 7.3.0 due to flakiness

This job was never stable. Bumping to -j8 (from -j4) possibly made it
flakier: 032447e6249bf87958b16eb0c97874490b711ec7 #16271

Keep this job for build tests and drop running tests to improve the CI
experience and save CI time.

It's also a simple build with no dependencies. CI continues to build
a similar job with 9.5.0, which is more stable.

It remains a puzzle why builds with this toolchain (7.3.0 win32 threads
mingw-builds) is flakier and requires more test exceptions than the
indentical build with a slightly different build/version of
the toolchain (9.5.0 posix threads winlibs_mingw).

Ref: #14854
Closes #16564

5 months agobuild: tidy-ups around `inet_pton`
Viktor Szakats [Wed, 5 Mar 2025 00:31:58 +0000 (01:31 +0100)] 
build: tidy-ups around `inet_pton`

- cmake: make the `inet_pton`/`inet_ntop` detection codepath explicit
  for WinCE. To not rely on an empty `HAVE_WIN32_WINNT`.

- tests/server/mqttd: drop `inet_pton` header and lib source.

- tests/server: move `inet_pton` lib source to a variable.

Closes #16563

5 months agotool_getparam: do parse_upload_flags without the alloc/free
Daniel Stenberg [Tue, 4 Mar 2025 14:32:19 +0000 (15:32 +0100)] 
tool_getparam: do parse_upload_flags without the alloc/free

Follow-up to 6758aa722ddf5a6

Closes #16552

5 months agoGHA: brew `--no-lock` an invalid option now, drop
Viktor Szakats [Tue, 4 Mar 2025 18:17:13 +0000 (19:17 +0100)] 
GHA: brew `--no-lock` an invalid option now, drop

```
Error: invalid option: --no-lock
```
Ref: https://github.com/curl/curl/actions/runs/13659344413/job/38186577572#step:2:655

Closes #16561

5 months agotests/server: replace `strerror` with `sstrerror` in socksd
Viktor Szakats [Tue, 4 Mar 2025 17:32:51 +0000 (18:32 +0100)] 
tests/server: replace `strerror` with `sstrerror` in socksd

To follow the `errno` -> `SOCKERRNO` update.

Missed from the previous commit.

Follow-up to adcfd4fb3e9be1de0e506728066bea2aaa53c394 #16553

5 months agotests/server: replace `errno` with `SOCKERRNO` in sockfilt, socksd, sws
Viktor Szakats [Tue, 4 Mar 2025 14:32:18 +0000 (15:32 +0100)] 
tests/server: replace `errno` with `SOCKERRNO` in sockfilt, socksd, sws

To correctly read the winsock2 result code on Windows.

Follow-up to de2126b1821fecbc1f66715714cb34c5c2d14ec4 #5241
Ref: https://github.com/curl/curl/commit/5e855bbd18f84a02c951be7cac6188276818cdac#r38507132
Ref: #14854
Closes #16553

5 months agoRELEASE-NOTES: synced
Daniel Stenberg [Tue, 4 Mar 2025 16:27:28 +0000 (17:27 +0100)] 
RELEASE-NOTES: synced

5 months agocf-socket: remove empty switch
MichaÅ‚ Antoniak [Tue, 4 Mar 2025 14:43:32 +0000 (15:43 +0100)] 
cf-socket: remove empty switch

Closes #16555

5 months agotests/data/Makefile.am: fix trailing slash issue
Daniel Stenberg [Tue, 4 Mar 2025 14:57:51 +0000 (15:57 +0100)] 
tests/data/Makefile.am: fix trailing slash issue

Follow-up from 6758aa722ddf5a6db819b753d962

Fixes #16556
Closes #16558

5 months agoIMAP: add CURLOPT_UPLOAD_FLAGS and --upload-flags
tiymat [Sat, 11 Jan 2025 20:50:12 +0000 (17:20 -0330)] 
IMAP: add CURLOPT_UPLOAD_FLAGS and --upload-flags

Set properties on the uploaded resource.

Test 3209 and 3210 verify.

Closes #15970

5 months agolibssh2: print user with verbose flag
Samuel Dionne-Riel [Fri, 21 Feb 2025 19:24:48 +0000 (14:24 -0500)] 
libssh2: print user with verbose flag

This change:

 - Breaks out the existing print out of the LIBSSH2_DEBUG compile-time
   flag
 - Adds (single) quotation marks around the string to better expose the
   actual value
 - Adds a NULL print if not set, mirroring other verbose prints in
   libssh2

Why was this done?

I was trying out the `sftp` option in `curl`, and found myself hitting
an issue where I was not able to get curl to tell me which username it
was using to connect to a host.

With this change, the `User: ` line is printed with `-v`, just like
other SSH verbose prints.

Instead of using the pattern used with *SSH MD5 public key*, where a
ternary is used to print `NULL` on NULL values, it is using a different
branch to add quotes around the string value.

The quotes around the string value are used to better expose to the user
an empty string value, compared to "no-value".

Closes #16430

5 months agolib: fix two curlx_strtoofft invokes
Daniel Stenberg [Mon, 3 Mar 2025 21:40:43 +0000 (22:40 +0100)] 
lib: fix two curlx_strtoofft invokes

- cf-h1-proxy: check return code and return error if the parser fails

- http: make the Retry-After parser check for a date string first then
  number to avoid mis-parsing the begining of a date as a number

Closes #16548

5 months agotests/server: round of tidy-ups
Viktor Szakats [Sun, 8 Sep 2024 14:18:57 +0000 (16:18 +0200)] 
tests/server: round of tidy-ups

Dedupe, merge macros, globals, make symbols local where possible.
Drop unused macros and headers. Drop `DEFAULT_LOGFILE` macro in favour
of `--logfile` command-line option.

Ref: #15000
Closes #16525

5 months agotidy-up: alphasort lists, indentation/whitespace, pp
Viktor Szakats [Tue, 18 Feb 2025 13:24:59 +0000 (14:24 +0100)] 
tidy-up: alphasort lists, indentation/whitespace, pp

- cmake/win32-cache: alphasort items.
- configure.ac: alphasort `CURL_CHECK_FUNC_*` checks.
- configure.ac: alphasort `AC_CHECK_FUNCS` checks.
- prefer `#ifdef`/`#ifndef`.
- lib/asyn-thread: drop unused value of `USE_HTTPSRR_ARES`.
- lib/formdata: drop unused header `libgen.h`.
- indentation, whitespace.

Closes #16490

5 months agocmake: exclude `-MP` for `clang-cl` again
Viktor Szakats [Mon, 3 Mar 2025 23:26:45 +0000 (00:26 +0100)] 
cmake: exclude `-MP` for `clang-cl` again

To avoid this warning/error (seen with Ninja generator):
```
clang-cl: warning: argument unused during compilation: '-MP' [-Wunused-command-line-argument]
```

Curious why CI missed it. Maybe due to using a Visual Studio generator.

Regression from e0fd5790d94feb239f7d2457578f2a34c85cdd65 #16004
Closes #16550

5 months agocmake: allow `CURL_STATIC_CRT` with UCRT VS2015+ builds
Viktor Szakats [Fri, 28 Feb 2025 12:17:39 +0000 (13:17 +0100)] 
cmake: allow `CURL_STATIC_CRT` with UCRT VS2015+ builds

After this patch, we're back to 8.12.1, but disallowing
`CURL_STATIC_CRT=ON` with shared curl exe built with VS2013 or older.
Because those may crash. A stable reprducer is with `ENABLE_DEBUG=ON`
and calling `curl.exe -V`.

You can pass the necessary CMake and MSVC linker options manually,
to get around this condition.

Shared build with static UCRT may be crashing too, depending on
conditions. Consult the documentation about limitations of static CRT:
https://learn.microsoft.com/cpp/c-runtime-library/crt-library-features

Follow-up to 049352dd80e1ab73945c49a3bac2e4a08db32f98 #16516
Follow-up to edfa537100d6b5d2ac1b829c66757880afe59407 #16456
Ref: #16394
Closes #16522

5 months agoftp: fix comment
Jay Satiro [Sun, 2 Mar 2025 20:12:27 +0000 (15:12 -0500)] 
ftp: fix comment

- Explain ftp_conn's newhost and newport in the struct definition.

Follow-up to 1485e892 which changed the order of some struct members to
reduce struct size.

Closes https://github.com/curl/curl/pull/16538

5 months agohttp_chunks: replace a strofft call with curl_str_hex
Daniel Stenberg [Thu, 27 Feb 2025 22:12:01 +0000 (23:12 +0100)] 
http_chunks: replace a strofft call with curl_str_hex

Make it not skip leading blanks. There should not be any.

Closes #16546

5 months agodocs/cmdline-opts: unify HTTP version style in --help output
Daniel Stenberg [Mon, 3 Mar 2025 11:13:38 +0000 (12:13 +0100)] 
docs/cmdline-opts: unify HTTP version style in --help output

$ curl -h all | grep -- --http

Now:

     --http0.9                      Allow HTTP/0.9 responses
 -0, --http1.0                      Use HTTP/1.0
     --http1.1                      Use HTTP/1.1
     --http2                        Use HTTP/2
     --http2-prior-knowledge        Use HTTP/2 without HTTP/1.1 Upgrade
     --http3                        Use HTTP/3
     --http3-only                   Use HTTP/3 only

Before:

     --http0.9                      Allow HTTP 0.9 responses
 -0, --http1.0                      Use HTTP 1.0
     --http1.1                      Use HTTP 1.1
     --http2                        Use HTTP/2
     --http2-prior-knowledge        Use HTTP 2 without HTTP/1.1 Upgrade
     --http3                        Use HTTP v3
     --http3-only                   Use HTTP v3 only

Closes #16542

5 months agotool_operate: remove unnecessary (long) typecasts
Daniel Stenberg [Mon, 3 Mar 2025 11:08:22 +0000 (12:08 +0100)] 
tool_operate: remove unnecessary (long) typecasts

Closes #16540

5 months agopytest: check overlarge response headers
Stefan Eissing [Mon, 3 Mar 2025 11:14:20 +0000 (12:14 +0100)] 
pytest: check overlarge response headers

Add test_01 11, 12 and 13 to check various very long response
headers (accumulated and single) with http/1.1 and h2.

Closes #16541

5 months agomulti_ev: use `mid` instead of `id` for transfer hashes
Stefan Eissing [Mon, 3 Mar 2025 13:39:47 +0000 (14:39 +0100)] 
multi_ev: use `mid` instead of `id` for transfer hashes

`data->id` is unique in the same connection pool, but a multi may
involved more than one pool. `data->mid` is unique inside the multi and
since multi_ev lives inside one multi, the `mid` is the right thing to
use.

Closes #16545

5 months agocurl.h: convert CURLUSESSL* names to defines
Daniel Stenberg [Mon, 3 Mar 2025 10:42:15 +0000 (11:42 +0100)] 
curl.h: convert CURLUSESSL* names to defines

So that we can use L suffix.

Follow-up to 2ec00372a1fc7f27cd3a6c43e29007400acfe2b6

Closes #16539

5 months agolib: add CURLFOLLOW_OBEYCODE and CURLFOLLOW_FIRSTONLY
Daniel Stenberg [Mon, 3 Mar 2025 10:35:48 +0000 (11:35 +0100)] 
lib: add CURLFOLLOW_OBEYCODE and CURLFOLLOW_FIRSTONLY

With this change, the argument passed to the CURLOPT_FOLLOWLOCATION
option is now instead a "mode" instead of just a boolean. Documentation
is extended to describe the two new modes.

Test 1571 to 1581 verify.

Closes #16473

5 months agolib: replace while(ISBLANK()) loops with Curl_str_passblanks()
Daniel Stenberg [Thu, 27 Feb 2025 22:26:54 +0000 (23:26 +0100)] 
lib: replace while(ISBLANK()) loops with Curl_str_passblanks()

- replace several ISSPACE() with ISBLANK(), since the former also skips
  CR and LF which in most cases should not occur where this macro is
  used

- after this commit, there is no ISSPACE() user left in libcurl code, but
  unfortunately tool and test code use the macro so it cannot be removed.

Closes #16520

5 months agohttp2: enhance error messages on Curl_dyn* upon receiving headers
Peng-Yu Chen [Sun, 2 Mar 2025 17:15:21 +0000 (17:15 +0000)] 
http2: enhance error messages on Curl_dyn* upon receiving headers

This is a partial fix of #16535. The error message format is borrowed
from the existing code[1].

Sample message before:
    curl: (56) process_pending_input: nghttp2_session_mem_recv() returned -902:The user callback function failed

Sample message after:
    curl: (56) Error receiving HTTP2 header: 100(A value or data field grew larger than allowed)

[1]: https://github.com/curl/curl/blob/df672695e5992ad9b99819e9950de682e243cb48/lib/http2.c#L1999-L2000

Closes #16536

5 months agoOpenSSL/quictls: add support for TLSv1.3 early data
Stefan Eissing [Tue, 25 Feb 2025 14:07:19 +0000 (15:07 +0100)] 
OpenSSL/quictls: add support for TLSv1.3 early data

based on #16450

Adds support for TLSv1.3 early data for TCP and QUIC via ngtcp2.

Closes #16477

5 months agoGHA: update dependency nghttp2/nghttp2 to v1.65.0
renovate[bot] [Sun, 2 Mar 2025 08:05:16 +0000 (08:05 +0000)] 
GHA: update dependency nghttp2/nghttp2 to v1.65.0

Tweaked-by: Viktor Szakats
Closes #16534

5 months agoGHA: update actions/cache digest to d4323d4
renovate[bot] [Thu, 27 Feb 2025 16:21:03 +0000 (16:21 +0000)] 
GHA: update actions/cache digest to d4323d4

Closes #16510

5 months agoGHA: update actions/download-artifact digest to cc20338
renovate[bot] [Wed, 26 Feb 2025 15:22:11 +0000 (15:22 +0000)] 
GHA: update actions/download-artifact digest to cc20338

Closes #16500

5 months agodocker: update debian:bookworm-slim Docker digest to ceac69a
renovate[bot] [Tue, 25 Feb 2025 07:01:14 +0000 (07:01 +0000)] 
docker: update debian:bookworm-slim Docker digest to ceac69a

Closes #16471

5 months agoGHA: update actions/upload-artifact digest to 4cec3d8
renovate[bot] [Fri, 21 Feb 2025 19:55:07 +0000 (19:55 +0000)] 
GHA: update actions/upload-artifact digest to 4cec3d8

Closes #16431

5 months agoshutdowns: split shutdown handling from connection pool
Stefan Eissing [Thu, 27 Feb 2025 14:47:30 +0000 (15:47 +0100)] 
shutdowns: split shutdown handling from connection pool

Further testing with timeouts in event based processing revealed that
our current shutdown handling in the connection pool was not clear
enough. Graceful shutdowns can only happen inside a multi handle and it
was confusing to track in the code which situation actually applies. It
seems better to split the shutdown handling off and have that code
always be part of a multi handle.

Add `cshutdn.[ch]` with its own struct to maintain connections being
shut down. A `cshutdn` always belongs to a multi handle and uses that
for socket/timeout monitoring.

The `cpool`, which can be part of a multi or share, either passes
connections to a `cshutdn` or terminates them with a one-time, best
effort.

Add an `admin` easy handle to each multi and share. This is used to
perform all maintenance operations where no "real" easy handle is
available. This solves the problem that the multi admin handle requires
some additional initialisation (e.g. timeout list).

The share needs its admin handle as it is often cleaned up when no other
transfer or multi handle exists any more. But we need a `data` in almost
every call.

Fix file:// handling of errors when adding a new connection to the pool.

Changes in `curl` itself:

- for parallel transfers, do not set a connection pool in the share,
  rely on the multi's connection pool instead. While not a requirement
  for the new `cshutdn` to work, this is

  a) helpful in testing to trigger graceful shutdowns
  b) a broader code coverage of libcurl via the curl tool

- on test_event with uv, cleanup the multi handle before returning from
  parallel_event(). The uv struct is on the stack, cleanup of the multi
  later will crash when it tries to register sockets. This is a "eat
  your own dogfood" related fix.

Closes #16508

5 months agoGHA: update dependency awslabs/aws-lc to v1.47.0
renovate[bot] [Sat, 1 Mar 2025 01:05:37 +0000 (01:05 +0000)] 
GHA: update dependency awslabs/aws-lc to v1.47.0

Closes #16530

5 months agoasyn: bring back port to the Curl_async struct
Daniel Stenberg [Sat, 1 Mar 2025 17:22:59 +0000 (18:22 +0100)] 
asyn: bring back port to the Curl_async struct

To make sure we store and use the correct port used for this particular
lookup.

Partial revert of 8ded8e5f3f

Fixes #16531
Reported-by: Jay Satiro
Closes #16532

5 months agoRELEASE-NOTES: synced
Daniel Stenberg [Sat, 1 Mar 2025 17:44:56 +0000 (18:44 +0100)] 
RELEASE-NOTES: synced

5 months agohash_offt: standalone hash for curl_off_t
Stefan Eissing [Sun, 23 Feb 2025 11:20:17 +0000 (12:20 +0100)] 
hash_offt: standalone hash for curl_off_t

Add a standalong hash table for curl_offt_t as key. This allows a
smaller memory footprint and faster lookups as we do not need to deal
with variable key lengths.

Use in all places we had the standard hash for this purpose.

Closes #16442

5 months agopytest: test negotiate with http proxy
Stefan Eissing [Fri, 31 Jan 2025 10:25:15 +0000 (11:25 +0100)] 
pytest: test negotiate with http proxy

Fixes #14973
Reported-by: stevenpackardblp on github
When curl negotiated with a http: proxy for a https: request, it
wrongly believed there must be an SSL filter present, which during
CONNECT, there is not.

25b445e fixed this. This PR adds a pytest case for the setup.

Closes #16136

5 months agoexamples: prefer `return` over `exit()` (cont.)
Viktor Szakats [Fri, 28 Feb 2025 16:44:55 +0000 (17:44 +0100)] 
examples: prefer `return` over `exit()` (cont.)

Some of these calls were not in callbacks. These examples may leak
handles.

Also fix some whitespace.

Follow-up to 08c7c937dc0dbd1f92f73360e5d8b2bb2ee6afa8 #16507
Closes #16524

5 months agowinbuild: reduce command-line length by dropping whitespace
Viktor Szakats [Fri, 28 Feb 2025 22:56:01 +0000 (23:56 +0100)] 
winbuild: reduce command-line length by dropping whitespace

Keep the `@for %%i in [...]` lines within limits by stripping whitespace
from the input `.c` source lists read from `Makefile.inc`. To avoid this
error after adding a new `.c` source:
```
configuration name: libcurl-vc14-x64-release-dll-ssl-dll-ipv6-sspi
NMAKE : fatal error U1095: expanded command line 'for %i in (altsvc.obj            amigaos.obj
           asyn-ares.obj         asyn-thread.obj       base64.obj            bufq.obj
              bufref.obj            cf-h1-proxy.obj       cf-h2-proxy.obj       cf-haproxy.obj [...]
  vssh/wolfssh.obj) do @echo ..\builds\libcurl-vc14-x64-release-dll-ssl-dll-ipv6-sspi-obj-lib/%i \
                   ' too long
Stop.
Command exited with code 2
```
Ref: https://ci.appveyor.com/project/curlorg/curl/builds/51605338/job/dqg6qtebtscb279g#L44

Reported-by: Stefan Eissing
Bug: https://github.com/curl/curl/pull/16508#issuecomment-2690443409
Fixes #16521
Closes #16528

5 months agodocs: vulnerabilities in debug code are not eligible for a bounty
Dan Fandrich [Fri, 28 Feb 2025 20:36:14 +0000 (12:36 -0800)] 
docs: vulnerabilities in debug code are not eligible for a bounty

This is code that is off by default and is therefore treated as a
regular bug.

Ref: #16526
Closes #16527

5 months agoGHA/macos: use quictls in some jobs, other small improvements
Viktor Szakats [Fri, 28 Feb 2025 02:50:29 +0000 (03:50 +0100)] 
GHA/macos: use quictls in some jobs, other small improvements

- enable quictls in autotools and cmake jobs. autotools requires
  a workaround due to wrong libpath in the quictls pkg-config.
  nghttp3 is offered by Homebrew, but not ngtcp2, to enable H3.

- install `libnghttp2` rather than `nghttp2`.
  `libnghttp2` is preinstalled and smaller. It also avoids detecting
  `nghttpx`, which confuses `pytest`.

- limit `brew unlink openssl` to libressl/quictls jobs.

Closes #16517

5 months agotests: fix comment in lib533
Zhaoming Luo [Fri, 28 Feb 2025 13:06:34 +0000 (21:06 +0800)] 
tests: fix comment in lib533

Closes #16523

5 months agognutls: fix use of pkcs11 urls for keys/certs
Stefan Eissing [Tue, 25 Feb 2025 09:31:43 +0000 (10:31 +0100)] 
gnutls: fix use of pkcs11 urls for keys/certs

Fixes #16249
Forwarded-to-us-by: Carlos Henrique Lima Melara
Always use `gnutls_certificate_set_x509_key_file2()` for loading keys
and certificates, even without a password, since this function support
pkcs11 urls.

Thanks to @tatsuhiro-t for finding this out.
Help-by: Tatsuhiro Tsujikawa
Closes #16472

5 months agocmake: allow `CURL_STATIC_CRT` with shared libcurl and no curl exe
Viktor Szakats [Fri, 28 Feb 2025 03:56:12 +0000 (04:56 +0100)] 
cmake: allow `CURL_STATIC_CRT` with shared libcurl and no curl exe

Follow-up to edfa537100d6b5d2ac1b829c66757880afe59407 #16456

Closes #16516

5 months agotidy-up: prefer `return` over `exit()`, fix fallouts
Viktor Szakats [Thu, 27 Feb 2025 10:32:43 +0000 (11:32 +0100)] 
tidy-up: prefer `return` over `exit()`, fix fallouts

To avoid breaking the control flow and align to majority of code
already using `return`.

`exit()` has the side-effect of suppressing leak detection in cases.
Fix fallouts detected after switching to `return`.

- configure:
  - fix `getaddrinfo` run test to call `freeaddrinfo()` to pacify ASAN,
    and call `WSACleanup()` to deinit winsock2.
  - fix `getifaddrs` run test to call `freeifaddrs()` to pacify ASAN.
- tests/server:
  - setup `atexit(win32_cleanup)` via `win32_init()`.
  - return 2 instead of 1 on winsock2 init failures.
  - sws: goto cleanup instead of `exit()` in `http_connect()`.
    Follow-up to 02dfe7193704817184b522888ffa926e6b73f648 #7235
- tests/client/http:
  - cleanup memory to pacify ASAN in `h2-upgrade-extreme`,
    `tls-session-reuse`.
- examples:
  - block_ip: fix memory leak reported by CI.
  - http2-upload: avoid handle leaks.

Untouched `exit()` calls, made from callbacks:
- docs/examples: ephiperfifo.c, ghiper.c, hiperfifo.c
- tests/libtest: lib582.c, lib655.c, lib670.c
- tests/server: tftpd.c

Closes #16507

5 months agotest488: set --output-dir
Stefan Eissing [Fri, 28 Feb 2025 08:54:21 +0000 (09:54 +0100)] 
test488: set --output-dir

Otherwise the downloaded files land in the `tests` directory and
show up in git status.

Closes #16519

5 months agocmake: drop `HAVE_C_FLAG_Wno_long_double` logic for ancient Apple gcc
Viktor Szakats [Thu, 27 Feb 2025 22:54:47 +0000 (23:54 +0100)] 
cmake: drop `HAVE_C_FLAG_Wno_long_double` logic for ancient Apple gcc

The initial curl CMake commit introduced it in 2009-04-02 via
4c5307b45655ba75ab066564afdc0c111a8b9291. Suppressing a stray
`-Wlong-double` warning in `mprintf.c`. This was before Apple switched
to clang, and likely affected the Apple distributed GCC, version 4.2.1
at the time. It applied the workaround to CMake builds only, though
the issue seems build-tool agnostic. Yet, it was not suppressed or
reported for autotools builds.

For these reasons this logic seems obsolete and this patch drops it with
no replacement. It saves a feature detection for GCC builds for macOS.

In PR sub-commits I added (and reverted) in-source suppression. In case
it becomes necessary, that should fix it for all build tools.

Closes #16513

5 months agocmake: improve httpd detection for pytest
Viktor Szakats [Thu, 27 Feb 2025 19:22:35 +0000 (20:22 +0100)] 
cmake: improve httpd detection for pytest

Look for `httpd` in addition to `apache2`, like `./configure` does.
It fixes detection with macOS Homebrew for example.

Closes #16515