]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
2 months agocf-h3-proxy.c: bring back include
Daniel Stenberg [Wed, 27 May 2026 20:56:01 +0000 (22:56 +0200)] 
cf-h3-proxy.c: bring back include

Without it, it breaks regular (non-unity) builds.

Fix regression from 7e1001bcd69967707c

Closes #21785

2 months agoGHA: update dependency cloudflare/quiche to v0.29.1
renovate[bot] [Wed, 27 May 2026 19:51:17 +0000 (19:51 +0000)] 
GHA: update dependency cloudflare/quiche to v0.29.1

Closes #21783

2 months agoautotools: mbedtls detection fixes
Viktor Szakats [Fri, 22 May 2026 23:05:10 +0000 (01:05 +0200)] 
autotools: mbedtls detection fixes

- fix symbol used for first-round detection.
- skip detecting mbedtls on custom path if custom path was not supplied.

Reported-by: Ross Burton
Fixes #21727

Closes #21729

2 months agovtls: more large buffer support and error checks for SHA-256
Viktor Szakats [Wed, 27 May 2026 08:06:34 +0000 (10:06 +0200)] 
vtls: more large buffer support and error checks for SHA-256

- gnutls: support 4GiB+ SHA-256 digest inputs.
- openssl: check success of low-level update/finish digest calls.
- openssl: pass NULL to `EVP_DigestFinal_ex()` instead of discarding
  returned value.
- wolfssl: support 4GiB+ SHA-256 digest inputs.
- wolfssl: check success of low-level update/finish digest calls.
- sync and tidy up argument names in low-level sha256_sum functions.

Closes #21771

2 months agoschannel: check `schannel_sha256sum()` success, and more
Viktor Szakats [Sun, 24 May 2026 12:55:05 +0000 (14:55 +0200)] 
schannel: check `schannel_sha256sum()` success, and more

Also:
- support 4GiB+ SHA-256 digest inputs.
- check `CryptGetHashParam()` output size.
- avoid overwriting existing digest when new digest calculation fails.
- avoid adding digest hash element on failure.

Closes #21739

2 months agocurl_sha512_256: fix result code on error
Viktor Szakats [Wed, 27 May 2026 08:21:24 +0000 (10:21 +0200)] 
curl_sha512_256: fix result code on error

Replace result code `CURLE_SSL_CIPHER` with
`CURLE_BAD_FUNCTION_ARGUMENT` in case of a low-level digest function
fails. Functionality is related to vauth, not SSL, and the operation is
a digest, not a cipher.

Also fix a indentation.

Follow-up to 05268cf801a193b68411cfa298413c3e5ca79d4f #13070

Closes #21767

2 months agovtls_spack: drop redundant macro fallbacks
Viktor Szakats [Wed, 27 May 2026 08:24:40 +0000 (10:24 +0200)] 
vtls_spack: drop redundant macro fallbacks

For `UINT16_MAX` and `UINT32_MAX`. They are used in other sources
without this fallback.

Closes #21768

2 months agoINSTALL-CMAKE.md: document `H2O` config variable
Viktor Szakats [Wed, 27 May 2026 08:30:18 +0000 (10:30 +0200)] 
INSTALL-CMAKE.md: document `H2O` config variable

Follow-up to e78b1b3eccfa6a2e367a1225ea1b66dafcdac3c4 #21153

Closes #21769

2 months agotidy-up: miscellaneous
Viktor Szakats [Wed, 20 May 2026 10:20:10 +0000 (12:20 +0200)] 
tidy-up: miscellaneous

- H3 proxy: re-sync code with original source `curl_ngtcp2.c` to reduce
  differences, and to apply missed minor fixes. Also apply clang-format.
  Drop redundant `#undef`s, casts, `#endif` comments, includes, drop
  intermediate variables, sync include and macro order.
  Follow-up to e78b1b3eccfa6a2e367a1225ea1b66dafcdac3c4 #21153
- INSTALL-CMAKE.md: move `CURL_ENABLE_SMB` to the enable section.
- tests/http/env: rename `tcpdmp` to `tcpdump` to match object variable.
- mbedtls: drop incorrect `mbedTLS 4+` comments.
  (features are also supported by 3+, meaning it's always supported.)
- lib1648: rename a variable to match purpose.
- CIPHERS.md: alpha-sort link list.
- replace rare `X''` hex markup with `0x`.
- `IP v4/6` -> `IPv4/6`.
- 'version X.Y' -> 'vX.Y', where sensible.
- 'VX.Y' -> 'vX.Y', where sensible.
- fix indents, casing, newlines, typos.

Closes #21772

2 months agocf-h3-proxy: add SSL flag
Stefan Eissing [Wed, 27 May 2026 08:36:22 +0000 (10:36 +0200)] 
cf-h3-proxy: add SSL flag

Since the proxy filter does TLS, it needs to set the SSL flag.

Follow-up to e78b1b3eccfa6a2e3
Closes #21770

Spotted by Codex Security

2 months agocontent_encoding: timeout during slow decoding
Stefan Eissing [Tue, 26 May 2026 13:59:09 +0000 (15:59 +0200)] 
content_encoding: timeout during slow decoding

Check during transfer/content decoding for every MB or so, if the
transfer has reached its overall time limit. Error out if so.

This is mainly a protectin against compression bombs using way more time
than the transfer is allowed to. Normal compression ratios are unlikely
to benefit as they need more upstream data where the timeout handling is
already in place.

Fixes #21603
Reported-by: Joshua Rogers
Closes #21758

2 months agocontent_encoding: fix limit failure message
Stefan Eissing [Tue, 26 May 2026 13:27:22 +0000 (15:27 +0200)] 
content_encoding: fix limit failure message

The message triggered earlier than intended and did not take the
transfer/content type into account.

Ref #21603
Reported-by: Joshua Rogers
Closes #21756

2 months agourlapi: forbid '|' in host
tiymat [Wed, 27 May 2026 01:05:27 +0000 (22:35 -0230)] 
urlapi: forbid '|' in host

Closes #21762

2 months agogtls: use the correct return code in trace output
Daniel Stenberg [Wed, 27 May 2026 07:26:41 +0000 (09:26 +0200)] 
gtls: use the correct return code in trace output

Instead of using a hard-coded zero.

Spotted by Copilot

Closes #21766

2 months agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 27 May 2026 07:06:55 +0000 (09:06 +0200)] 
RELEASE-NOTES: synced

2 months agogtls: fix ignored return and uninitialized status in OCSP check
Joshua Rogers [Tue, 19 May 2026 14:16:12 +0000 (16:16 +0200)] 
gtls: fix ignored return and uninitialized status in OCSP check

gnutls_ocsp_resp_get_single() was called with (void) discarding its
return value, so a failure (e.g. an OCSP response with no
SingleResponse entries) went undetected.  The following switch() then
read an uninitialized gnutls_ocsp_cert_status_t, which is undefined
behaviour and could yield GNUTLS_OCSP_CERT_GOOD (0) depending on
stack contents, causing gtls_verify_ocsp_status to return CURLE_OK for
a response that was never successfully parsed.

Fix by initializing status to GNUTLS_OCSP_CERT_UNKNOWN and treating a
negative return from gnutls_ocsp_resp_get_single as an error.

Closes #21679

2 months agoHTTP/3: add proxy CONNECT and MASQUE CONNECT-UDP support (ngtcp2 QUIC)
Aritra Basu [Mon, 27 Apr 2026 23:35:38 +0000 (19:35 -0400)] 
HTTP/3: add proxy CONNECT and MASQUE CONNECT-UDP support (ngtcp2 QUIC)

This patch adds two major proxy capabilities to curl (ngtcp2 QUIC):
- HTTP/3 Proxy CONNECT: Tunnel HTTP/1.1 or HTTP/2 traffic through an
  HTTPS proxy that speaks HTTP/3 (QUIC) using the standard CONNECT
  method over an HTTP/3 connection.
- MASQUE CONNECT-UDP: Tunnel HTTP/3 (QUIC) traffic through an HTTP
  proxy (speaking HTTP/1.1, HTTP/2, or HTTP/3) using the extended
  CONNECT method with the CONNECT-UDP protocol (RFC9297 & RFC9298).

Public API additions:
- `CURLPROXY_HTTPS3`: new proxy type constant for HTTP/3 proxy
- `--proxy-http3`: new CLI flag to negotiate HTTP/3 with HTTPS proxy

The implementation adds two new filters:
- `H3-PROXY` - enables negotiating HTTP/3 (QUIC) to the proxy and
  running CONNECT/CONNECT-UDP through that proxy transport.
- `CAPSULE` - dedicated filter inserted between QUIC transport and
  HTTP-PROXY to handle datagram capsule encapsulation/decapsulation.

Here is how the curl filter chaining looks in different scenarios:
- HTTP/3 Proxy CONNECT (tunneling TCP protocols over QUIC proxy):
  conn -> HTTP/1.1 or HTTP/2  -> SSL -> HTTP-PROXY ->
                                 H3-PROXY -> HAPPY-EYEBALLS -> UDP
- MASQUE CONNECT-UDP (tunneling QUIC over any proxy):
  conn -> HTTP/3 -> CAPSULE -> HTTP-PROXY -> H3-PROXY ->
                               HAPPY-EYEBALLS -> UDP
  conn -> HTTP/3 -> CAPSULE -> HTTP-PROXY -> H1-PROXY or H2-PROXY ->
                               SSL -> HAPPY-EYEBALLS -> TCP

- Both features currently require the ngtcp2 QUIC backend.
- Both features are experimental (disabled by default). Enable with
  `--enable-proxy-http3`(autotools) or `-DUSE_PROXY_HTTP3=ON`(CMake).

Tests:
- tests/unit/unit3400.c: Unit tests for capsule protocol encode/decode
- tests/http/test_60_h3_proxy.py: Comprehensive pytest integration suite
- tests/http/testenv/h2o.py: Managing h2o instances with HTTP/1.1, HTTP/2,
  and HTTP/3 (QUIC) listeners, proxy.connect and proxy.connect-udp enabled.

References:
  RFC 9297 - HTTP Datagrams and the Capsule Protocol
  RFC 9298 - Proxying UDP in HTTP
  RFC 9000 §16 — Variable-Length Integer Encoding

Signed-off-by: Aritra Basu <aritrbas+gh@cisco.com>
Closes #21153

2 months agoGHA: fix locale tests on macOS, extend to verify test 1981
Viktor Szakats [Tue, 26 May 2026 09:40:15 +0000 (11:40 +0200)] 
GHA: fix locale tests on macOS, extend to verify test 1981

- fix macOS locale tests to clear existing variables.
  (Without this, the system-defined `LC_ALL` takes precedence, and
  the custom envs in CI are ignored.)

- trigger test 1981 issue by setting `LC_TIME` to non-English, on macOS.
  (On Linux it'd require explicitly installing a non-English locale, I
  skipped this for simplicity.)
  ```
  [...]
  -Time: 01/Aug/2025 08:31:43.037103 +0000 UTC[CR][LF]
  +Time: 01/ao%c3%bb/2025 08:31:43.037103 +0000 UTC[CR][LF]
  [...]
  FAIL 1981: '%time output with --write-out' HTTP, HTTP GET
  ```
  Follow-up to 90a7732d467eae7c5a59fc07c5a072970926f8c6 #21749

Follow-up to 1cc8a5235f76e744433cbf28ec98ecb972158387 #17988
Follow-up to c221c0ee5935497168c52686a9d8cc87b45bbca9 #17938

Closes #21753

2 months agoINSTALL-CMAKE.md: drop two obsolete sections
Viktor Szakats [Tue, 26 May 2026 19:32:19 +0000 (21:32 +0200)] 
INSTALL-CMAKE.md: drop two obsolete sections

Follow-up to 89043ba90689418a115e967633e261139b48ce23 #20407

Closes #21761

2 months agoGHA: verify tarball downloads
Viktor Szakats [Tue, 26 May 2026 13:56:27 +0000 (15:56 +0200)] 
GHA: verify tarball downloads

Detect latest tarball version via the https://curl.se/downloads.html
page, download the signing key from a public keyserver then verify
source download signatures.

To ensure that public downloads are intact.

Closes #21759

2 months agoGHA: require HTTPS protocol in redirections (where missing)
Viktor Szakats [Tue, 26 May 2026 13:59:18 +0000 (15:59 +0200)] 
GHA: require HTTPS protocol in redirections (where missing)

Also:
- drop following redirects on `openldap.org`.

Closes #21757

2 months agotest1981: explicitly set the locale
Stefan Eissing [Tue, 26 May 2026 08:25:22 +0000 (10:25 +0200)] 
test1981: explicitly set the locale

Otherwise we may get a different month name in the output.

Closes #21749

2 months agoGHA: bump LibreSSL to 4.3.2
Viktor Szakats [Tue, 26 May 2026 11:22:20 +0000 (13:22 +0200)] 
GHA: bump LibreSSL to 4.3.2

Also switch back to ftp.openbsd.org download server. More often than not
the GitHub release entry is missing the download artifacts at the time
of detecting a new version, breaking automatic bumps. We cache the
download so it does not bang the origin server with many requests.

Follow-up to 800b0bec18e9c77e35912fac8321c791d7b57863 #19082
Closes #21742
Closes #21754

2 months agoGnuTLS: require 3.7.2 for earlydata
Stefan Eissing [Tue, 26 May 2026 09:25:01 +0000 (11:25 +0200)] 
GnuTLS: require 3.7.2 for earlydata

Since all API features we need for TLSv1.3 earlydata support do exist
only from version 3.7.2 onwards, make that the minimal version required.

Fixes #21750
Reported-by: Johannes Schlatow
Closes #21751

2 months agomulti_ev: silence clang-tidy nonsense
Stefan Eissing [Tue, 26 May 2026 09:38:25 +0000 (11:38 +0200)] 
multi_ev: silence clang-tidy nonsense

About a "unnecessary define" - my ass.

Closes #21752

2 months agodocs: fix odd wording in CONTRIBUTE.md
mik [Thu, 21 May 2026 08:25:49 +0000 (10:25 +0200)] 
docs: fix odd wording in CONTRIBUTE.md

Found with AI assistance, verified manually

Closes #21705

2 months agomulti: handle pause in multi socket callback
Daniel Stenberg [Tue, 26 May 2026 07:52:19 +0000 (09:52 +0200)] 
multi: handle pause in multi socket callback

The mev_sh_entry object might be removed if curl_easy_pause() is called
from within the socket callback.

Introduced a 'magic' struct field to to 'mev_sh_entry' to make it easier
to programmatically detect/assert if the pointer is bad - in debug
builds.

Reported-by: Joshua Rogers
Closes #21748

2 months agotransfer: clear referer when set to NULL
Daniel Stenberg [Mon, 25 May 2026 14:43:00 +0000 (16:43 +0200)] 
transfer: clear referer when set to NULL

Verify in test 1649

Closes #21741

2 months agoVULN-DISCLOSURE-POLICY.md: emphasize the no email thank you part
Daniel Stenberg [Tue, 26 May 2026 07:09:24 +0000 (09:09 +0200)] 
VULN-DISCLOSURE-POLICY.md: emphasize the no email thank you part

Closes #21747

2 months agoldap: switch of chasing referrals
Stefan Eissing [Sat, 23 May 2026 12:40:55 +0000 (14:40 +0200)] 
ldap: switch of chasing referrals

It is switched off in the OpenLDAP backend, so we should do the
same here.

Follow-up to cdc1da912066535680f02eb31

Closes #21732

2 months agolibssh: map SSH_KNOWN_HOSTS_OTHER to CURLKHMATCH_MISMATCH
Joshua Rogers [Fri, 22 May 2026 07:48:15 +0000 (09:48 +0200)] 
libssh: map SSH_KNOWN_HOSTS_OTHER to CURLKHMATCH_MISMATCH

Host key type mismatch from libssh was incorrectly reported as missing,
causing key callbacks to accept instead of reject.

Reported by: Joshua Rogers (Aisle Research)
Closes #21724

2 months agoGHA/http3-linux: fixup quiche cache
Viktor Szakats [Sun, 24 May 2026 13:12:54 +0000 (15:12 +0200)] 
GHA/http3-linux: fixup quiche cache

Closes #21740

2 months agoquiche: bump cloudflare/quiche to v0.29.0, update pytest workaround
Viktor Szakats [Sat, 23 May 2026 09:05:27 +0000 (11:05 +0200)] 
quiche: bump cloudflare/quiche to v0.29.0, update pytest workaround

Also:
- drop no longer necessary quiche build workaround.
- update build for boringssl's new location (since v0.29.0, it's no
  longer vendored) within the quiche tree.
- move boringssl install dir out of quiche tree, and shorten it.

Ref: https://github.com/cloudflare/quiche/issues/2277
Ref: https://github.com/cloudflare/quiche/pull/2278
Ref: #21620

Closes #21730

2 months agomailmap: cmeister2@gmail is primary for Max Dymond
Max Dymond [Sun, 24 May 2026 09:22:21 +0000 (10:22 +0100)] 
mailmap: cmeister2@gmail is primary for Max Dymond

I'd rather all my commits be attributed to cmeister2@gmail.com instead
of anything else; especially not my old Microsoft email address!

Closes #21735

2 months agoKNOWN_BUGS: remove stale Threads::Threads entry
Max Dymond [Sun, 24 May 2026 08:02:33 +0000 (09:02 +0100)] 
KNOWN_BUGS: remove stale Threads::Threads entry

The old CMake bug about exporting -lpthread instead of Threads::Threads
no longer matches current master. As of 2d546d239ecd455b6459e68b85ef8d4b045c0a00
("cmake: use Threads::Threads imported target for POSIX Threads"),
the build now uses Threads::Threads and the generated CMake package
config resolves the dependency explicitly, so this KNOWN_BUGS entry is stale.

Closes #21734

2 months agoschannel: error on TLS 1.3-only with cipher list
Joshua Rogers [Fri, 22 May 2026 07:59:17 +0000 (09:59 +0200)] 
schannel: error on TLS 1.3-only with cipher list

The legacy SCHANNEL_CRED path cannot negotiate TLS 1.3. When TLS 1.3
is the only enabled protocol and a cipher list is set, fail instead of
silently downgrading to TLS 1.2.

Fixes https://github.com/curl/curl/issues/21702
Closes https://github.com/curl/curl/pull/21725

2 months agoCIPHERS.md: fix the example that uses only TLS 1.3
Jay Satiro [Thu, 21 May 2026 18:00:09 +0000 (14:00 -0400)] 
CIPHERS.md: fix the example that uses only TLS 1.3

- Add --tls-max 1.3 to set the maximum version to TLS 1.3.

- Remove Schannel because it doesn't support TLS 1.3 ciphers since
  6238888.

Prior to this change the example set the minimum version to TLS 1.3 but
not the maximum version to TLS 1.3.

Ref: https://github.com/curl/curl/issues/21702

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

2 months agongtcp2: fail handshake directly
Stefan Eissing [Thu, 21 May 2026 12:21:59 +0000 (14:21 +0200)] 
ngtcp2: fail handshake directly

When certificate verification fails, error out of the handshake
callback, forcing ngtcp2 to stop processing the connection any further.

Closes #21712

2 months agoRELEASE-NOTES: synced
Daniel Stenberg [Fri, 22 May 2026 07:48:59 +0000 (09:48 +0200)] 
RELEASE-NOTES: synced

2 months agohttp2: remove stream dependency tracking
Stefan Eissing [Fri, 22 May 2026 07:11:41 +0000 (09:11 +0200)] 
http2: remove stream dependency tracking

The HTTP/2 feature is deprecated, few servers implement it and our
implementation is complicated by its state management. Make the two
CURLOPT_* involved a nop and deprecate them.

Closes #21723

2 months agoKNOWN_BUGS.md: remove fixed GnuTLS <-> OpenSSL incompat bug
11soda11 [Thu, 21 May 2026 22:03:51 +0000 (00:03 +0200)] 
KNOWN_BUGS.md: remove fixed GnuTLS <-> OpenSSL incompat bug

The entry is about GnuTLS not sending the client cert when it doesn't
match the `DN` the server requested.  OpenSSL does the opposite.

The issue was already fixed by #4958 and removed from KNOWN_BUGS,
but it was added back to the list by #16677, seemingly by mistake.

The issue is still fixed for GnuTLS >= 3.5.0.
As curl only supports GnuTLS >= 3.6.5, remove the bug entry from
KNOWN_BUGS.md

Fixes #21720
Closes #21722

2 months agourlapi: fix redirect handling if CURLU_NO_GUESS_SCHEME is set
Daniel Stenberg [Thu, 21 May 2026 21:00:55 +0000 (23:00 +0200)] 
urlapi: fix redirect handling if CURLU_NO_GUESS_SCHEME is set

Verified by test 1967

Reported-by: Joshua Rogers
Closes #21721

2 months agoGHA/checksrc: add auditor-level zizmor (warning-only)
Viktor Szakats [Thu, 21 May 2026 17:09:35 +0000 (19:09 +0200)] 
GHA/checksrc: add auditor-level zizmor (warning-only)

CI time cost is 1s.

It may replace existing pedantic check, if this level isn't bringing
false-positives or annoyance. Officially it's not meant for CI, but curl
has been passing this in the last couple of months when checked locally.

Closes #21718

2 months agounits: tidy up begin/end blocks
Viktor Szakats [Thu, 21 May 2026 02:21:33 +0000 (04:21 +0200)] 
units: tidy up begin/end blocks

- use `UNITTEST_BEGIN_SIMPLE`/`UNITTEST_END_SIMPLE` where missing.
- drop redundant `(void)arg;` where using `UNITTEST_BEGIN*`.
- unit1636: drop redundant block after `UNITTEST_BEGIN*`.
- unit1609: fix typo in comment.
- unit1627: merge to `if`s.

Closes #21715

2 months agomulti: silence gcc 16 `-Wnull-dereference`, bump CI job to test
Viktor Szakats [Thu, 21 May 2026 09:16:49 +0000 (11:16 +0200)] 
multi: silence gcc 16 `-Wnull-dereference`, bump CI job to test

- GHA/windows: bump dl-mingw job from gcc 15 to 16.

- multi: silence warning while building libcurlu:
  ```
  In function 'multi_ischanged',
      inlined from 'multi_socket.isra' at D:/a/curl/curl/lib/multi.c:3282:6:
  D:/a/curl/curl/lib/multi.c:1710:17: error: null pointer dereference [-Werror=null-dereference]
   1710 |   bool retval = (bool)multi->recheckstate;
        |                 ^~~~~~~~~~~~~~~~~~~~~~~~~
  D:/a/curl/curl/lib/multi.c:1712:25: error: null pointer dereference [-Werror=null-dereference]
   1712 |     multi->recheckstate = FALSE;
        |                         ^
  ```
  Ref: https://github.com/curl/curl/actions/runs/26217071531/job/77142119137?pr=21707

- multi: silence another `-Wnull-dereference`, popping up in libcurl
  with gcc 13 after the previous silencing:
  ```
  In function 'Curl_multi_xfers_running',
      inlined from 'multi_socket.isra' at ../../lib/multi.c:3292:28:
  ../../lib/multi.c:4132:15: error: null pointer dereference [-Werror=null-dereference]
   4132 |   return multi->xfers_alive;
        |          ~~~~~^~~~~~~~~~~~~
  ```
  Ref: https://github.com/curl/curl/actions/runs/26218822231/job/77148186045

- multi: also add `DEBUGASSERT(multi)` to the two updated functions.

Closes #21707

2 months agocmake: opt in `MSVC_VERSION` 1951 to picky warnings
Viktor Szakats [Thu, 21 May 2026 12:58:11 +0000 (14:58 +0200)] 
cmake: opt in `MSVC_VERSION` 1951 to picky warnings

Closes #21714

2 months agoGHA/windows: bump windows-2025 runners to windows-2025-vs2026
Viktor Szakats [Thu, 21 May 2026 12:49:31 +0000 (14:49 +0200)] 
GHA/windows: bump windows-2025 runners to windows-2025-vs2026

To silence:
```
NOTICE: windows-2025 requests are being redirected to windows-2025-vs2026 by June 15, 2026
```

Closes #21713

2 months agoGHA: simplify boolean `if` comparisons
Viktor Szakats [Thu, 21 May 2026 09:28:58 +0000 (11:28 +0200)] 
GHA: simplify boolean `if` comparisons

Closes #21709

2 months agotest1185: fix to previous commit
Viktor Szakats [Thu, 21 May 2026 09:24:15 +0000 (11:24 +0200)] 
test1185: fix to previous commit

Follow-up to 419b1c0b751b257bd54787618454d90fe88e7b79 #21703

2 months agochecksrc: detect `curlx_safefree()` opportunities
Viktor Szakats [Wed, 20 May 2026 22:51:04 +0000 (00:51 +0200)] 
checksrc: detect `curlx_safefree()` opportunities

Follow-up to bcd0497c8112e05412d2c649e8d9eea2bda8020e #21700
Follow-up to 1c3289c85e1a7a939464d5c5e84382d2e250e611 #21684
Follow-up to c0f0e400e0bc43cbe8c42c6937ed0ac743a8d81a #5968
Follow-up to 0f4a03cbb6fdb84d05cb6aafe50444edad4f4119

Closes #21703

2 months agodocs: note CURLOPT_PINNEDPUBLICKEY has no effect on legacy LDAP backend
Joshua Rogers [Tue, 19 May 2026 21:14:01 +0000 (23:14 +0200)] 
docs: note CURLOPT_PINNEDPUBLICKEY has no effect on legacy LDAP backend

Closes #21682

2 months agotidy-up: use `curlx_safefree()`
Viktor Szakats [Wed, 20 May 2026 18:43:59 +0000 (20:43 +0200)] 
tidy-up: use `curlx_safefree()`

Closes #21700

2 months agotests: add an assert to avoid IPC blocking
Dan Fandrich [Tue, 5 May 2026 03:48:52 +0000 (20:48 -0700)] 
tests: add an assert to avoid IPC blocking

If so much data is being sent over the internal IPC pipe that the pipe
buffer fills and the syscall blocks, the program will hang. Add an
assert to ensure that this limit is never reached. The buffer size is
going to be different on different platforms, so choose 1KB which is
likely to be a reasonable lower bound on just about any system.
Currently, the maximum amount ever written is <100 bytes, so this should
provide plenty of headroom.

Spotted by Codex Security

Closes #21688

2 months agoschannel: fix revoke_best_effort setting for proxy
Joshua Rogers [Tue, 19 May 2026 21:32:26 +0000 (23:32 +0200)] 
schannel: fix revoke_best_effort setting for proxy

- Fix revoke_best_effort reading wrong ssl config.

Prior to this change the revoke_best_effort setting for the proxy was
wrongly ignored in favor of the same setting for the destination host.

In other words, CURLSSLOPT_REVOKE_BEST_EFFORT set via
CURLOPT_PROXY_SSL_OPTIONS did not apply to the proxy and
CURLSSLOPT_REVOKE_BEST_EFFORT set via CURLOPT_SSL_OPTIONS wrongly
applied to the proxy.

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

2 months agocfilters: fix busy loop on blocked transfers
Stefan Eissing [Tue, 19 May 2026 13:31:45 +0000 (15:31 +0200)] 
cfilters: fix busy loop on blocked transfers

When a transfer gets paused after the connection has been established,
any data sitting in the kernel socket buffers will no longer get read.

Prevent the sockets form being added to the pollsets, because they
will trigger POLLIN endlessly and cause a busy poll loop. Same in event
based processing.

Reported-by: Harry Sintonen
Fixes https://github.com/curl/curl/issues/21671
Closes https://github.com/curl/curl/pull/21675

2 months agosspi: clear SSPI credentials on AcquireCredentialsHandle failure
penpal [Fri, 15 May 2026 17:53:29 +0000 (23:38 +0545)] 
sspi: clear SSPI credentials on AcquireCredentialsHandle failure

- Clear credentials on AcquireCredentialsHandle failure so it is not
  used on a subsequent call.

SSPI initialization may evaluate the credentials pointer to determine
whether or not a prior call to AcquireCredentialsHandle was successful,
therefore we must clear it on a failed call.

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

2 months agocmake: quote `COMPONENTS` string in `curl-config.in.cmake`
Viktor Szakats [Wed, 20 May 2026 16:43:41 +0000 (18:43 +0200)] 
cmake: quote `COMPONENTS` string in `curl-config.in.cmake`

For consistency and for handling an accidental empty more gracefully.

Follow-up to 7d546e52b21c94e1d4f6669d2d4d64f79bff0d7b #21540

Closes #21699

2 months agosetopt: clear proxy auth properly on NULL
Daniel Stenberg [Wed, 20 May 2026 11:39:25 +0000 (13:39 +0200)] 
setopt: clear proxy auth properly on NULL

Verify NULLed proxy credentials with test1648

Closes #21696

2 months agoDockerfile: fix typo in variable name
Viktor Szakats [Wed, 20 May 2026 10:01:40 +0000 (12:01 +0200)] 
Dockerfile: fix typo in variable name

Did not cause an actual issue.

Spotted by GitHub Code Quality

Follow-up to 41c03b4c98dbc639a32d32486ed5146be2e73ee1 #13250

Closes #21693

2 months agoGHA/non-native: drop DragonFlyBSD job, due to unreliable package repo updates
Viktor Szakats [Wed, 20 May 2026 01:42:49 +0000 (03:42 +0200)] 
GHA/non-native: drop DragonFlyBSD job, due to unreliable package repo updates

Example:
```
Wed, 20 May 2026 09:51:48 GMT Updating Avalon repository catalogue...
Wed, 20 May 2026 09:51:48 GMT pkg: An error occurred while fetching package: No error
Wed, 20 May 2026 09:51:48 GMT pkg: An error occurred while fetching package: No error
Wed, 20 May 2026 09:51:48 GMT repository Avalon has no meta file, using default settings
Wed, 20 May 2026 09:51:48 GMT pkg: An error occurred while fetching package: No error
Wed, 20 May 2026 09:51:48 GMT pkg: An error occurred while fetching package: No error
Wed, 20 May 2026 09:51:48 GMT pkg: An error occurred while fetching package: No error
Wed, 20 May 2026 09:51:48 GMT pkg: An error occurred while fetching package: No error
Wed, 20 May 2026 09:51:48 GMT Unable to update repository Avalon
Wed, 20 May 2026 09:51:48 GMT Error updating repositories!
Wed, 20 May 2026 09:51:48 GMT Error: Process completed with exit code 3.
```

As tested over at libssh2, retrying the install command also does not
help, only repeats the same failure.

Also: fix whitespace in matrix.

Follow-up to b158d1c9f7456a8f976c74c08d2dc5a555e9cc77 #21681

Closes #21694

2 months agourlapi: compare zone-id in Curl_url_same_origin()
Joshua Rogers [Tue, 19 May 2026 23:03:31 +0000 (01:03 +0200)] 
urlapi: compare zone-id in Curl_url_same_origin()

Closes #21686

2 months agowebsockets: auto-tunnel through http proxy
Stefan Eissing [Wed, 20 May 2026 08:30:25 +0000 (10:30 +0200)] 
websockets: auto-tunnel through http proxy

When using a ws: or wss: url with a http proxy, automatically
switch to tunneling operation mode.

Add test_20_10 to check.

Fixes #21663
Closes #21691

2 months agoGHA/non-native: move BSDs to a single matrix, add DragonFly and Midnight
Viktor Szakats [Tue, 19 May 2026 17:05:41 +0000 (19:05 +0200)] 
GHA/non-native: move BSDs to a single matrix, add DragonFly and Midnight

- bump cross-platform-actions to v1.1.0.
  Ref: https://github.com/cross-platform-actions/action/releases/tag/v1.1.0

- merge BSD jobs into a single matrix.

- split BSD jobs into build steps as used for other platforms.
  A new feature of cross-platform-actions v1.1.0.

- sync BSD build steps with other platforms.

- add DragonFlyBSD and MidnightBSD to the BSD matrix.
  New features of cross-platform-actions v1.1.0.
  MidnightBSD uses GnuTLS to add variation, also the preinstalled
  OpenSSL is too old (v1.1.1w) for curl.
  Stick with autotools for DragonFlyBSD; I could not figure out how
  to install cmake.
  Refs:
  https://en.wikipedia.org/wiki/DragonFly_BSD
  https://en.wikipedia.org/wiki/MidnightBSD

- bump Intel FreeBSD jobs from v14.3 to v15.0.

- fix to show `gcc` in the NetBSD job name.

All these saved 50 lines of YAML. The two new jobs take 2m15s each. The
bump to FreeBSD 15 needs and extra minute in total.

Note, the DragonFlyBSD job seems to have reliability issues. If it
remains an issue, I'll comment it out or delete it in a future commit.

Closes #21681

2 months agoDockerfile: update debian:bookworm-slim Docker digest to 0104b33
renovate[bot] [Wed, 20 May 2026 01:15:47 +0000 (01:15 +0000)] 
Dockerfile: update debian:bookworm-slim Docker digest to 0104b33

Closes #21687

2 months agorunner.pm: apply minor correctness fix
Viktor Szakats [Sat, 16 May 2026 16:58:47 +0000 (18:58 +0200)] 
runner.pm: apply minor correctness fix

"Lines 244-245 overwrite global variables `$runnerr` and `$runnerw` that
were already assigned in the child process (lines 205-206). In the
parent process context, these assignments appear incorrect and could
cause issues if `runner_init` is called multiple times. The parent
should only store references in the controller hashes."

It could never cause an actual issue, but clarifies the intent of the
code.

Spotted and fixed by GitHub Code Quality

Cherry-picked from #21646

Closes #21672

2 months agotidy-up: miscellaneous
Viktor Szakats [Sat, 16 May 2026 16:47:52 +0000 (18:47 +0200)] 
tidy-up: miscellaneous

- fix typos and wording in documentation and comments.
- KNOWN_BUGS: merge duplicate H1 section.
- test_10_proxy: delete stray expressions.
- Perl: `while()` -> `while(1)`.
- Perl: fix indent, whitespace, drop redundant quotes and parentheses.
- fix casing: URL, SSL, Windows.
- badwords: readd `threadsafe`, add `well-known` (and fix it).
- replace `WinXP` -> `Windows XP` to match other uses.

Closes #21646

2 months agounit3303, unit3304: tidy-ups
Viktor Szakats [Tue, 19 May 2026 22:17:58 +0000 (00:17 +0200)] 
unit3303, unit3304: tidy-ups

- use `curlx_safefree()`.
- drop redundant blocks.

Follow-up to 7541ae569d82fb308a5e2d94916027da4fa3ba3e #21667

Closes #21684

2 months agotls: fix incomplete mTLS config in conn reuse and session cache
Joshua Rogers [Tue, 19 May 2026 09:47:50 +0000 (11:47 +0200)] 
tls: fix incomplete mTLS config in conn reuse and session cache

cert_type, key, key_type, key_passwd and key_blob lived in
ssl_config_data but not in ssl_primary_config, so they were invisible to
match_ssl_primary_config() and to the TLS session cache peer key.

Two easy handles sharing a connection pool could reuse each other's
authenticated connections when they differed only on SSLKEY, SSLKEYTYPE,
KEYPASSWD, SSLCERTTYPE or SSLKEYBLOB. The second handle would silently
inherit the first handle's authenticated identity.

Promote all five fields into ssl_primary_config so the conn-reuse
predicate and session cache key cover the complete client credential
set. Also replace the fixed ":CCERT" session cache marker with the
actual clientcert path so sessions are not shared across different
client certificates.

Verified by test 3303 and 3304

Reported-By: Joshua Rogers (AISLE Research)
Closes #21667

2 months agoGHA/non-native: alpha-sort BSD jobs
Viktor Szakats [Tue, 19 May 2026 16:56:01 +0000 (18:56 +0200)] 
GHA/non-native: alpha-sort BSD jobs

Closes #21680

2 months agourl: detect proxy changes read from environment
Daniel Stenberg [Mon, 18 May 2026 21:47:11 +0000 (23:47 +0200)] 
url: detect proxy changes read from environment

When a proxy is set from an environment variable, detect if that proxy
is not the same as previously and flush state.

Verified by test1647: verify changing proxy with env variables and make
sure Digest state is flushed in the second use

Closes #21666

2 months agoBUFQ.md: re-sync with source code
Viktor Szakats [Tue, 19 May 2026 13:04:46 +0000 (15:04 +0200)] 
BUFQ.md: re-sync with source code

Also:
- move bullet points out from C code fences.
- fold long lines.

Follow-up to d4983ffc134addd20bea18987dec7c3b771e74a4 #17396

Closes #21678

2 months agotidy-up: rename more `CURLcode` variables to `result`
Viktor Szakats [Tue, 19 May 2026 12:49:28 +0000 (14:49 +0200)] 
tidy-up: rename more `CURLcode` variables to `result`

Follow-up to 885b553545a74365f4fc2541a0829f7745e80d37 #21348

Closes #21676

2 months agodocs: tidy-up scheme references
Viktor Szakats [Mon, 18 May 2026 16:38:25 +0000 (18:38 +0200)] 
docs: tidy-up scheme references

After this patch `://` schemes are lowercase and enclosed in backticks.

Also:
- docs/libcurl/libcurl-multi.md: drop a stray C code fence.
- docs/libcurl/libcurl-tutorial.md: replace single/double quotes with
  Markdown markup where applicable.

Ref: #21646

Closes #21674

2 months agounit1304: use enum type and values, rename `result` to `res`
Viktor Szakats [Tue, 19 May 2026 08:12:35 +0000 (10:12 +0200)] 
unit1304: use enum type and values, rename `result` to `res`

Ref: #21646

Closes #21673

2 months agomanagen: apply minor fixes and improvements
Viktor Szakats [Sat, 16 May 2026 16:20:37 +0000 (18:20 +0200)] 
managen: apply minor fixes and improvements

- replace `goto` with `while` loop.
- fix newlines in a warning message.
- handle open error for `curl/curlver.h` header.

Ref: #21646

Closes #21670

2 months agovtls: use Curl_safecmp for CRLfile and pinned_key comparison
Joshua Rogers [Tue, 19 May 2026 10:29:34 +0000 (12:29 +0200)] 
vtls: use Curl_safecmp for CRLfile and pinned_key comparison

Both are filesystem paths (or case-sensitive hash strings for
pinned_key). curl_strequal is case-insensitive and would treat
/etc/ssl/Crl.pem and /etc/ssl/crl.pem as the same file, unlike the other
path fields (CApath, CAfile, issuercert, clientcert) which already use
Curl_safecmp.

Closes #21668

2 months agodocs/libcurl: fix the version for curl_multi_socket_action
Dan Fandrich [Tue, 19 May 2026 05:30:57 +0000 (22:30 -0700)] 
docs/libcurl: fix the version for curl_multi_socket_action

It was added in 7.16.3, not 7.15.4 (that's when curl_multi_socket was
added).

2 months agocreds: mask OAuth bearer token in trace logs
Shintomon Mathew [Mon, 18 May 2026 14:02:45 +0000 (19:32 +0530)] 
creds: mask OAuth bearer token in trace logs

Masked OAuth bearer tokens in credential trace output by emitting ***
when a bearer token is present, matching the existing password redaction
behavior and preventing sensitive token disclosure in verbose/debug
logs.

Closes #21659

2 months agotest1588: use %TESTNUMBER, not hard-coded number
Daniel Stenberg [Mon, 18 May 2026 20:59:14 +0000 (22:59 +0200)] 
test1588: use %TESTNUMBER, not hard-coded number

Closes #21662

2 months agoVULN-DISCLOSURE-POLICY.md: test code is not secure
Daniel Stenberg [Mon, 18 May 2026 14:05:49 +0000 (16:05 +0200)] 
VULN-DISCLOSURE-POLICY.md: test code is not secure

Don't tell us about it

Closes #21660

2 months agocurl_easy_pause.md: rephrase the stream cache when pause clause
Daniel Stenberg [Mon, 18 May 2026 13:41:24 +0000 (15:41 +0200)] 
curl_easy_pause.md: rephrase the stream cache when pause clause

- mention HTTP/3
- it is 10 MB per stream these days

Closes #21658

2 months agotest1646: netrc parsing without user match but user in URL
Daniel Stenberg [Fri, 15 May 2026 22:54:13 +0000 (00:54 +0200)] 
test1646: netrc parsing without user match but user in URL

Follow-up to 4ae1d7cc2643e

2 months agonetrc: scanner refactor
Stefan Eissing [Fri, 15 May 2026 09:45:49 +0000 (11:45 +0200)] 
netrc: scanner refactor

Refactor the netrc scanner. Add test case for checking that the last
matched machine with unmatched login does not return the password as
success (unit1304).

Closes #21624

2 months agocurl_easy_setopt.md: change options when no transfer runs
Daniel Stenberg [Mon, 18 May 2026 12:15:28 +0000 (14:15 +0200)] 
curl_easy_setopt.md: change options when no transfer runs

Underscore this. Changing them mid-transfer may cause problems.

Fixes #21604
Reported-by: Joshua Rogers
Closes #21657

2 months agovtls_scache: include signature_algorithms in the SSL peer cache key
Mark Esler [Sat, 16 May 2026 22:07:15 +0000 (15:07 -0700)] 
vtls_scache: include signature_algorithms in the SSL peer cache key

Curl_ssl_peer_key_make() omitted ssl->signature_algorithms, although
match_ssl_primary_config() compares the field. Two handles differing
only in CURLOPT_SSL_SIGNATURE_ALGORITHMS therefore shared a peer key and
could resume each other's sessions across a shared CURLSH SSL session
cache.

Add :SIGALGS-%s next to the other ssl_primary_config fields.

Closes #21651

2 months agomk-unity.pl: `#include`, and not concatenate input headers
Viktor Szakats [Mon, 18 May 2026 09:50:37 +0000 (11:50 +0200)] 
mk-unity.pl: `#include`, and not concatenate input headers

When using `-D_CURL_TESTS_CONCAT=ON` with CMake, do not concatenate
`first.h` (or any future header) into the output C file, but `#include`
it instead. This is to play nice with compilers and analyzers which may
apply different checker rules on logic found in headers, vs. the input
source file. As seen for example with `-Wunused-macro` enabled in CI.
After this patch concatenated sources behave closer to regular C
sources.

Also:
- first.h: drop some `-Wunused-macro` silencers that became redundant
  with this patch.

Follow-up to 47f411c6d840dcee63a2ac9cbc0bfbea522ac5cd #21554
Follow-up to 39542f09935aba0b7130c20b6aae0be5cd6ff709 #20667

Closes #21656

2 months agoscripts/contri*: fix the Credits-to regex
Daniel Stenberg [Sun, 17 May 2026 21:55:48 +0000 (23:55 +0200)] 
scripts/contri*: fix the Credits-to regex

On my suggestion, the regex turned up wrong when looking for Credits-to
in git logs. This adjustment allows the leading spaces.

Follow-up to 64adc43a6ea07e4d807bbf9b5

Closes #21655

2 months agocmake: fix three issues generating lib options in config files
Viktor Szakats [Sun, 17 May 2026 12:04:49 +0000 (14:04 +0200)] 
cmake: fix three issues generating lib options in config files

- drop duplicate libs lists next to each other in `libcurl.pc`.
  Logic copied from libssh2.
  Fixing (seen in a local build):
  ```diff
  -Libs.private: -lssh2 -lz -lz -lldap -llber -lssl -lcrypto -lcrypto -lz -lbrotlidec -lbrotlicommon -lzstd -lnghttp2 -licucore -liconv -lpsl -lbacktrace
  +Libs.private: -lssh2 -lz -lldap -llber -lssl -lcrypto -lz -lbrotlidec -lbrotlicommon -lzstd -lnghttp2 -licucore -liconv -lpsl -lbacktrace
  ```
  Refs:
  https://github.com/libssh2/libssh2/commit/e1da7b2cb89063fc253bf94570c1ccfb3f1c2e81
  https://github.com/libssh2/libssh2/pull/1621
  https://github.com/libssh2/libssh2/commit/6464301820a9ca4a56c5f02717430bbd4150c7b2
  https://github.com/libssh2/libssh2/pull/1131

- handle `$<LINK_ONLY:NAMESPACE::NAME>` references.
  Fixing (seen in a local build using libssh2 v1.11.2-DEV):
  ```diff
  -Libs.private: -lssh2 -l$<LINK_ONLY:OpenSSL::Crypto> -lz -lldap -llber [...]
  +Libs.private: -lssh2 -lcrypto -lz -lldap -llber [...]
  ```

- fix `-l-pthread` sneaking into `libcurl.pc`.
  Fixing (seen with Android):
  ```diff
  -Libs.private:  -lz -l-pthread
  +Libs.private: -pthread -lz
  ```
  Refs:
  https://github.com/microsoft/vcpkg/blob/2b65c20fc66eda893aa15a15a453c3cf09500b19/ports/curl/dependencies.patch#L631-L634
  https://github.com/microsoft/vcpkg/commit/70b941a5d2443e79eeab62507acb41bd22201277#diff-7f2c3b2f93cd3478671a603cbd5ef818c7c403a11dc25e1d3539e9b03495a5d3
Upstream-patch-by: Kai Pastor
Closes #21654

2 months agoscripts: catch Credits-to contributors
Viktor Szakats [Sun, 17 May 2026 11:33:07 +0000 (13:33 +0200)] 
scripts: catch Credits-to contributors

Also:
- THANKS: add Credits-to attribution missed earlier.

Closes #21653

2 months agoconnect: remove deref of freed pointer in trace call
Daniel Stenberg [Sat, 16 May 2026 21:59:05 +0000 (23:59 +0200)] 
connect: remove deref of freed pointer in trace call

Spotted by CodeSonar

Closes #21649

2 months agourlapi: prevent a terminal `.0x` component to normalize IPv4
Daniel Stenberg [Sat, 16 May 2026 22:27:30 +0000 (00:27 +0200)] 
urlapi: prevent a terminal `.0x` component to normalize IPv4

Extend test 1560 to verify

Follow-up to 831a1514843bfa4d4d006627

Spotted by Codex Security
Closes #21652

2 months agobuild: omit zlib pkg-config reference for Android
Viktor Szakats [Sat, 16 May 2026 21:38:11 +0000 (23:38 +0200)] 
build: omit zlib pkg-config reference for Android

In both autotools and cmake builds, because Android does not offer
a `zlib.pc`.

Also:
- GHA/non-native: dump config files, to verify.

Reported-by: sfan5 on github
Fixes #21647

Closes #21648

2 months agourl: remove superfluous check
Daniel Stenberg [Sat, 16 May 2026 22:02:08 +0000 (00:02 +0200)] 
url: remove superfluous check

This pointer is already verified to be non-NULL some 15 lines above.

Pointed out by CodeSonar
Closes #21650

2 months agocf-h2-prox: fix peer leak
Stefan Eissing [Fri, 15 May 2026 11:37:36 +0000 (13:37 +0200)] 
cf-h2-prox: fix peer leak

The unlinking of the new Curl_peer was happening too later after
the struct had been set to zero. Move the unlink to happen before
that.

Fixes #21602
Reported-by: Joshua Rogers
Closes #21627

2 months agoRELEASE-NOTES: synced
Daniel Stenberg [Sat, 16 May 2026 21:09:52 +0000 (23:09 +0200)] 
RELEASE-NOTES: synced

2 months agounix-sockets: ignore proxy settings
Stefan Eissing [Fri, 15 May 2026 12:11:13 +0000 (14:11 +0200)] 
unix-sockets: ignore proxy settings

Fix a recent regression: when a unix-socket is configured, all proxy
settings must be ignored. The `via_peer` had been checked correctly,
but the connections proxy bits were not cleared.

Add test_11_04 to verify.

Reported-by: Fabian Keil (libcurl mailing list)
Closes #21630

2 months agolib678: fix to not be perma-skipped
Viktor Szakats [Sat, 16 May 2026 01:56:33 +0000 (03:56 +0200)] 
lib678: fix to not be perma-skipped

Prior to this patch the test was always skipped due to failing precheck
with `CURLE_BAD_FUNCTION_ARGUMENT`, because of the zero-length blob
passed to setopt. Fix by passing a non-zero long dummy blob as done in
`mk-lib1521.pl`.

Fixing:
```
test 0678 SKIPPED: CURLOPT_CAINFO_BLOB is not supported
```

Follow-up to 956e1ae84f2fec9f027b4ce80999744326b30992 #20705

Closes #21641

2 months agorunner.pm: set `CURL_TESTNUM` for `precheck` commands
Viktor Szakats [Sat, 16 May 2026 01:38:19 +0000 (03:38 +0200)] 
runner.pm: set `CURL_TESTNUM` for `precheck` commands

Closes #21640

2 months agoSSLCERTS: document 8.19.0 default Native CA builds (Windows)
Viktor Szakats [Fri, 15 May 2026 23:51:17 +0000 (01:51 +0200)] 
SSLCERTS: document 8.19.0 default Native CA builds (Windows)

Ref: https://curl.se/docs/sslcerts.html

Follow-up to 1730407b74f41cfd33f189348be54d0504b7c291 #18279
Reported-by: chrizilla on github
Fixes #21634

Closes #21639

2 months agosetopt: fix to honor `CURLOPT_PROXY_CAINFO_BLOB` over Native CA
Viktor Szakats [Fri, 15 May 2026 12:33:07 +0000 (14:33 +0200)] 
setopt: fix to honor `CURLOPT_PROXY_CAINFO_BLOB` over Native CA

In AppleSecTrust or NativeCA-enabled builds, make sure override it when
setting a custom `CURLOPT_PROXY_CAINFO_BLOB`.

Reported-by: Joshua Rogers (Aisle Research)
Follow-up to 1730407b74f41cfd33f189348be54d0504b7c291 #18279
Follow-up to eefd03c572996e5de4dec4fe295ad6f103e0eefc #18703

Closes #21631