Commit graph

38362 commits

Author SHA1 Message Date
Viktor Szakats
9ebf778e82
GHA/linux: add HTTP/3 c-ares scan-build and asan jobs
They use Linuxbrew instead of locally built components.

Linuxbrew limitations compared to the locally built components in
GHA/http3-linux:
- libngtcp2 currently supports OpenSSL only.
- wolfssl can't coexist with openssl.
- somewhat tricky configuration with autotools.

Upside is easy of use, always the latest versions (may be downside),
and availability of almost all packages.

Closes #18693
2025-10-02 10:41:45 +02:00
renovate[bot]
e234c09426
GHA: update dependency openssl/openssl to v3.6.0
Closes #18796
2025-10-01 22:37:20 +02:00
Viktor Szakats
285f64d3a0
GHA/macos: also update LibreSSL source tarball URL
Follow-up to 150567b0d2 #18792
2025-10-01 21:53:16 +02:00
Stefan Eissing
d71ec36d1b
openssl-quic: ignore unexpected streams opened by server
HTTP/3 defines "reserved stream types" that are intended to be ignored
by a receiver. This is part of the "greasing" effort that flexes parts
of the protocol that are needed for future extensions.

curl's OpenSSL-QUIC implementation treated all unexpected streams as
an error. Which seems the right thing to do *but* for these reserved types.
However OpenSSL does not expose this type and thus, curl needs to silently
discard all unexpected streams opened by the server to allow interop
with servers that flex the GREASE parts.

Fixes #18780
Reported-by: Pocs Norbert
Closes #18791
2025-10-01 15:56:58 +02:00
Daniel Stenberg
e891b4195f
cf-socket: tweak a memcpy() to read better
By checking the size of the actual buffer and using that as memcpy
target instead of another union member, this helps readers and static
code analyzers to determine that this is not a buffer overflow.

Ref: #18677
Closes #18787
2025-10-01 15:52:53 +02:00
Daniel Stenberg
bc37765466
form.md: drop reference to MANUAL
Since it isn't linked and users might not understand what it refers to.

Ref: #18755
Closes #18790
2025-10-01 15:51:21 +02:00
Daniel Stenberg
b2ae19eed4
tool_getparam: warn if provided header looks malformed
URL: https://fosstodon.org/@galdor/115298664084113519
Closes #18793
2025-10-01 15:50:43 +02:00
Viktor Szakats
150567b0d2
tidy-up: LibreSSL Git repository URLs and local CI builds
Also:
- point the source tarball to a working URL.
  The GitHub release page misses the official source tarball for 4.1.1.
- GHA/linux: switch LibreSSL build to cmake (syncing with http3-linux.)
- GHA/macos: drop no longer needed LibreSSL build workaround.

Closes #18792
2025-10-01 12:55:20 +02:00
renovate[bot]
0e67d97b83
GHA: update dependency libressl/portable to v4.1.1
Closes #18785
Closes #18786
2025-10-01 12:10:36 +02:00
Samuel Henrique
a5a17b8ddb
wcurl: import v2025.09.27
Closes #18754
2025-10-01 09:26:42 +02:00
Daniel Stenberg
205758d7ea
RELEASE-NOTES: synced 2025-10-01 09:12:10 +02:00
Daniel Stenberg
a2b7a4157c
typos.toml: exclude more from typo checks
- exclude visual studio project templates
- exclude test cases
- allow 'proxys' which is used for "secure proxy" in test code
- allow Tru64 and secur32

Closes #18789
2025-10-01 09:03:27 +02:00
Daniel Stenberg
f284222ffc
TODO: fix a typo
Closes #18788
2025-10-01 08:26:49 +02:00
Stefan Eissing
b022389757
ip-happy: do not set unnecessary timeout
When attempts on all addresses have been started, do no longer set any
EXPIRE_HAPPY_EYEBALLS timeouts.

Fixes #18767
Reported-by: Johannes Schindelin
Closes #18768
2025-10-01 08:01:47 +02:00
Stefan Eissing
d8823e855c
asyn-thrdd resolver: clear timeout when done
When the async threaded resolver thread returned, clear the
started EXPIRE_ASYNC_NAME timeout.

Closes #18769
2025-10-01 07:59:41 +02:00
Viktor Szakats
f97aa8d7ed
tidy-up: fcntl.h includes
- drop from source files without obvious users.
- include in `curlx/fopen.h` also for Windows.

Follow-up to 9678ff5b1b #18776

Closes #18782
2025-09-30 21:57:17 +02:00
renovate[bot]
583b1ad881
GHA: update dependency openssl/openssl to v3.5.4
Closes #18781
2025-09-30 21:57:17 +02:00
Viktor Szakats
9678ff5b1b
build: avoid overriding system open and stat symbols
Replace them by `curlx_open()` and `curlx_stat()`.

To make it obvious in the source code what is being executed.

Also:
- tests/server: stop overriding `open()` for test servers.
  This is critical for the call made from the signal handler.
  For other calls, it's an option to use `curlx_open()`, but
  doesn't look important enough to do it, following the path
  taken with `fopen()`.

Follow-up to 10bac43b87 #18774
Follow-up to 20142f5d06 #18634
Follow-up to bf7375ecc5 #18503

Closes #18776
2025-09-30 16:30:09 +02:00
Viktor Szakats
684f4cdd3e
checksrc: catch banned functions when preceded by (
Also add a test case.

Closes #18779
2025-09-30 13:16:47 +02:00
Viktor Szakats
c478c7efdf
examples: fix two more cases of stat() TOCTOU
Also:
- ftpupload: bump an intermediate variable size.

Follow-up to f13250edf1 #18605

Closes #18778
2025-09-30 12:28:43 +02:00
renovate[bot]
5b086ba188
Dockerfile: update debian:bookworm-slim digest to 7e49091
Closes #18777
2025-09-30 11:32:12 +02:00
Viktor Szakats
dd37d6970c
checksrc: fix possible endless loop when detecting BANNEDFUNC
If the source line had square brackets before the match, the stripping
of the banned function left the original line intact, and repeated the
check on it forever. E.g. with banned function `open` in `lib518.c`:
```c
t518_testfd[0] = open(DEV_NULL, O_RDONLY);
```

Closes #18775
2025-09-30 11:32:12 +02:00
Viktor Szakats
20142f5d06
build: avoid overriding system symbols for fopen functions
By introducing wrappers for them in the curlx namespace:
`curlx_fopen()`, `curlx_fdopen()`, `curlx_fclose()`.

The undefine/redefine/`(function)()` methods broke on systems
implementing these functions as macros. E.g. AIX 32-bit's `fopen()`.

Also:
- rename `lib/fopen.*` to `lib/curl_fopen.*` (for `Curl_fopen()`)
  to make room for the newly added `curlx/fopen.h`.
- curlx: move file-related functions from `multibyte.c` to `fopen.c`.
- tests/server: stop using the curl-specific `fopen()` implementation
  on Windows. Unicode isn't used by runtests, and it isn't critical to
  run tests on longs path. It can be re-enabled if this becomes
  necessary, or if the wrapper receives a feature that's critical for
  test servers.

Reported-by: Andrew Kirillov
Bug: https://github.com/curl/curl/issues/18510#issuecomment-3274393640

Follow-up to bf7375ecc5 #18503
Follow-up to 9863599d69 #18502
Follow-up to 3bb5e58c10 #17827

Closes #18634
2025-09-30 01:10:36 +02:00
Viktor Szakats
10bac43b87
tests/server: drop unsafe open() override in signal handler (Windows)
Turns out the signal handler on Windows still wasn't signal safe after
the previous round of fix. There is an `open()` call made from there,
and `open` happens to be unconditionally overridden via `curl_setup.h`
on Windows, to its local implementation (`curlx_win32_open()`), which
does memory allocations and potentially other things that are not signal
safe.

This is a temporary fix, till avoiding the override of system symbols
`open` and `stat` on Windows.

FTR this did not fix the CI 2304 errors, diskspace fail or job hangs due
to 0xC0000142 fork failure (it's rare all three occurs in the same run):
https://github.com/curl/curl/actions/runs/18110523584?pr=18774

Ref: #18634
Follow-up e95f509c66 #16852
Closes #18774
2025-09-30 01:10:35 +02:00
Viktor Szakats
e17aa98bfe
cmake: use more COMPILER_OPTIONS, LINK_OPTIONS / LINK_FLAGS
- replace `COMPILE_FLAGS` with `COMPILE_OPTIONS` that superceded it.

  Follow-up to 6140dfcf3e
  https://cmake.org/cmake/help/v4.1/prop_sf/COMPILE_FLAGS.html

- replace `target_link_libraries()` with `LINK_FLAGS` property for
  CMake <=3.12, because we are passing linker options (not libs).

  Follow-up to 91720b620e #18468
  Follow-up to 548873921c #17670
  Follow-up to 95aea798db #5843
  https://cmake.org/cmake/help/v3.7/command/target_link_libraries.html
  https://cmake.org/cmake/help/v3.7/prop_tgt/LINK_FLAGS.html

- replace `target_link_options()` with `LINK_OPTIONS` propery for
  CMake 3.13+, to use the modern style.

  Follow-up to 91720b620e #18468
  Follow-up to 548873921c #17670
  https://cmake.org/cmake/help/v3.13/command/target_link_options.html
  https://cmake.org/cmake/help/v3.13/prop_tgt/LINK_OPTIONS.html

Also:

- fix to append to, not override, previously set linker options when
  using `CURL_LIBCURL_VERSIONED_SYMBOLS=ON`. Before this patch, it was
  overwriting linker options when using `CURL_CODE_COVERAGE=ON`.

  Follow-up to 91720b620e #18468

Closes #18762
2025-09-29 13:07:14 +02:00
Viktor Szakats
81a9197102
GHA/linux-old: make one cmake v3.7.2 job verbose
To show the details in cmake builds using the oldest supported version.
Use a legacy method. `--verbose` became supported later, in 3.14.

Closes #18764
2025-09-28 12:33:06 +02:00
Viktor Szakats
a6182865d0
CI: make pip use tests/requirements.txt in Circle CI
Also sync `pip` options with those used in GHA.

Closes #18760
2025-09-28 00:43:24 +02:00
Viktor Szakats
660d915ebd
ci: use --enable-option-checking=fatal in autotools jobs
To avoid typos and non-existing options passed to `./configure` in CI
builds.

Also delete obsolete option `--enable-test-bundles` from Circle CI jobs.

Closes #18759
2025-09-28 00:20:12 +02:00
Viktor Szakats
75d5424979
GHA/windows: tidy up Cygwin jobs
- drop unnecessary installed packages.
- sync built type name with other jobs.

Closes #18758
2025-09-27 19:03:25 +02:00
renovate[bot]
b5c9c858d5
GHA: update dependency awslabs/aws-lc to v1.61.4
Closes #18752
2025-09-27 16:31:13 +02:00
Viktor Szakats
16f721443a
GHA/linux: tidy up AWS-LC local build
To sync with other builds and to use `-B` to avoid a cmake warning and
future breakage.

Closes #18757
2025-09-27 16:29:24 +02:00
Viktor Szakats
95e50ad694
tidy-up: miscellaneous
- GHA/checkdocs: rename `spellcheck` job to `pyspelling` to say
  the exact tool used.
- GHA/checkdocs: restore a comment.
- GHA/linux: add `-B .` to a cmake configure to avoid warning, and
  future breakage.
- autotools: use correct casing for `Schannel`.
- doh: update RFC URL.
- drop redundant parenthesis.
- fix indentation, whitespace.

Closes #18756
2025-09-27 12:59:07 +02:00
Viktor Szakats
8538856662
perlcheck: parallelize
Follow-up to 34b1e146e4 #18745

Closes #18750
2025-09-26 23:50:53 +02:00
Daniel Stenberg
b5ffe30e5b
cf-ip-happy: mention unix domain path, not port number
In the connect error message if a unix domain socket was used.

Reported-by: kuchara on github
Ref: #18748
Closes #18749
2025-09-26 17:29:12 +02:00
Viktor Szakats
34b1e146e4
perlcheck: add script, run in CI, fix fallouts
Add script to run all Perl sources through `perl -c` to ensure no
issues, and run this script via GHA/checksrc in CI.

Fallouts:
- fix two repeated declarations.
- move `shell_quote()` from `testutil.pm` to `pathhelp.pm`, to
  avoid circular dependency in `globalconfig.pm`.

Closes #18745
2025-09-26 14:47:33 +02:00
Daniel Stenberg
72f72f678d
openldap: check ber_sockbuf_add_io() return code
The man page says nothing about what the return code means but Howard
Chu tells me it is 0 on success, -1 on fail.

Help-by: Howard Chu

Closes #18747
2025-09-26 14:29:49 +02:00
Daniel Stenberg
84d9627531
tool_progress: handle possible integer overflows
The progress meters max out at 2^63 bytes.

Reported-by: BobodevMm on github
Fixes #18744
Closes #18746
2025-09-26 10:53:28 +02:00
Stefan Eissing
061e265502
http: handle user-defined connection headers
When there is more than one user-supplied 'Connection: ' header, add
values that curl needs internally to the first one and emit all
subsequent ones thereafter.

Fixes #18662
Reported-by: Evgeny Grin (Karlson2k)
Closes #18686
2025-09-26 09:27:50 +02:00
Daniel Stenberg
500ea90829
RELEASE-NOTES: synced 2025-09-25 23:35:31 +02:00
Daniel Stenberg
16e0a2098d
openssl: fail the transfer if ossl_certchain() fails
Since it would indicate errors to the degree that continuing would just
risk hiding the earlier errors or make things weird.

Inspired by a report in Joshua's sarif data

Closes #18646
2025-09-25 22:25:20 +02:00
renovate[bot]
e27853d36b
GHA: update dependency ruff and github/codeql-action
- update github/codeql-action digest to 303c0ae
- update dependency ruff to v0.13.2

Closes #18716
Closes #18734
2025-09-25 21:53:53 +02:00
Daniel Stenberg
b8f10be4f2
libssh: acknowledge SSH_AGAIN in the SFTP state machine
Reported in Joshua's sarif data

Closes #18740
2025-09-25 17:26:47 +02:00
Daniel Stenberg
9595921b06
libssh: clarify myssh_block2waitfor
Fixed misleading comment. Simplified the bit setup.

Reported in Joshua's sarif data

Closes #18739
2025-09-25 17:26:01 +02:00
Viktor Szakats
e48c1ea415
GHA: use pyspelling directly
To avoid depending on Docker Hub, an Docker image and a GitHub Action.
Also to simplify running this check on a local machine.

Pending question if Dependabot and Mend/Renovate will automatically pick
up `requirements-docs.txt`.

Also:
- enable parallel spellchecking. (also to win back the time lost with
  installing components directly from Debian and pip.)
- pin `pyspelling`.
- link to official `pyspelling` docs.

Closes #18736
2025-09-25 16:59:27 +02:00
Stefan Eissing
f5bae285f3
socks: handle error in verbose trace gracefully
Adjust the flow to always succeed in verbose trace of connect.

Reported in Joshua's sarif data

Closes #18722
2025-09-25 16:55:22 +02:00
Daniel Stenberg
9f75603d4f
tftp: only check address if it was stored
If recvfrom() fails, it might not have stored an address.

Follow-up to c4f9977c66

Pointed out by CodeSonar

Closes #18738
2025-09-25 16:54:19 +02:00
Daniel Stenberg
bebc8df0f7
schannel_verify: use more human friendly error messages
Closes #18737
2025-09-25 16:53:29 +02:00
Viktor Szakats
edbf610c6a
GHA: set HOMEBREW_NO_AUTO_UPDATE=1 for Linuxbrew
In an attempt to make `brew install` commands initialize faster.

Often this command started with 20-50 seconds of delay before this
patch. This is an attempt to make it launch faster.

Cherry-picked from #18736
2025-09-25 15:37:13 +02:00
Viktor Szakats
5b8c80684b
GHA/checksrc: drop no longer used DEBIAN_FRONTEND env
Follow-up to 7d5f8be532 #18708
Cherry-picked from #18736
2025-09-25 15:37:13 +02:00
Daniel Stenberg
882293cc81
KNOWN_BUGS: telnet code does not handle partial writes properly
Reported in Joshua's sarif data

Closes #18735
2025-09-25 14:42:04 +02:00