Commit graph

36650 commits

Author SHA1 Message Date
Daniel Stenberg
fe9e0115b1
tests: reduce max allowed allocations for four tests
and completely remove the check for one

Closes #19260
2025-10-28 23:28:50 +01:00
Daniel Stenberg
875ea98c36
schannel: handle Curl_conn_cf_send() errors better
Avoid a resource leak in the error path.

Reported-by: Joshua Rogers

Closes #19265
2025-10-28 23:26:33 +01:00
Daniel Stenberg
9308ea22e8
cookie: remove the temporary file on (all) errors
Fixes #19267
Reported-by: Harry Sintonen
Closes #19268
2025-10-28 16:51:30 +01:00
x2018
02113a6307
Curl_resolv: explicitly set *entry to NULL at the top
Closes #19263
2025-10-28 11:39:13 +01:00
Daniel Stenberg
bc99770217
singleuse.pl: fix string warning
"Use of uninitialized value $unittests in concatenation on line 170"

Closes #19266
2025-10-28 11:34:19 +01:00
Viktor Szakats
fa49c50ac3
tests/server/dnsd: fix potential buffer overflow
When handling incoming DNS packets.

Reported-by: Joshua Rogers

Closes #19261
2025-10-27 21:55:36 +01:00
Daniel Stenberg
73811b4c51
header: see-also --proxy-header and vice versa
Closes #19259
2025-10-27 17:24:18 +01:00
Daniel Stenberg
05eea37e78
CURLOPT_SERVER_RESPONSE_TIMEOUT*: add default and see-also
Also move the old name mention to a HISTORY section

Closes #19258
2025-10-27 17:23:17 +01:00
Stefan Eissing
692c7f133e
TLS: IP address verification, extend test
Change the test certificate to carry a altname 'dns:127.0.0.1' which
should *not* match in test_17_05_bad_ip_addr.

wolfSSL: since `wolfSSL_check_domain_name()` does not differentiate
between DNS and IP names, use if only for DNS names. For IP addresses,
get the peer certificate after the handshake and check that using
wolfSSL_X509_check_ip_asc().

Unfortunately, this succeeds where it should not, as wolfSSL internally
used the same check code for both cases. So, skip the test case until
wolfSSL fixes that.

Reported-by: Joshua Rogers
Closes #19252
2025-10-27 17:22:17 +01:00
Daniel Stenberg
2bb33c18a7
pingpong: change repsonse timeout to one minute
It was previously two minutes by default and sometimes one minute.
Removes a struct field.

Closes #19254
2025-10-27 16:33:30 +01:00
x2018
6c97ff8c12
socks: properly maintain the status of 'done'
Closes #19255
2025-10-27 16:31:37 +01:00
Daniel Stenberg
f9dfabb42a
test1802: test --proxy-headers and --headers setting user-agent 2025-10-27 09:52:05 +01:00
Daniel Stenberg
cdd945e486
http_proxy: fix adding custom proxy headers
Reported-by: Joshua Rogers
Fixes #19227
Closes #19239
2025-10-27 09:52:00 +01:00
Samuel Henrique
fb0c014e30
wcurl: sync to +dev snapshot
Closes #19247
2025-10-27 08:09:58 +01:00
Viktor Szakats
ab20bb47cf
GHA/linux: make OpenLDAP local build smaller
By disabling its `slapd` component, that's not needed for curl.

Cache size: 2.7 -> 1.7 MB

Also merge two `make` invocations.

Closes #19250
2025-10-27 07:17:32 +01:00
TheBitBrine
a49e4e3d16
pop3: fix CAPA response termination detection
The code was checking if a line starts with '.', which would
incorrectly match capability names starting with dots. Per RFC 2449,
the terminator must be a line containing only a single dot.

RFC 2449 also explicitly excludes '.' from valid capability name
starting characters, so this is purely theoretical, but the code
should match the spec.

Changed to check for exact match: line length of 3 with '.\r' or
length 2 with '.\n' to handle both CRLF and LF-only servers.

(Mistake detected with ZeroPath)

Fixes #19228
Reported-by: Joshua Rogers
Closes #19245
2025-10-26 10:59:20 +01:00
Daniel Stenberg
b602de775e
test776: set as 'flaky'
I have not figured out why, but having this test failing in CI every so often
is disturbing.

Reported-by: Viktor Szakatas
Fixes #19235
Closes #19243
2025-10-26 10:47:40 +01:00
Viktor Szakats
4f03e3fcbd
socks_gssapi: also reset buffer length after free
To mimic this behavior of the previously used `gss_release_buffer()`.

Some or all of these zero assignments may be redundant.

Follow-up to e7818999db #19018

Closes #19167
2025-10-26 01:52:41 +02:00
Viktor Szakats
18119eb916
ECH.md: make OpenSSL branch clone instructions work
Closes #19237
2025-10-26 01:19:12 +02:00
renovate[bot]
c59bf90186
GHA: update nghttp2/nghttp2 to v1.68.0
Closes #19238
2025-10-25 17:58:18 +02:00
Daniel Stenberg
6f36d58c25
RELEASE-NOTES: synced 2025-10-25 17:55:58 +02:00
Daniel Stenberg
3e12ed955b
schannel: lower the maximum allowed time to block to 7 seconds
During TLS renegotiation, the schannel_recv_renegotiate() function is
allowed to block for a short while. Reduce the maximum allowed time to
block from 10 minutes down to 7 seconds.

Closes #19205
2025-10-25 17:52:29 +02:00
Viktor Szakats
a3793ee7e3
GHA/windows: delete MSYS2 ARM64 workaround
Follow-up to 5249b99a70 #18438
Follow-up to c4e776cafa #17103

Closes #19234
2025-10-25 00:19:00 +02:00
renovate[bot]
af8c98a0f3
GHA: bump GitHub artifact Actions
- actions/download-artifact: v5.0.0 -> v6.0.0
- actions/upload-artifact: v4.6.2 -> v5.0.0

Closes #19232
2025-10-25 00:19:00 +02:00
Viktor Szakats
a13d811044
lib: delete unused header includes
`escape.h`, `getinfo.h`, `strdup.h`.

Tested OK with full non-unity CI run.

Closes #19231
2025-10-25 00:19:00 +02:00
Viktor Szakats
71d1eec675
tidy-up: miscellaneous
- cmake/Find*: make double quotes consistent.
- drop redundant parenthesis.
- GHA/checksrc: sync a step name with others.
- whitespace.

Closes #19233
2025-10-25 00:19:00 +02:00
Viktor Szakats
543b78652a
curl_ngtcp2: fix -Wunreachable-code with H3 !verbose !unity clang
Not tested in default CI.

macOS / CM clang OpenSSL gsasl rtmp AppleIDN SecTrust +examples,
macOS / CM llvm@18 OpenSSL gsasl rtmp AppleIDN SecTrust +examples:
```
lib/vquic/curl_ngtcp2.c:530:5: error: code will never be executed [-Werror,-Wunreachable-code]
  530 |     const ngtcp2_transport_params *rp;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
```
Ref: https://github.com/curl/curl/actions/runs/18787154442/job/53608230871?pr=19225#step:11:183

Confirmed fixed via #19225
Closes #19226
2025-10-24 22:53:26 +02:00
Viktor Szakats
3fc727751f
lib: delete unused crypto header includes
Tested OK with full non-unity CI run.

Closes #19225
2025-10-24 22:53:26 +02:00
Viktor Szakats
2b30d29c3c
autotools: merge ifs in GnuTLS/OpenSSL feature detection
Closes #19222
2025-10-24 22:53:26 +02:00
Viktor Szakats
833da09b53
vtls: drop duplicate CURL_SHA256_DIGEST_LENGTH definition
Closes #19224
2025-10-24 19:16:53 +02:00
Viktor Szakats
207a74206b
mbedtls: fix building with sha-256 missing from PSA
Fixing:
```
lib/vtls/mbedtls.c:1505:10: error: call to undeclared function 'Curl_sha256it'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
 1505 |   return Curl_sha256it(sha256sum, input, inputlen);
      |          ^
1 error generated.
```

with mbedTLS configuration:
```
tf-psa-crypto/scripts/config.py unset PSA_WANT_ALG_SHA_256
tf-psa-crypto/scripts/config.py unset PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS
tf-psa-crypto/scripts/config.py unset MBEDTLS_LMS_C
```

Follow-up to 3a305831d1 #19077

Closes #19223
2025-10-24 19:14:28 +02:00
Viktor Szakats
f4293cd81e
GHA/dependabot: group updates
To avoid update spam and PR that can't be applied on top of each other.

Ref: #19217 #19218 #19219

Closes #19220
2025-10-24 15:05:15 +02:00
dependabot[bot]
e0d6ecdf01
GHA: bump pips
- cryptography from 46.0.2 to 46.0.3 in /tests
- filelock from 3.19.1 to 3.20.0 in /tests
- psutil from 7.1.0 to 7.1.1 in /tests

Closes #19217
Closes #19218
Closes #19219
2025-10-24 15:02:24 +02:00
Viktor Szakats
7d0261c228
GHA/checksrc: extend zizmor to Dependabot, set cooldown periods
Closes #19216
2025-10-24 14:01:04 +02:00
Viktor Szakats
87ab1cd255
GHA/fuzz: try fixing concurrency group deadlock
```
Fuzzer
Canceling since a deadlock was detected for concurrency group:
'Fuzzer-82fa9862dfa3083d4014d6dcfb721a7278e66f0b' between a top level workflow and 'Fuzzing'
```
https://github.com/curl/curl/actions/runs/18778617351

Follow-up to 82fa9862df #19215
2025-10-24 13:46:14 +02:00
Viktor Szakats
82fa9862df
GHA: set concurrency: where missing
To silence zizmor 1.16.0 warnings.

Also:
- http3-linux: replace hard-coded workflow name with variable.
  Follow-up to a8174176b5 #13841
- codeql: set `cancel-in-progress: true`.
  zizmor apparently does not allow `false` in pedantic mode anymore:
  https://github.com/zizmorcore/zizmor/pull/1227
- codeql: sync concurrency setting with the rest of the jobs.
  (I'm not sure this is correct, or why it was previously special-cased.)

Expressions used (before and after this patch):
- `group: ${{ github.workflow }}-${{ github.event.sha }}-${{ github.event.target_url }}`
  for GHA/appveyor-status.
- `group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}`
  for all the rest.

Ref: https://github.com/curl/curl/actions/runs/18776245057/job/53571438139?pr=19209

Closes #19215
2025-10-24 13:38:11 +02:00
Viktor Szakats
c96b7c4636
des: merge curl_des into curl_ntlm_core.c
`curl_des.c` contained a single, short, function
`Curl_des_set_odd_parity()`, called from `curl_ntlm_core.c` alone.

Move it there, and define it only when needed.

Follow-up to 300876a7a6
Follow-up to 8cc70db2db

Closes #19209
2025-10-24 12:39:27 +02:00
Viktor Szakats
4a6fbd5e1d
NTLM: disable if DES support missing from OpenSSL or mbedTLS
Make autotools and cmake detect DES support in OpenSSL and mbedTLS.
Forward feature macros to C and omit NTLM from the feature preview list.
Use the feature macros in source. This ensure that `-V` output matches
the preview.

OpenSSL doesn't support DES when built with `no-des` or `no-deprecated`.
mbedTLS 4.x no longer supports it, and it's possible to disable it in
<4 with `scripts/config.py unset MBEDTLS_DES_C`.

Before this patch this worked for
mbedTLS 4 only, and with a regression for pending PR #16973.

Also:

- drop NTLM feature check from `curl_setup.h` in favour of autotools/
  cmake feature macros. This makes `curl_setup.h` no longer need
  to include an mbedTLS header, which in turn makes tests/server build
  without depending on mbedTLS.
  Fixing, in #16973:
  ```
  In file included from tests/server/first.h:40,
                   from bld/tests/server/servers.c:3:
  lib/curl_setup.h:741:10: fatal error: mbedtls/version.h: No such file or directory
    741 | #include <mbedtls/version.h>
        |          ^~~~~~~~~~~~~~~~~~~
  ```
  Ref: https://github.com/curl/curl/actions/runs/18689537893/job/53291322012?pr=16973
  Ref: #19181 (initial fix idea)
  Follow-up to 3a305831d1 #19077

- move back mbedTLS header include and version check from
  `curl_setup.h` to each source which consumes mbedTLS.

- GHA/http3-linux: drop workaround that disabled NTLM for
  `no-deprecated` OpenSSL builds.
  Follow-up to 006977859d #12384

- curl_ntlm_core: drop pointless macro `CURL_NTLM_NOT_SUPPORTED`.
  Follow-up to 006977859d #12384

Closes #19206
2025-10-24 12:12:20 +02:00
Viktor Szakats
1de4a9a5fb
mbedtls: fix building with <3.6.1
```
lib/vtls/mbedtls.c:786:3: error: call to undeclared function 'mbedtls_ssl_conf_tls13_enable_signal_new_session_tickets'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  786 |   mbedtls_ssl_conf_tls13_enable_signal_new_session_tickets(&backend->config,
      |   ^
lib/vtls/mbedtls.c:787:5: error: use of undeclared identifier 'MBEDTLS_SSL_TLS1_3_SIGNAL_NEW_SESSION_TICKETS_ENABLED'; did you mean 'MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH'?
  787 |     MBEDTLS_SSL_TLS1_3_SIGNAL_NEW_SESSION_TICKETS_ENABLED);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH
dep/mbedtls-3.4.0/_pkg/include/mbedtls/ssl.h:700:5: note: 'MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH' declared here
  700 |     MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH,
      |     ^
2 errors generated.
```

Regression from d63e40f8e6 #18271 (8.16.0)

Closes #19208
2025-10-24 12:12:20 +02:00
Daniel Stenberg
ab590ba62f
TODO: a fixed FTP directory listing format
Closes #19212
2025-10-24 11:21:48 +02:00
Daniel Stenberg
576f9f7c07
cfilters: check return code from Curl_pollset_set_out_only()
I added WARN_UNUSED_RESULT to two of the cfilter functions to make this
mistake harder to slip in next time.

Pointed out by CodeSonar

Closes #19211
2025-10-24 11:11:40 +02:00
Dalei
e51966d9df
tool_cfgable: remove superfluous free calls
Fixes #19213
Closes #19214
2025-10-24 11:05:43 +02:00
Daniel Stenberg
48d314f262
connect: for CONNECT_ONLY, CURLOPT_TIMEOUT does not apply
Since using CONNECT_ONLY is by defintion only a connect, we make the
timeleft function return 0 after the connection is done so that it does
not - surprisingly - timeout later.

Fixes #18991
Reported-by: Pavel P
Closes #19204
2025-10-23 22:53:15 +02:00
Daniel Stenberg
3692cd837e
schannel: replace a run-time condition with an assert
For detecting a bad function argument that probably also would cause a
compiler warning.

Closes #19203
2025-10-23 22:52:02 +02:00
Viktor Szakats
3ac38a6b80
md4: drop mbedtls implementation (not available in mbedtls v3+)
Follow-up to 01a2308236 #18254

Closes #19202
2025-10-23 16:47:19 +02:00
Daniel Stenberg
0d1d35fa34
http: only accept ';' as a separator for custom headers
When parsing incoming headers, they need to have a plain normal colon.

Previously out of convenience we used the same parser function for both
cases (incoming + custom set headers via the API) which made the
function too liberal for incoming HTTP traffic.

Closes #19200
2025-10-23 14:18:11 +02:00
Theo Buehler
2edce44065
vtls: remove call to PKCS12_PBE_add()
Curl is one of the last callers of PKCS12_PBE_add(). It has been a noop
since OpenSSL 0.9.8k (2006) stubbed it out when moving the built-in PBE
algorithms to a static table:
b8f702a0af

Closes #19201
2025-10-23 14:13:26 +02:00
Daniel Stenberg
9752d5fe0b
netrc: when the cached file is discarded, unmark it as loaded
Pointed out by ZeroPath

Closes #19199
2025-10-23 13:05:25 +02:00
Stefan Eissing
a330117bb0
smtp: fix EOB handling
SMTP automatically appends a \n.\n to an upload if there is not already
one at the end of the input. The implementation had a bug where this did
not happen, depending on read size and buffering.

Change test 900 to reproduce the failure. The bug only happened for mail
body input of known length, where EOS was known on the last chunk read.
Change test 900 to use an input file and make it large enough.

Fixes #18798
Closes #19193
Reported-by: madoe on github
2025-10-23 13:03:10 +02:00
Stefan Eissing
0a79a599a9
transfer: fix retry for empty downloads on reuse
When a reused connection did transfer 0 bytes, it assumed the transfer
had failed and needed a retry. Add a check for data->red.done, so we can
successfully accept the transfer of a 0-length file via SFTP.

Add test case 1583 to verfiy.

Fix SFTP disconnect debug trace when there was nothing to
disconnect (like when reusing a connection).

Fixes #19165
Reported-by: Alexander Blach
Closes #19189
2025-10-23 13:01:35 +02:00