Commit graph

1073 commits

Author SHA1 Message Date
Viktor Szakats
635dcd6169
add mbedtls openldap pytests 2025-07-19 12:19:22 +02:00
Viktor Szakats
6d5bcfaab9
add temp job revealing an issue
Found while making a typo and accidentally running tests in the MultiSSL job.

```
test 1308...[formpost tests]

libtests returned 44, when expecting 0
 1308: exit FAILED
== Contents of files in the log/15/ dir after test 1308
=== Start of file commands.log
 ./libtest/libtests lib1308 log/15/test-1308 > log/15/stdout1308 2> log/15/stderr1308
=== End of file commands.log
=== Start of file server.cmd
 Testnum 1308
=== End of file server.cmd
=== Start of file stderr1308
 URL: log/15/test-1308
 /Users/runner/work/curl/curl/tests/libtest/lib1308.c:70 Assertion 'res == 0' FAILED: curl_formget returned error
 /Users/runner/work/curl/curl/tests/libtest/lib1308.c:72 Assertion 'total_size == 518' FAILED: curl_formget got wrong size back
 /Users/runner/work/curl/curl/tests/libtest/lib1308.c:88 Assertion 'res == 0' FAILED: curl_formget returned error
 /Users/runner/work/curl/curl/tests/libtest/lib1308.c:89 Assertion 'total_size == 899' FAILED: curl_formget got wrong size back
 Test ended with result 44
=== End of file stderr1308
=== Start of file test-1308
 Piece of the file that is to uploaded as a formpost
```
https://github.com/curl/curl/actions/runs/16387468868/job/46309039397#step:16:2515
2025-07-19 12:07:52 +02:00
Viktor Szakats
1951db34ca
simplify torture tag 2025-07-19 12:02:33 +02:00
Viktor Szakats
99f36781b1
simplify clang-tidy tag
by moving it the `install_steps` instead of having its own special bool field
2025-07-19 12:02:33 +02:00
Viktor Szakats
3d210bace8
simplify special exclusions 2025-07-19 11:49:27 +02:00
Viktor Szakats
891d808c7b
move openldap from mbedtls to wolfssl job, limit mbedtls job to llvm
To keep the number of jobs the same as before this patch, and keep
testing openldap with all 3 compilers.
2025-07-19 11:49:26 +02:00
Viktor Szakats
97b6a3e941
make it gcc-12 for aws-lc 2025-07-19 10:22:00 +02:00
Viktor Szakats
8d92d8901b
limit to single compilers
To limit to 2 new jobs.
2025-07-19 10:21:15 +02:00
Viktor Szakats
4ab36edbeb
try fixup 2025-07-18 23:28:13 +02:00
Viktor Szakats
8bab069957
add aws-lc jobs 2025-07-18 23:18:13 +02:00
Viktor Szakats
2525bfb5b2
add macos rustls jobs 2025-07-18 23:09:15 +02:00
renovate[bot]
e9a4f5cad0
GHA: update dependency wolfSSL/wolfssl to v5.8.2
Closes #17956
2025-07-18 00:54:34 +02:00
Max Dymond
48c6927f3b ci: consolidate openldap step into openssl krb5
Closes #17891
2025-07-15 14:54:44 +01:00
Max Dymond
4910ee0dc3 ci: fix ldap install location and add renovate rule for openldap 2025-07-15 14:54:44 +01:00
Max Dymond
c8a990f079 ci: install libssl-dev in the openldap static test 2025-07-15 14:54:44 +01:00
Max Dymond
fd820733dd test: add a test for static LDAP 2025-07-15 14:54:44 +01:00
Viktor Szakats
f98c0ba834
GHA/windows: drop Windows CE jobs from CI
In preparation for the removal of Windows CE support.

These jobs were also using a macOS runner, which is a waste. And it'd be
too much effort to move them over to Windows or Linux.

Follow-up to 8491e6574c #17379

Closes #17924
2025-07-14 14:01:46 +02:00
Viktor Szakats
8675c9e3f3
GHA: move iOS jobs from non-native to macos workflow
No instant benefit, but it brings all Apple jobs into the same workflow.

Then perhaps allows intergrating iOS jobs with macOS ones, and in
the meantime keep them more tightly aligned.

Closes #17912
2025-07-14 14:01:46 +02:00
Viktor Szakats
9bdd08b3b2
GHA: minor tidy-ups
- GHA/checksrc: make a step name more accurate.
- cmakelint.sh: make sure to run from project root.
  To make it easier to run locally.
- cmakelint.sh: use `set -eu`.

Closes #17915
2025-07-13 11:52:08 +02:00
Viktor Szakats
7331208ec5
GHA/checksrc: use Linux for CI checks, merge job into misc checks
CI check used macOS before this patch, but with the help of Linuxbrew,
latest zizmor and shellcheck are also available on Linux.

Also:
- migrate CI checks to the misc check workflow, to make both shellcheck
  use the same, latest, shellcheck version, and to save the overhead of
  an extra workflow.

Closes #17911
2025-07-12 21:15:44 +02:00
Viktor Szakats
88ff396549
checksrc-all: rewrite in Perl, remove checksrc.bat
`checksrc.bat` was outdated and required Perl for `checksrc.pl` anyway.
Rewrite `checksrc-all.sh` in Perl, making it usable in envs without
a POSIX shell.

Closes #17882
2025-07-11 12:28:46 +02:00
Viktor Szakats
7735cf8199
GHA/macos: adapt to macos-15 for upcoming macos-latest bump
macos-latest is soon to switch to macos-15. Make sure it keeps working.

Closes #17873
2025-07-09 13:52:18 +02:00
renovate[bot]
3163d0ac39
GHA: update dependency gnutls/gnutls to v3.8.10
Closes #17872
2025-07-09 13:52:17 +02:00
renovate[bot]
4188db5db9
GHA: update dependency cloudflare/quiche to v0.24.4
Closes #17849
2025-07-07 19:25:24 +02:00
renovate[bot]
131cdf62b6
GHA: update dependency nghttp2/nghttp2 to v1.66.0
Closes #17850
2025-07-07 19:20:15 +02:00
renovate[bot]
dc966098cf
GHA: update dependency awslabs/aws-lc to v1.55.0
Closes #17847
2025-07-07 19:20:15 +02:00
renovate[bot]
6959853e03
GHA: update dependency Mbed-TLS/mbedtls to v3.6.4
Closes #17846
2025-07-07 19:20:15 +02:00
Viktor Szakats
27b8377220
GHA/distcheck: add missing timeout, reduce existing
Also hung around an `apt update`:
https://github.com/curl/curl/actions/runs/16121486815/job/45488127176?pr=17847

Closes #17853
2025-07-07 19:20:15 +02:00
Viktor Szakats
3aecfa927c
GHA/curl-for-win: reduce job timeout to 10m, apply to Windows jobs
The timeout was missing from two Windows jobs, making them linger for
a long time due to a command waiting forever.

As seen today with/after `apt update`:
https://github.com/curl/curl/actions/runs/16121485403/job/45488122962?pr=17846

Closes #17852
2025-07-07 19:03:00 +02:00
Viktor Szakats
9ff2127105
CI: sync curl download command-line options
- circleci: pipe to tar.
- use long options uniformly.
- sync option order.
- set timeout where missing.
- set retry where missing.
- set `--retry-connrefused` where missing.
- set `--disable` where missing.
- lower 999s timeouts to 120s.

Closes #17851
2025-07-07 17:34:47 +02:00
Viktor Szakats
067bc8ee2d
GHA/linux: fix output in download-decompress commands
Regression from 17a669426f #17537

Closes #17848
2025-07-07 16:28:56 +02:00
renovate[bot]
7ae44fa9b9
GHA: update cygwin/cygwin-install-action version number to v6
Existing hash received a release tag.

Follow-up to 4c20eb7108 #17118
Closes #17844
2025-07-07 14:39:10 +02:00
Daniel Stenberg
91e8be7fc2
GHA: bump OpenSSL to 3.5.1
Closes #17841
2025-07-07 13:36:48 +02:00
Stefan Eissing
51f933801e
scorecard: flame graphs and documentation
Add `--flame` option to scorecard.py for generating flame graphs.
Add documentation in docs/internal/SCORECARD.md on how to use this.

Closes #17792
2025-07-07 09:04:22 +02:00
Viktor Szakats
c97a8f07d5
GHA/curl-for-win: enable unity batches to improve build perf
Job                 | Before |  After |
:------------------ | -----: | -----: |
Linux gcc glibc     |  4m44s |  4m13s |
Linux llvm MUSL     |  4m17s |  4m00s |
macOS clang         |  1m59s |  1m54s |
Windows llvm        |  3m56s |  3m18s |
Windows gcc ... x86 |  3m26s |  3m11s |

Before: https://github.com/curl/curl/actions/runs/16101989848
After: https://github.com/curl/curl/actions/runs/16102353747?pr=17836

Closes #17836
2025-07-07 01:44:47 +02:00
Dan Fandrich
ab667c73a4 CI: skip CI builds that just touch Dockerfile
This file sees regular updates but isn't used by any CI build.
2025-07-02 18:28:24 -07:00
Viktor Szakats
73840836a5
tests: move GSS-API dynamic stub into debug-mode libcurl
Replace the `libstubgss.so`-based overload solution with one built into
libcurl at compile-time.

The previous, `LD_PRELOAD`-based, solution was non-portable, allowlisted
for Linux, BSD and Solaris. It also required non-debug builds, which
turned out to be an accidental condition:
7d342c723c. It also required a curl tool
built against a shared libcurl. Detecting this condition wasn't always
accurate, e.g. with certain cmake configurations.

The overload solution also didn't work on macOS, though it theoretically
should have:
- #17653
- #2394

Experiments on making the overload solution work in more envs:
- #17759
  That revealed that it also did not work on NetBSD, in CI.

The replacement solution is overloading the necessary GSS-API functions
for test 2056 and 2057 at compile time. It requires a debug-enabled curl
build (due to its insecure nature).

This makes these tests run on all platforms. Including most GSS jobs in
CI, that are running tests. (the exception is old-linux, non-debug jobs,
where it felt overkill to enable debug for this.)

The refactored GSS stub code needs to overload less than before because
it's free to use the official GSS API. (This didn't work with
the overload solution on Alpine for example). It can also use libcurl
functions, allowing to replace `snprintf()` with `msnprintf()`.

OS/400 is also overloading GSS API functions. I haven't tested how this
works after this PR. In theory it should, because this PR doesn't rely
on preprocessor overrides.

Note that for future GSS tests, it may be necessary to stub these GSS
API functions: `gss_inquire_context()`, `gss_unwrap()`, `gss_wrap()`.
They are on codepaths not (yet) touched by tests.

Also:
- stub-gss: check for token buffer overrun.
- stub-gss: replace size macros with `sizeof()`.
- GHA: enable debug for some jobs with GSS.
- GHA/linux: ignore results for 2056 and 2057 in the valgrind job.
  They leak the same way as seen with 2077 and 2078.
  Ref: 7020ba7979 #17462
  Ref: 146759716c #14430
- GHA/linux: fix to ignore `gss_import_name()` leaks in valgrind builds.
  only.
- lib/vauth/krb5_gssapi: reduce variable scope.
- lib/vauth/spnego_gssapi: reduce variable scope.
- tests/libtest: drop code and build logic dealing with `libstubgss`.
- runtests:
  - drop `ld_preload` feature.
  - drop special handling of `LD_PRELOAD` env in tests.
  - drop logic dealing with shared curl tool detection.
  - drop `LD_PRELOAD` envs from tests.

Follow-up to 56d949d31a #1687

Closes #17752
2025-07-01 00:17:15 +02:00
Viktor Szakats
48d3407d7c
GHA: fix zizmor 1.10.0 warnings, update names
Job `name:` now mandatory in zizmor.

Also:
- enclose `name:` values in single-quotes, for uniformity.
- drop `name: checkout` where set, for uniformity.
- dist: also install with cmake.
- dist: replace `make` with `cmake --build` for cmake.
  (to make this make-tool agnostic)
- appveyor-status: double-quote shell arguments.
- tweak existing names to be shorter, to sync terms and style across
  jobs and steps.

Ref: https://github.com/zizmorcore/zizmor/releases/tag/v1.10.0

Closes #17773
2025-06-30 18:38:56 +02:00
Daniel Stenberg
a3272c526c
GHA: make the spacecheck say line number for trailing space errors
As it can be quite confusing and frustrating without it.

Closes #17777
2025-06-29 16:43:41 +02:00
Viktor Szakats
4914c2177e
autotools: detect and link brotlicommon library for brotli
`brotlicommon` is necessary when linking brotli statically.
E.g. on Alpine Linux with `PKG_CONFIG='pkg-config --static'`.

It also syncs brotli libs listed in `libcurl.pc` and `curl-config` with
those generated by cmake, which already listed `brotlicommon` there.

Also:
- remove workaround from GHA/configure-vs-cmake CI jobs.

Ref: 69cda1b704
Follow-up to f2adb3b6d7 #15431
Reported-by: Christopher Boyd
Fixes #17678
Closes #17723
2025-06-25 19:45:35 +02:00
Viktor Szakats
3ea0f71ffa
build: stop checking for sys/stat.h
It has been used unconditionally in `src` and `tests` since at least
2011-09-19 via fdecb56cbf. There are
earlier unguarded references in `tests`.

Also de-duplicate to include it just once.

Ref: https://github.com/curl/curl/pull/17717#issuecomment-2996631026

Closes #17724
2025-06-24 09:44:28 +02:00
Viktor Szakats
e088e10454
cmake: replace the way clang-tidy verifies tests, fix issues found
Replace existing `mk-unity.pl` `--embed` workaround with running
`clang-tidy` manually on individual test source instead. This aligns
with how clang-tidy works and removes `mk-unity.pl` from the solution.

Also:
- mqttd: fix potentially uninitialized buffer by zero filling it.
  ```
  tests/server/mqttd.c:484:41: error: The left operand of '<<' is a garbage value
    [clang-analyzer-core.UndefinedBinaryOperatorResult,-warnings-as-errors]
    484 |       payload_len = (size_t)(buffer[10] << 8) | buffer[11];
        |                                         ^
  [...]
  tests/server/mqttd.c:606:45: error: The left operand of '<<' is a garbage value
    [clang-analyzer-core.UndefinedBinaryOperatorResult,-warnings-as-errors]
    606 |       topiclen = (size_t)(buffer[1 + bytes] << 8) | buffer[2 + bytes];
        |                                             ^
  ```
- sockfilt: fix potential out-of-bound pointer:
  ```
  tests/server/sockfilt.c:1128:33: error: The 2nd argument to 'send' is a buffer
     with size 17010 but should be a buffer with size equal to or greater than
     the value of the 3rd argument (which is 18446744073709551615)
     [clang-analyzer-unix.StdCLibraryFunctions,-warnings-as-errors]
   1128 |         ssize_t bytes_written = swrite(sockfd, buffer, buffer_len);
        |                                 ^
  ```
- clang-tidy: suppress bogus `bzero()` warnings that happens
  inside the notorious `FD_ZERO()` macros, on macOS.

Ref: https://github.com/curl/curl/pull/17680#issuecomment-2991730158

Closes #17705
2025-06-22 23:08:46 +02:00
Viktor Szakats
9837dd429a
GHA/windows: drop MSYS2 runtime downgrades
No longer necessary after bumping the default runtime to a version
fixing the previously experienced performance drop.

Thanks to MSYS2/Cygwin teams for the help and fix.

Follow-up to 9a26be1e6a #17708
Follow-up to d4896d94f2 #16424

Closes #17710
2025-06-22 23:08:46 +02:00
renovate[bot]
9a26be1e6a
GHA: update msys2/setup-msys2 digest to 40677d3
After:
MINGW64_NT-10.0-20348 runnervmdy573 3.6.3-1f8def9f.x86_64 2025-06-18 07:19 UTC x86_64 Msys

Before:
MINGW64_NT-10.0-20348 runnervmdy573 3.5.7-2644508f.x86_64 2025-02-06 19:32 UTC x86_64 Msys

Closes #17708
2025-06-22 22:43:15 +02:00
renovate[bot]
657e0240f5
GHA: update rojopolis/spellcheck-github-actions digest to 35a02ba
Closes #17686
2025-06-20 23:36:07 +02:00
Viktor Szakats
171b623759
cmake: build stubgss library for libtests to match autotools
Used by test 2056 and 2057, in a way that's Linux- & autotools-specific.
This patch builds it for all Unix, syncing cmake with autotools.

Adapt the two tests to find the library in CMake builds as well.

Tested OK on Linux. (CI does not test this. The corresponding jobs build
in debug mode, while the `LD_PRELOAD` feature is locked to non-debug.)

On macOS it didn't load without building everything for aarch64e arch:
"../bld/tests/libtest/libstubgss.dylib' (mach-o file, but is
an incompatible architecture (have 'arm64', need 'arm64e'))"
With that fixed it still did not load correctly and/or the tests did not
pass. So, for macOS these tests remain disabled.

Also:
- GHA/macos: build for aarch64e. (recognized by Apple clang as of this
  patch. llvm and gcc fall back to aarch64.)

Follow-up to 56d949d31a #1687

Closes #17653
2025-06-19 20:41:54 +02:00
Viktor Szakats
ea782134e5
autotools: simplify configuration in tests, examples
- GHA/windows: make a mingw autotools build static only.
- GHA/windows: fix a CI script issue with the build above.
- src: fix to pass `LIBCURL_PC_LIBS_PRIVATE` instead of `LINKFLAGS`.
  This makes the libs propagate to tunits, making the local hack there
  unnecessary. `LINKFLAGS` had this single use in the repo, and it was
  empty in local tests.
- tests: drop passing redundant `LIBCURL_PC_LDFLAGS_PRIVATE`.
- tests: drop redundant target name from config variables.
- examples, tests/client: drop `LIBDIR` temp variables with single uses.
- examples, tests: formatting to sync `Makefile.am` scripts with each
  other.

Closes #17661
2025-06-19 09:06:56 +02:00
Viktor Szakats
9b7c488f17
tests/http/clients: move to tests/client
To have all the tests binaries directly under the tests directory.

There seems to be no issue adding non-http test clients to this subdir.

Closes #17637
2025-06-17 19:39:36 +02:00
renovate[bot]
260ec730c2
GHA: update rojopolis/spellcheck-github-actions digest to 63aba94
Closes #17643
2025-06-17 12:22:02 +02:00
Viktor Szakats
6d00b06e16
GHA/windows: avoid libtool wrapper for tunits
To sync it with other test binaries.

Closes #17640
2025-06-16 14:13:40 +02:00