Commit graph

38602 commits

Author SHA1 Message Date
renovate[bot]
67ce672842
GHA: update awslabs/aws-lc to v1.73.0
Closes #21542
2026-05-10 23:22:45 +02:00
Daniel Stenberg
ea75ccc53b
schannel_verify: avoid out of blob access
The code would previously read one byte past the provided
CURLOPT_CAINFO_BLOB if the blob ends exactly with -----BEGIN
CERTIFICATE-----

Reported-by: Andrew Nesbit
Closes #21543
2026-05-10 23:21:08 +02:00
Daniel Stenberg
b944940828
cookie: simplify strstore(), remove outdated comment
Closes #21541
2026-05-10 00:31:25 +02:00
renovate[bot]
0f6af820c2
Dockerfile: update debian:bookworm-slim Docker digest to 67b30a6
Closes #21539
2026-05-09 15:33:09 +02:00
renovate[bot]
1698a3f857
GHA: update google/boringssl to v0.20260508.0
Closes #21537
2026-05-08 16:46:42 +02:00
Daniel Stenberg
d656ff9458
CURLOPT_ECH.md: simplify the description language
It no longer requires "a special build" of OpenSSL, just OpenSSL 4+.

Emphasize the experimental part a little clearer.

Drop the caveat for wolfSSL from the main description.

Closes #21536
2026-05-08 16:23:05 +02:00
Daniel Stenberg
b174b8b326
ECH: cleanups
- passing an unknown string to CURLOPT_ECH now returns error

  To properly allow applications to spot if they pass in a typo or
  something to libcurl.

- CURLECH_DISABLE is now a plain zero internally, not a dedicated bit which
  simplifies checks for when ECH is enabled

- Dropped the CURLECH_CLA_CFG bit, and just check STRING_ECH_CONFIG

- Turn grease/enable/hard into three different numerical values, no bitmask
  needed

- Convert the struct field 'tls_ech' from an int to a byte.

Closes #21532
2026-05-08 13:09:45 +02:00
Daniel Stenberg
cda0268593
x509asn1: fix operator order in do_pubkey
Check the range before reading data, as it would otherwise read one byte
too many.

Reported-by: Andrew Nesbit
Closes #21533
2026-05-08 10:27:25 +02:00
Daniel Stenberg
3ce10063f1
tool_urlglob: avoid overflow at end of range
Due to how the range span globbing code works, a range that ends with
9223372036854775807 (the maximum signed 63 bit value) cannot be used as
it triggers an integer overflow.

Verified in test 2092

Reported-by: Andrew Nesbit
Closes #21529
2026-05-07 22:58:20 +02:00
Daniel Stenberg
9249aad4c2
ldap: fix minor leak on write callback error
The 'ber' pointer could remain allocated in the exit path if the write
callback returned error for one of the Curl_client_write() calls.

Reported-by: Andrew Nesbit
Closes #21530
2026-05-07 22:57:38 +02:00
Daniel Stenberg
df315692d7
ftp: simplify ftp_done
Closes #21520
2026-05-07 14:53:55 +02:00
Stefan Eissing
a86efdd7ca
url: fix connection reuse for starttls protocols
When a connection is tested for reuse in a transfer that *may* upgrade
to TLS (commonly via STARTTLS), the SSL configuration must match the
existing connection.

Reported-by: Andrew Nesbit
Closes #21522
2026-05-07 14:37:25 +02:00
Stefan Eissing
ef3b7903aa
ftp: remove bits.ftp_use_control_ssl
It's not needed since we can check the connection for SSL use.

Closes #21521
2026-05-07 14:03:48 +02:00
Stefan Eissing
fdd27a538c
auth: cleanups
- rename `req->proxyuserpwd` to `req->hd_proxy_auth`
- rename `req->userpwd` to `req->hd_auth`
- rename parameter `proxytunnel` to `is_connect` for Curl_http_output_auth()
- move path+query concatenation into Curl_http_output_auth(), saving an alloc when no auth is in play
- rename `H1_HD_USER_AUTH` into `H1_HD_AUTH`

Closes #21513
2026-05-07 14:03:00 +02:00
Stefan Eissing
71a5725563
ftp: remove 2 Curl_resolv_blocking() calls
They are no longer needed with the new peers and dns filter.
Connection setup will take care of the resoling and connecting.

Closes #21512
2026-05-07 14:02:13 +02:00
Daniel Stenberg
3e9817cd1b
url: remove ssh_config_matches
The CURLOPT_SSH_HOST_PUBLIC_KEY_* options are documented to verify the
host at connect time and not for connection reuse. Once the SSH host has
been deemed okay, it remains okay as long as the connection survives.

In addition: this function currently always returned TRUE since the
pointers have been NULLed in the SSH backend code before this function
is called.

Follow-up to c31fcf2dec

Reported-by: Andrew Nesbit
Closes #21519
2026-05-07 10:04:51 +02:00
Daniel Stenberg
94729ce4e4
CURLOPT_HAPROXYPROTOCOL.md: only sent for newly setup connections
Closes #21517
2026-05-07 09:11:30 +02:00
Daniel Stenberg
98d818cf2b
tool_formparse: tool2curlparts is no longer recursive
It could otherwise trigger a stack overflow in extreme cases

Reported-by: Andrew Nesbit
Closes #21518
2026-05-07 09:10:24 +02:00
parasol-aser
74bc655bdf
tool1622: assert width and exact format boundaries
Convert the silent "was too long!" diagnostics in the timebuf and
max5data width loops into fail_unless assertions, so a regression in
output width fails the unit test directly instead of only printing.

Add small exact-output tables that probe format-transition boundaries
not necessarily hit by the geometric value sweep: the 99999/100000
suffix kick-in for max5data, and the 6d/01h, 51m, 136y, and >99999y roll
points for timebuf.

Closes #21516
2026-05-07 08:00:03 +02:00
Daniel Stenberg
a946fbb5e6
setopt: gate a few proxy TLS options by checking backend support
The same way the corresponding non-proxy options are checked.

Closes #21514
2026-05-07 07:58:26 +02:00
Daniel Stenberg
67bf021e97
mbedtls: null terminate the private key blob
Unfortunately, mbedtls_pk_parse_key() requires the data to be
null-terminated if the data is PEM encoded (even when provided the exact
length), so this function needs to make a copy that has one.

Reported-by: Elise Vance
Closes #21515
2026-05-07 07:57:56 +02:00
Dan Fandrich
478e280278 tests: fix unit1636 with --disable-progress-meter
Closes #21500
2026-05-06 21:46:40 -07:00
Stefan Eissing
455bebc2c7
peer: fix compare of hostname for uds
Unix domain socket paths need to be compared case-senstive, in contrast
to DNS hostnames.

Follow-up to bc40e09f63

Pointed out by Codex Security

Closes #21511
2026-05-06 10:14:17 +02:00
Daniel Stenberg
06839bda76
RELEASE-NOTES: synced
Also bump pending version to 8.21.0
2026-05-06 09:19:12 +02:00
Daniel Stenberg
21687202d9
tool_formparse: polish error message + make two functions static
Closes #21510
2026-05-06 09:15:03 +02:00
Daniel Stenberg
e0df43b9d3
protocol: introduce typedef for the do_more() function
Instead of using magic values -1, 0 and -1 using enum.

Closes #21509
2026-05-06 08:16:33 +02:00
Daniel Stenberg
2c81cf620e
multi: make multi_runsingle use sub functions for states
The state machine now calls dedicated sub functions for each state, to
reduce the size and complexity.

Closes #21506
2026-05-05 17:54:54 +02:00
Daniel Stenberg
481c9d46f1
hostip: convert Curl_resolv_unix to static resolv_unix
It was only used within this file

Closes #21508
2026-05-05 17:49:12 +02:00
Daniel Stenberg
2cb6ba672d
hsts: rename Curl_hsts() to hsts_check() and make it static
It is no longer used outside of hsts.c

Closes #21507
2026-05-05 17:46:51 +02:00
Daniel Stenberg
80214dca6b
GHA: verify function-lengths
No production code function is allowed to be longer than 500 lines.

The lib/setopt.c:setopt_cptr function is currently exempt, as a single
exception until we make it smaller.

Closes #21492
2026-05-05 16:26:44 +02:00
Daniel Stenberg
f97f01f592
socks_gssapi: simplify Curl_SOCKS5_gssapi_negotiate
Also: pass in NULL when 'conf_state' is not wanted for gss_wrap() and
gss_unwrap()

Closes #21502
2026-05-05 16:24:40 +02:00
Stefan Eissing
bc40e09f63
lib: introduce Curl_peer
`struct Curl_peer` keeps information about a communication endpoint
together. It will replace `conn->host` and `conn->conn_to_host` and
proxyinfo host. It will also become part of `struct ssl_peer`.

It has a reference counter, so an instance can be shared between
connections and filters.

Elminiates `conn->host` and `conn->connect_to_host`, used in the
proxyinfo structures. Passed to DNS resolution and socks filters, etc.

Pass peer to http proxy and socks tunnel filters. Use peer in dns filter
and resolving. Make `Curl_peer` a member in the `struct ssl_peer`.

Add `docs/internals/PEERS.md` for documentation.

Closes #21472
2026-05-05 16:22:11 +02:00
Daniel Stenberg
9c9a4f3eab
thrdqueue.h: minor language polish in comments 2026-05-05 14:34:27 +02:00
Daniel Stenberg
484f724a30
thrdqueue.h: forward declare curl_thrdq unconditionally
This allows the unit tests to have a prototype involving such a struct
pointer - even when the build is done without threaded resolver.

Follow-up to 117d50b4bf

Closes #21503
2026-05-05 14:17:20 +02:00
Daniel Stenberg
03b547f73f
tool_formparse.c: use define instead of magic number
The longest header lines accepted for the -F option is now a define
instead of a magic number. I also bumped it to be an even 8K.

When fixing, I noticed that for some OOM errors curl would display two
error messages. Also fixed here.

Closes #21501
2026-05-05 10:11:10 +02:00
Daniel Stenberg
117d50b4bf
thrdqueue: make thrdq_await_done only for unit tests
It is not used for anything else, so drop Curl_ and make it conditional
accordingly.

Closes #21499
2026-05-05 08:55:49 +02:00
Daniel Stenberg
1ff399c3f7
gtls: fix some typos
Also make gtls_get_ietf_proto() static

Found by Copilot

Closes #21498
2026-05-05 08:46:26 +02:00
Daniel Stenberg
cb9cfee9b0
lib: two minor typos
Spotted by Copilot

Closes #21496
2026-05-04 19:53:49 +02:00
Daniel Stenberg
a575601b5b
show-headers.md: mention bold headers and --no-styled-output
Mentioned-by: Sollace on github
Fixes #21495
Closes #21497
2026-05-04 17:31:08 +02:00
Daniel Stenberg
46e9c65c8f
socks_gssapi: tiny Curl_SOCKS5_gssapi_negotiate cleanups
- use 'result' instead of 'code' for CURLcode variable
- use aprintf() instead of malloc + snprintf

Closes #21493
2026-05-04 16:18:46 +02:00
Daniel Stenberg
a790b634c0
libcurl-easy.md: minor clarifications
Closes #21491
2026-05-04 11:22:05 +02:00
Daniel Stenberg
f69ba0408e
mime: simplify Curl_mime_prepare_headers
Make add_content_disposition() a sub function for that single purpose.

Closes #21490
2026-05-04 11:20:22 +02:00
Daniel Stenberg
6f26ecb734
tool_formparse: cleanups
- explain the get_param_part() function
- make it parse only blanks like the rest of this code
- check for commas explicitly when scanning multiple files (to help code
  understanding)

Closes #21489
2026-05-04 10:57:45 +02:00
Daniel Stenberg
1963b2382c
gtls: simplify Curl_gtls_verifyserver
Move peer certificate verification logic into gtls_verify_cert()

Closes #21488
2026-05-04 10:35:40 +02:00
Daniel Stenberg
f59733be23
setopt: changing the proxy port is also a proxy change
Test 1589 verifies.

Closes #21485
2026-05-04 00:14:06 +02:00
dependabot[bot]
47755c4e69
GHA: bump actions and pips
- update action `actions/cache` from 5.0.4 to 5.0.5
- update action `actions/upload-artifact` from 7.0.0 to 7.0.1
- update action `github/codeql-action` from 4.32.4 to 4.35.2
- update action `msys2/setup-msys2` from 2.31.0 to 2.31.1

- update pip `filelock` from 3.25.2 to 3.29.0
- update pip `impacket` to 0.13.0
- update pip `ruff` from 0.15.10 to 0.15.12

Closes #21483
Closes #21482
2026-05-01 21:19:22 +02:00
Daniel Stenberg
faa4b0692d
tool_formparse.c: fix two minor comment typos
Pointed out by Copilot

Closes #21480
2026-05-01 11:54:08 +02:00
Daniel Stenberg
3f9baa890e
url: simplify parseurlandfillconn
Introduce two helper functions:

- hsts_upgrade()
- setup_hostname()

Closes #21479
2026-05-01 11:53:28 +02:00
Daniel Stenberg
ea392e6b36
RELEASE-NOTES: synced
Also bump the curlver to tenative 8.20.1
2026-05-01 11:34:15 +02:00
Stefan Eissing
c29278cc83
asyn-thrdd: fix result processing without wakeup socketpair
When building curl 8.20.0 with socketpair disabled, there is no
wakeup socket and the resolve results are not processed.

This fix performs result processing in the absence of a wakeup
socket before checking the resolve result.

Closes #21476
2026-05-01 11:30:51 +02:00