Commit graph

36319 commits

Author SHA1 Message Date
Viktor Szakats
e9ababe9aa
windows: use native error code types more
- curlx_get_winapi_error: accept DWORD (was: int), move casts one level
  up the callstack.

- sspi: bump some types to `SECURITY_STATUS` (int -> LONG).

- digest_sspi: drop unnecessary cast.

Closes #18868
2025-10-06 12:12:44 +02:00
Daniel Stenberg
e7a5184fa1
openssl: call SSL_get_error() with proper error
The error function should be called with the return code from the
previous call to SSL_shutdown() as argument.

Closes #18872
2025-10-06 11:31:54 +02:00
Viktor Szakats
db98daab05
src: stop overriding system printf symbols
Also:
- tool_operate: use the socket printf mask, drop cast.

Follow-up to 4deea9396b #18814

Closes #18844
2025-10-06 09:46:29 +02:00
Viktor Szakats
34ad78da89
curlx: move Curl_strerror, use in src and tests, ban strerror globally
Also:
- tests/server: replace local `sstrerror()` with `curlx_strerror()`.
- tests/server: show the error code next to the string, where missing.
- curlx: use `curl_msnprintf()` when building for src and tests.
  (units was already using it.)
- lib: drop unused includes found along the way.
- curlx_strerror(): avoid compiler warning (and another similar one):
  ```
  In file included from servers.c:14:
  ../../lib/../../lib/curlx/strerr.c: In function ‘curlx_strerror’:
  ../../lib/../../lib/curlx/strerr.c:328:32: error: ‘snprintf’ output may be truncated before the last format character [-Werror=format-truncation=]
    328 |       SNPRINTF(buf, buflen, "%s", msg);
        |                                ^
  ../../lib/../../lib/curlx/strerr.c:47:18: note: ‘snprintf’ output 1 or more bytes (assuming 2) into a destination of size 1
     47 | #define SNPRINTF snprintf
        |                  ^
  ../../lib/../../lib/curlx/strerr.c:328:7: note: in expansion of macro ‘SNPRINTF’
    328 |       SNPRINTF(buf, buflen, "%s", msg);
        |       ^~~~~~~~
  ```

Follow-up to 45438c8d6f #18823

Closes #18840
2025-10-06 09:44:23 +02:00
Viktor Szakats
eaf66f18b7
tests/server: replace banned functions with curlx_str_hex
Replace an `strtol()` and `strtoul()` call, both used in hex mode, with
`curlx_str_hex()`.

Follow-up to 45438c8d6f #18823

Closes #18837
2025-10-06 09:44:22 +02:00
Viktor Szakats
4116e1d802
unit1323: sync time types and printf masks, drop casts
Closes #18860
2025-10-06 03:27:57 +02:00
Viktor Szakats
c93457f1f6
tool_filetime: replace cast with the fitting printf mask (Windows)
Follow-up to d25b050379 #2204

Closes #18858
2025-10-06 03:26:43 +02:00
Daniel Stenberg
b54b4697ca
url: make Curl_init_userdefined return void
It cannot actually return an error, so the parent function does not need
to check for error and have an exit path that cannot be reached.

Pointed out by CodeSonar

Closes #18855
2025-10-05 22:58:20 +02:00
Viktor Szakats
1ae5e44eff
strerror: drop workaround for SalfordC win32 header bug
Follow-up to ccf43ce91d #15957

Closes #18857
2025-10-05 19:11:02 +02:00
Viktor Szakats
0833121305
GHA/http3-linux: cleanup cache entry name after prev
To avoid duplicate `no-deprecated` in the cache entry name.

Follow-up to c96bf36557 #18833

Closes #18853
2025-10-05 14:07:42 +02:00
Joshua Rogers
da8f7ae096
telnet: print DISPlay LOCation in printsub without mutating buffer
Closes #18852
2025-10-05 14:03:31 +02:00
Joshua Rogers
eb88092703
telnet: use pointer[0] for "unknown" option instead of pointer[i]
i is taken from pointer[length-2] (often the IAC byte) before we do
length -= 2, so using pointer[i] indexes an arbitrary/stale byte
unrelated to the option code. pointer[0] is the suboption’s option code
per the telnet SB format, so printing pointer[0] yields correct, stable
diagnostics.

Closes #18851
2025-10-05 14:02:41 +02:00
Joshua Rogers
c0febf6661
cpool: make bundle->dest an array; fix UB
Replace `char *dest[1]` with a proper `char dest[1]` array in
cpool_bundle. This removes undefined behavior from memcpy (writing past
the declared object) while keeping the same key semantics: dest_len is
strlen+1 (includes NUL), and hash add/delete calls remain unchanged.

Closes #18850
2025-10-05 14:02:07 +02:00
Daniel Stenberg
bb4326d72b
GHA: remove the hacktoberfest label action
No one cares about hacktoberfest anymore.

Closes #18849
2025-10-05 13:41:22 +02:00
Viktor Szakats
c7fb5858a5
checksrc: fix possible endless loops/errors in the banned function logic
By quoting the search expression to be replaced. This avoid the issue
when the code leading up to a banned function contained regex characters
that the script did not explicitly handle, e.g. `+`.

Assisted-by: Daniel Stenberg

Ref: https://perldoc.perl.org/functions/quotemeta
Follow-up to dd37d6970c #18775

Closes #18845
2025-10-04 17:49:21 +02:00
Viktor Szakats
455d41d460
unit1664: drop casts, expand masks to full values
Follow-up to 4deea9396b #18814

Closes #18838
2025-10-04 17:49:21 +02:00
Viktor Szakats
c96bf36557
GHA: drop quictls 3.3.0 builds in favor of openssl 3.5+
- http3-linux: move local nghttpx (nghttp2) build to openssl (from
  quictls). Also tried LibreSSL, but it made some HTTP/2 tests fails.

- http3-linux: drop quictls ngtcp2 build.

- http3-linux: build local openssl with `no-deprecated`.
  (previously tested in the quictls local build.)

- http3-linux: explicitly disable LDAP in cmake openssl jobs.
  cmake builds auto-detect OpenLDAP (autotools don't), and when enabled,
  linking curl fails because system `libsasl.so` requires MD5 openssl
  functions, which are missing from openssl no-deprecated builds.

- macos: move options tested in quictls jobs to other ones.

- linux: drop unused quictls local build. (it was used for msh3.)
  Follow-up to 91138b014d #17729

- renovate: drop quictls bump detection.

Closes #18833
2025-10-04 17:49:21 +02:00
Viktor Szakats
4535532ed3
examples: fix two build issues surfaced with WinCE
Both may apply to rare non-WinCE Windows builds too.

- fix gcc 4.4.0 preprocessor error:
  ```
  docs/examples/http2-upload.c:43:8: error: "_MSC_VER" is not defined
  ```
  Ref: https://github.com/curl/curl/actions/runs/18238150607/job/51935502616

- fix wrong header order:
  Inlcude `windows.h` after `winsock2.h` via `curl/curl.h`.

Regressions from 45438c8d6f #18823

Closes #18843
2025-10-04 11:35:44 +02:00
Viktor Szakats
ed1e72143a
examples: drop unused curl/mprintf.h includes
Follow-up to 45438c8d6f #18823

Closes #18842
2025-10-04 11:34:46 +02:00
Viktor Szakats
56026dae02
openssl: fix build for v1.0.2
```
lib/vtls/openssl.c: In function 'asn1_object_dump':
lib/vtls/openssl.c:299:42: error: passing argument 3 of 'i2t_ASN1_OBJECT' discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
  299 |   int i = i2t_ASN1_OBJECT(buf, (int)len, a);
      |                                          ^
In file included from /home/runner/djgpp/include/openssl/objects.h:965,
                 from /home/runner/djgpp/include/openssl/evp.h:94,
                 from /home/runner/djgpp/include/openssl/x509.h:73,
                 from /home/runner/djgpp/include/openssl/ssl.h:156,
                 from lib/curl_ntlm_core.c:71,
                 from bld/lib/CMakeFiles/libcurl_static.dir/Unity/unity_0_c.c:88:
/home/runner/djgpp/include/openssl/asn1.h:921:58: note: expected 'ASN1_OBJECT *' {aka 'struct asn1_object_st *'} but argument is of type 'const ASN1_OBJECT *' {aka 'const struct asn1_object_st *'}
  921 | int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a);
      |                                             ~~~~~~~~~~~~~^
```
Ref: https://github.com/curl/curl/actions/runs/18236773678/job/51931937131?pr=18039

Follow-up to bb46d42407 #18647

Closes #18841
2025-10-04 11:34:44 +02:00
Viktor Szakats
c9edc26afe
lib: drop unused include and duplicate guards
Closes #18839
2025-10-04 11:34:42 +02:00
Viktor Szakats
4deea9396b
tests: stop overriding system printf symbols
To make the source code match the functions called at runtime.
And to avoid the preprocessor trick that may introduces build issues.

Before this patch, libtests, tunits and units were calling a mixture
of curl and system printf calls, then transformed them all to curl
printf calls by including `curl_printf.h`.

Changes made:
- tests: stop including `curl_printf.h`.
- libtest: switch a couple of outlier system printf calls to curl
  printf.
- unit: use more curl printf to avoid casts and show whole values.
- unit: switch remaining calls to curl printf explicitly.
- tunit: switch to call curl printf explicitly.
- libtest, tunit, unit: ban system printf.
- unit1307, unit1607, unit1609, unit1652, unit1655, unit3214: bump
  types/masks to avoid casts.

After this patch:
- libtests, tunits, units: use exclusively curl printf.
  (as before, but explicitly, without relying on redefinitions.)
- servers: is unchanged (it can only use system printf).

Closes #18814
2025-10-04 00:51:06 +02:00
Viktor Szakats
45438c8d6f
checksrc: reduce directory-specific exceptions
By making them defaults, then fixing and/or reshuffling remaining
exceptions as necessary.

- checksrc: ban by default: `snprintf`, `vsnprintf`, `sscanf`, `strtol`.
- examples: replace `strtol` with `atoi` to avoid a checksrc exception.
- tests/libtest: replace `strtol` with `atol`.
- tests/server: replace most `strtol` with `atol`.
- tests/server: replace most `strtoul` with `atol`/`atoi`.
- tests/server: drop no longer used `util_ultous`.
- fix typo in checksrc rules: `vsnprint` -> `vsnprintf`.
- update local exceptions.

Also:
- examples: ban curl printf functions. They're discouraged in user code.
- examples: replace curl printf with system printf.
  Add `snprintf` workaround for <VS2015.
- examples/synctime: fix `-Wfloat-equal`.
- examples/synctime: exclude for non-Windows and non-UWP Windows.
- examples/synctime: build by default.

Closes #18823
2025-10-04 00:48:58 +02:00
Viktor Szakats
fff36a360e
checksrc: fix to handle ) predecing a banned function
Fixing:
```
Unmatched ) in regex; marked by <-- HERE in m/  \*buffer_len = \(ssize_t) <-- HERE
  strtol\(/ at /home/runner/work/curl/curl/scripts/checksrc.pl line 916, <$R> line 380.
```
Ref: https://github.com/curl/curl/actions/runs/18209824275/job/51848079550#step:3:5

Also add a test case.

Follow-up to 684f4cdd3e #18779
Cherry-picked from #18823
Closes #18836
2025-10-03 22:45:13 +02:00
renovate[bot]
99433d06e6
GHA: update dependency google/boringssl to v0.20251002.0
Closes #18834
2025-10-03 21:36:21 +02:00
Viktor Szakats
7468faffc1
Makefile.example: fix option order [ci skip]
The `ld` linker is sensitive to this, and did not find libcurl symbol
with the order before this patch. Seen with mingw-w64 gcc.

Follow-up to f6ddc1fc1e #18554

Closes #18835
2025-10-03 21:35:06 +02:00
Stefan Eissing
733c994b1e
doh: inherit new custom ssl flags
The new custom_* flags in the SSL config need to be inherited when
setting up the doh easy handle, so that defaults apply the same way as
for the original easy handle.

Closes #18831
2025-10-03 17:53:25 +02:00
Viktor Szakats
e73759f1a9
GHA: show full versions next to pinned actions
Also quotes to a configuration entry.

Follow-up to 2e5993ab08 #18827

Closes #18832
2025-10-03 16:34:44 +02:00
Daniel Stenberg
4b8278fb3d
progress: expand to use 6 characters per size
Previously the progress meter used a maximum of five digits+letter in
the progress meter output: up to 99999 bytes and then 9999k, 9999M etc.
The output then used two spaces after the size between the next field in
the display.

This new approach uses one letter more with only one space in between
the fields. It makes it possible to show up to 999999 bytes and then
99999k, 99999M etc. The function uses a single decimal when outputting a
value less than 1000 in any unit. Like 999.9M.

Closes #18828
2025-10-03 14:08:41 +02:00
renovate[bot]
2313696e96
GHA: update actions/upload-artifact action to v4.6.2
Closes #18830
2025-10-03 14:03:03 +02:00
Viktor Szakats
2e5993ab08
GHA/checksrc: pass zizmor a GH token, fix warnings found
For a complete, online, check.

After this patch the check takes 30s, up from a fraction of a second.

Also bump CodeQL actions to their latest version.

Closes #18827
2025-10-03 13:54:40 +02:00
Daniel Stenberg
4e2edde102
tool_progress: fix < 10000 output
Follow-up to e49698925c

Closes #18826
2025-10-03 13:47:49 +02:00
Daniel Stenberg
3b583ab7d7
docs/cmdline-opts: drop double quotes from GLOBBING and URL examples
It looks easier on the eye without them

Closes #18829
2025-10-03 13:47:16 +02:00
Stefan Eissing
9aa8e9a783
vquic: handling of io improvements
- better tracing of what system call is used and how often
- ngtcp2: combine vquic_send into larger chunks
- ngtcp2: define own PMTU values and enable MTU probing
- ngtcp2: trace interesting remote transport parameters

Closes #18812
2025-10-03 13:46:10 +02:00
Stefan Eissing
eefd03c572
ssl: support Apple SecTrust configurations
- configure/cmake support for enabling the option
- supported in OpenSSL and GnuTLS backends
- when configured, Apple SecTrust is the default trust store
  for peer verification. When one of the CURLOPT_* for adding
  certificates is used, that default does not apply.
- add documentation of build options and SSL use

Closes #18703
2025-10-03 12:02:23 +02:00
Daniel Stenberg
9cc1ee55a4
RELEASE-NOTES: synced
Add OpenSSL-QUIC as an item to get removed
2025-10-03 08:31:22 +02:00
Daniel Stenberg
2b1fda1fe6
RELEASE-NOTES: synced 2025-10-03 08:26:56 +02:00
Daniel Stenberg
0a3459ca51
DEPRECATE.md: remove OpenSSL 1.1.1 support already in December 2025
No sponsors == remove it

Closes #18822
2025-10-03 08:14:23 +02:00
Daniel Stenberg
06c0f8c5cd
DEPRECATE.md: We remove the OpenSSL-QUIC backend in March 2026
URL: https://curl.se/mail/lib-2025-10/0000.html

Closes #18820
2025-10-03 08:13:43 +02:00
Daniel Stenberg
84c4b485f3
time-cond.md: refer to the singular curl_getdate man page
Closes #18816
2025-10-02 23:25:36 +02:00
Daniel Stenberg
18e4fbad4c
tcp-nodelay.md: expand the documentation
Instead of referring to another document.

Closes #18811
2025-10-02 23:24:42 +02:00
Daniel Stenberg
06625975af
cmdline-opts/_PROGRESS.md: explain the suffixes
Closes #18817
2025-10-02 23:23:40 +02:00
Stefan Eissing
95ac33fc4f
ip-happy: prevent event-based stall on retry
When delaying an IP happy eyeball restart, set an actual timer or the
connection will stall when running event based.

Closes #18815
2025-10-02 22:53:58 +02:00
Viktor Szakats
e5316069f1
GHA/macos: drop macos-13 runner image from combo jobs
- replace with macos-14.
- refresh tables, exceptions.
- apply a pending TODO.

Closes #18818
2025-10-02 19:31:14 +02:00
Jay Satiro
2a25ebe958 vtls_scache: fix race condition
- Lock before counting the cache sessions.

Prior to this change when taking a session a trace command counted the
sessions but not under lock, which caused a race condition.

Reported by: Viktor Szakats

Fixes https://github.com/curl/curl/issues/18806
Closes https://github.com/curl/curl/pull/18813
2025-10-02 11:33:44 -04:00
Viktor Szakats
03fe446789
INTERNALS: specify minimum version for Heimdal: 7.1.0
Released on 2016-Dec-19, it's the first "revamped" stable version, and
the earliest available as a source tarball at the official repository:
https://github.com/heimdal/heimdal/releases/tag/heimdal-7.1.0

It's also the first version hosted by Homebrew. It builds fine locally
with curl, and also builds in CI with old linux: 7.1.0+dfsg-13+deb9u4.

Closes #18809
2025-10-02 15:21:09 +02:00
Viktor Szakats
b04137c1c6
renovate: adjust commit message prefixes, try making CodeQL and AWS-LC updates monthly
Also:
- enable pip bumps in Dependabot.
- reduce dependabot to check monthly (was: weekly)
  Dependabot acts as a backup for mend/renovate.

Closes #18761
2025-10-02 15:21:08 +02:00
Viktor Szakats
7682bd80e7
cmake: drop exclamation in comment looking like a name
Ref: https://github.com/curl/curl/pull/3316#issuecomment-442343555
Follow-up to ea4ba6d9ef #18803
Follow-up to 558814e16d

Closes #18810
2025-10-02 14:58:06 +02:00
Viktor Szakats
9ac3a9a670
INTERNALS: drop Winsock 2.2 from the dependency list
It's implied by the minimum requirement of Windows XP.
Also Windows CE is soon to be deleted via #17927.

Closes #18808
2025-10-02 14:58:06 +02:00
Viktor Szakats
af7900fb28
CI: move no-verbose build from Circle CI to existing GHA jobs, with tests
To test it in GHA and catch issues at PR time. Before this patch,
Circle CI caught them after pushing to master (or non-fork PR
branches.) GHA also run runtests, pytests and static analysis on
these builds, after this patch.

- GHA/linux: enable no-verbose in an existing job.
- GHA/linux: enable no-verbose in the H3 scan-build job too.
- GHA/macos: enable no-verbose in one build (= 3 jobs with different
  compilers).
- GHA/codeql: enable no-verbose in the MultiSSL Linux build.
- circleci: delete openssl no-verbose job in favor of the above.

Closes #18797
2025-10-02 14:58:06 +02:00