Commit Graph

6898 Commits

Author SHA1 Message Date
Viktor Szakats
2ec54556d4
scripts: enable strict warnings in Perl where missing, fix fallouts
- add 'use warnings' and 'use strict' where missing from Perl scripts.
- fix 'Use of uninitialized value'.
- fix missing declarations.
- test1140.pl: fix 'Possible precedence issue with control flow operator'.
- fix other misc issues.

Most actual errors found during this PR were fixed and merged via
separate PRs.

Likely there are remaining warnings not found and fixed in this PR.

Closes #17877
2025-07-27 22:35:18 +02:00
Viktor Szakats
b2bccdc257
tidy-up: move literal to the right side of comparisons
Closes #17876
2025-07-27 22:35:17 +02:00
Daniel Stenberg
9f9fecc724
tool_getparam: add support for --longopt=value
If the long option name ends with an equals sign (`=`), the argument is
the text following on its right side.

This makes the command line parser accept this common style in addition
to the existing way to accept option arguments more similar to how other
command line tools do.

Example: `curl --user-agent=curl-2000 https://example.com/`

Change a few existing tests to use this syntax: 206, 1333, 1335, 1442

Closes #17789
2025-07-27 18:29:01 +02:00
Daniel Stenberg
378713deb2
netrc: use the NETRC environment variable (first) if set
Add test 755 to verify.

Proposed-by: Berthin Torres Callañaupa
URL: https://curl.se/mail/lib-2025-06/0015.html

Closes #17712
2025-07-27 18:26:43 +02:00
Daniel Stenberg
9d8998c994
tls: make default TLS version be minimum 1.2
This still allows users to explictily ask for 1.0 or 1.1 as the minimum
version. If the TLS library allows it.

Starting with this change, the CURL_SSLVERSION_DEFAULT value is no
longer used as minimum version when the TLS backend are called.

This also makes curl set the minimum version to 1.2 independently of
libcurl for the rare case where a newer curl tool would use an older
libcurl.

URL: https://curl.se/mail/lib-2025-07/0007.html
Assisted-by: Stefan Eissing
Closes #17894
2025-07-27 18:23:04 +02:00
Daniel Stenberg
91138b014d
vquic: drop msh3
It has never been properly functional in curl while there are several
alternatives that are.

Closes #17729
2025-07-27 17:57:17 +02:00
Viktor Szakats
73d52567a0
DEPRECATE.md: drop support for Windows XP/2003
Dropped from curl-for-win on August 28, 2022:
6976612160

https://en.wikipedia.org/wiki/Windows_XP
https://en.wikipedia.org/wiki/Windows_Server_2003

Ref: #17985
Closes #18016
2025-07-26 13:52:19 +02:00
Viktor Szakats
4d977fe552
tidy-up: more whitespace/indent, comments
Also a couple of minor formatting updates in the root `CMakeLists.txt`.
One swap to `#ifdef`.

Closes #17929
2025-07-25 11:47:51 +02:00
Viktor Szakats
63a8167f3e
CODE_STYLE: sync with recent checksrc.pl updates
Follow-up to ef2ccf862f #17840
Follow-up to f9656445ba #17764

Closes #18015
2025-07-25 03:10:01 +02:00
Viktor Szakats
1cc8a5235f
tests: fix UTF-8 detection, per-test LC_* settings, CI coverage
- runtests: fix `codeset-utf8` feature detection. Before this patch it
  detected if the calling environment had UTF-8 enabled. If not, UTF-8
  tests were all skipped. After this patch, it detects if UTF-8 is
  supported by the calling environment regardless of what's currently
  enabled.
  Follow-up to 0b70b23ef4 #15039

- GHA/linux: sync `codeset-test` to also reset `LC_CTYPE` and
  `LC_NUMBER`. To give it more spin.
  Follow-up to c221c0ee59 #17938

- GHA/macos: fix to actually enable `codeset-test`. Also set `LC_ALL`,
  which seems necessary to trigger issues.
  Follow-up to c221c0ee59 #17938

- tests/data: replace `LC_CTYPE` env with `LC_ALL` in all tests
  requiring a locale. Also to avoid potential issues with a blank or
  unset `LC_ALL`, as seen earlier. And to ensure that the override works
  on all platforms (as tested in CI.)
  Slight downside is that this now resets the language/culture to `C`.
  Ref: b4c9982382 #4743
  Ref: 23208e330a #4738

- replace `en_US.UTF-8` with `C.UTF-8` to be language/culture-agnostic.

- TEST-SUITE.md: drop `UTF-8` as a requirement for tests.
  Tests shall work (or least be skipped) without UTF-8 support.

Tests requiring UTF-8 locale:
165, 962, 963, 964, 965, 966, 967, 1448, 1560, 2046, 2047
Tests requiring UTF-8 locale, but passing without one anyway:
955, 956, 957, 958, 959, 960, 961, 968, 1034, 1035

Spec 1997: https://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html
Spec 2008: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html

Ref: c221c0ee59 #17938
Ref: 7cf8414fab
Ref: 4c140a5628
Ref: 28faaacee2 #2436
Ref: ecd1d020ab

Closes #17988
2025-07-23 22:17:07 +02:00
Stefan Eissing
ab5e0bfddc
pytest: add SOCKS tests and scoring
Configure curl with `--with-test-sockd=<path to sockd>` for a locally
installed dante sockd server and new `test_40_*` will verify that
down- and uploads work via SOCKS.

Invoke scorecard.py with `--socks4` or `--socks5` to run performance
tests with SOCKS. Note that SOCKS is not supported for HTTP/3.

Ref: #17969
Closes #17986
2025-07-23 18:12:31 +02:00
Stefan Eissing
338f7e9e89
docs: fix name in curl_easy_ssls_export man page
The name of the man page was wrongly given as curl_easy_sssl_export
which seems to have confused our HTTML man page generation.

Reported-by: Qriist on github
Ref: https://github.com/curl/curl-www/issues/458

Closes #17995
2025-07-23 00:56:11 +02:00
Viktor Szakats
0260e8465a
GHA/checksrc: expand spellcheck, fix issues found
- codespell: break logic out into its own runnable script. Allowing
  to run it on local machines.
- codespell: install via `pip`, bump to latest version.
- codespell: show version number in CI log.
- codespell: drop no longer needed word exception: `msdos`.
- codespell: include all curl source tree, except `packages` and
  `winbuild`. Drop an obsolete file exclusion.
- add new spellchecker job using the `typos` tool. It includes
  the codespell dictionary and a couple more. Use linuxbrew to install
  it. This takes 10 seconds, while installing via `cargo` from source
  would take over a minute.
- codespell: introduce an inline ignore filter compatible with `cspell`
  Make `typos` recognize it, too. Move single exceptions inline.

Fix new typos found. Also rename variables and words to keep
spellchecking exceptions at minumum. This involves touching some tests.
Also switch base64 strings to `%b64[]` to avoid false positives.

Ref: https://github.com/crate-ci/typos/blob/master/docs/reference.md
Ref: https://github.com/codespell-project/codespell?tab=readme-ov-file#inline-ignore
Ref: https://github.com/codespell-project/codespell/issues/1212#issuecomment-1721152455
Ref: https://cspell.org/docs/Configuration/document-settings

Closes #17905
2025-07-21 16:09:01 +02:00
Viktor Szakats
1a441c3c0a
DISTROS.md: add Haiku
Closes #17953
2025-07-18 00:54:34 +02:00
Daniel Stenberg
cfbfb65047
RELEASE-NOTES: synced
8.15.0 release
2025-07-16 08:21:07 +02:00
Daniel Stenberg
566428160b
THANKS: new contributors in 8.15.0 2025-07-16 08:19:39 +02:00
Viktor Szakats
4b86d369b6
DEPRECATE.md: add VS2005 removal to the list
Follow-up to e0fd5790d9 #16004

Closes #17934
2025-07-15 15:47:31 +02:00
Daniel Stenberg
af81e8fe5f
VULN-DISCLOSURE-POLICY.md: 7 days embargo is max
It was recently updated in this doc to seven, but there were *two*
numbers mentioned and only one of them was updated leaving the paragraph
quite confusing.

Follow-up to 83c90e5047

Closes #17921
2025-07-14 09:08:47 +02:00
Viktor Szakats
99f0ebc508
libcurl.m4: fix indentation
Closes #17913
2025-07-13 11:52:07 +02:00
Daniel McCarney
c23f81e5b2
docs: sync -tls-earlydata support w/ CURLOPT_SSL_OPTIONS
Support for early data has been added to wolfSSL and quictls/OpenSSL.

Closes #17909
2025-07-12 19:29:35 +02:00
Daniel McCarney
b234da49b6
docs: note SSLS-EXPORT feature in -ssl-sessions doc
Without a libcurl built with the SSLS-EXPORT feature this command line
option produces:

  curl: option --ssl-sessions: the installed libcurl version does not support this
  curl: try 'curl --help' or 'curl --manual' for more information

Add a note of warning on the -ssl-session docs page to account for this.

Closes #17909
2025-07-12 19:29:15 +02:00
Patrick Stoeckle
86f43af951
misc: fix typos
Just fixing some typos using: https://github.com/crate-ci/typos

Closes #17904
2025-07-12 08:59:44 +02:00
Viktor Szakats
75395eb003
scripts: fix to quote the copyright email address
Also:
- fix the generated output in repo files.

Cherry-picked from #17877
Closes #17903
2025-07-12 08:59:44 +02:00
Viktor Szakats
ddcfd2d511
tidy-up: whitespace (more in Perl)
Follow-up to 8eab2b7086 #17896
Cherry-picked from #17877
Closes #17901
2025-07-12 08:59:44 +02:00
Viktor Szakats
8eab2b7086
tidy-up: whitespace
Cherry-picked from #17877
Cherry-picked from #17876

Closes #17896
2025-07-11 13:32:54 +02:00
Viktor Szakats
55509b045b
test1175: fix to run, and fix documentation issues detected
Fix test 1175 by passing the source root directory (was: tests).

Before this patch this caused silent Perl warnings and returning success
without executing the tests, due to:
```
readline() on closed filehandle $f at ../../tests/test1175.pl line 55.
readline() on closed filehandle $f at ../../tests/test1175.pl line 39.
```

Running the test revealed these issues:
```
CURLE_FUNCTION_NOT_FOUND is not in libcurl-errors.md
CURLE_HTTP_POST_ERROR is not in libcurl-errors.md
CURLE_TELNET_OPTION_SYNTAX is not in libcurl-errors.md
CURLM_CALL_MULTI_SOCKET is not in libcurl-errors.md
```

Apply fixes:
- mark `CURLE_FUNCTION_NOT_FOUND` deprecated by 7.53.0
- mark `CURLE_HTTP_POST_ERROR` deprecated by 7.56.0
- mark `CURLE_TELNET_OPTION_SYNTAX` deprecated by 7.78.0
- document `CURLM_CALL_MULTI_SOCKET` as a synonym for
  `CURLM_CALL_MULTI_PERFORM`
- test1477: exclude `CURLM_CALL_MULTI_SOCKET`.

But, these weren't officially deprecated. It may need more updates
to reflect that in other places, or fix the issues differently.

Follow-up to 66ec950004 #12424
Follow-up to 74f441c6d3 #4628

Cherry-picked from #17877
Closes #17880
2025-07-11 12:28:46 +02:00
Daniel Stenberg
897633eb21
docs: mention the as-is concept generically
for curl command line options and for curl_easy_setopt

Closes #17829
2025-07-09 15:32:46 +02:00
Stefan Eissing
fa0ed1fe4f
examples: beef up websocket.c
Make `docs/examples/websocket.c more complete by showing how to handle
CURLE_AGAIN return codes and incomplete sends.

Reported-by: Markus Unterwaditzer
Fixes #13288
Closes #17860
2025-07-08 13:06:27 +02:00
Daniel Stenberg
6654e770ce
KNOWN_BUGS: 10.2 Does not acknowledge getaddrinfo sorting policy
Closes #16718
Closes #17861
2025-07-08 13:01:33 +02:00
Daniel Stenberg
8724306e78
runtests: support memory-limits per test
The idea here is to set limits per test how many allocations and maximum
amount of memory it is allowed to use. This is a means to make sure the
number and total size of allocations are kept in check and don't
mistakenly "blow up".

If runtests.pl detects that the given limits have been exceeded it fails
the test case with an error.

The `<verify>` part now supports `<limits>`, and in this section two
limits can be set for each test (verified in debug builds only):

    Allocations: [number of allocation calls]
    Maximum allocated: [maximum concurrent memory allocated]

Default limits (used if nothing is set in the test file):

    Allocations: 1000
    Maximum allocated: 1000000

Closes #17821
2025-07-08 10:14:45 +02:00
Christian Hesse
7d73c712f0
curl.h: make CURL_IPRESOLVE_* symbols defined as longs
... as `curl_easy_setopt()` expects them to be.

Also remove some casting workarounds.

Closes #17790
2025-07-07 14:37:12 +02:00
Carlos Henrique Lima Melara
790153c927
docs,tests: fix english grammar "allow to" -> "allow <something> to"
This was spotted by Debian's lintian tool. It adds an informational
warning at every run, so my OCD was kicking in and I had to fix it :-)

Closes #17787
2025-07-07 09:05:17 +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
Stefan Eissing
d9c2d4bc10
docs: warn about lifetime in CURLOPT_CLOSESOCKET*
Callback and data set via CURLOPT_CLOSESOCKETFUNCTION and
CURLOPT_CLOSESOCKETDATA may get used after the easy handle has been
cleaned up. Inform about that.

Closes #17816
2025-07-04 12:55:26 +02:00
Jay Satiro
cd9d791651 CURLSHOPT_SHARE.md: mention multi-threading requires callbacks
- Explain that if data is shared in multiple threads then the user must
  set mutex callbacks.

Reported-by: afengsoft@users.noreply.github.com

Fixes https://github.com/curl/curl/issues/17774
Closes https://github.com/curl/curl/pull/17782
2025-07-02 11:11:25 -04:00
Daniel Stenberg
dc263e15e1
VULN-DISCLOSURE-POLICY: minor language polish
Closes #17799
2025-07-01 22:54:43 +02:00
Ameda Amahru
84ac0c2cb4
docs: fix two typos
Closes #17795
2025-07-01 22:53:04 +02:00
Marcel Lang
10432ffb6a
VULN-DISCLOSURE-POLICY.md: fix typos
Closes #17796
2025-07-01 22:50:45 +02:00
Daniel Stenberg
b2ca61a0ac
curlinfo: provide the 'digest' feature
... since the tests check for the feature using this name, we
accidentally had lots tests not run because this provided the
`digest-auth` feature that was not checked for.

Closes #17786
2025-07-01 09:53:15 +02: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
Fabrício Canedo
d553f7e9f0
docs/CONTRIBUTE: fix broken link
Add the missing "docs" directory in the link.

Closes #17780
2025-06-30 13:47:06 +02:00
Daniel Stenberg
ff15eef2d6
VULN-DISCLOSURE-POLICY: all reports should be disclosed
As a matter of policy.

Closes #17778
2025-06-29 16:42:03 +02:00
Viktor Szakats
d2a408587a
cmake: fix generator expression in docs/examples
To pass the MSVC-specific macro to MSVC only.

Closes #17767
2025-06-28 02:00:09 +02:00
Viktor Szakats
f9656445ba
checksrc: reduce exceptions, apply again to curlx
- tests/libtest: move exception to `stub_gssapi.h`.
- tests/libtest: move remaining exception to `testtrace.c`.
- tests/server: drop obsolete exception.
- docs/examples: move `BANNEDFUNC` exceptions to local files (3 lines).
- docs/examples: move `ERRNOVAR` exception to `ephiperfifo.c`.
- docs/examples: drop `typedef struct` (8 files).
- lib/curlx: add `.checksrc` with banned funcs copied from lib.
- checksrc: ban `strncpy`, `strtok_r`, `strtoul` by default.
  Drop local bans. Add exception for `strtoul` to `tests/server'.
- lib, src: sync banned funcs.

Also:
- REUSE: drop `stunnel.pem`, it no longer exists.
- docs/examples: formatting.
- docs/examples: simplify some `sizeof()`s.

Closes #17764
2025-06-27 17:33:35 +02:00
Daniel Gustafsson
86eb054286 VULN-DISCLOSURE-POLICY: exclude not installed software
Flaws in any script or compiled artifact which isn't installed by
default is not considered to be security vulnerabilities.

Closes #17761
Reviewed-by: Daniel Stenberg <daniel@haxx.se>
2025-06-27 12:08:01 +02:00
Dan Fandrich
f547bca4b6 DISTROS: update NixOS link 2025-06-25 23:01:58 -07:00
Keno Fischer
40dcf5567c
docs: reflect that delimiter-separated capath is only OpenSSL
curl passes down the capath directly to the backends. OpenSSL will then
delimiter-separate this path internally to support multiple directories
(using its certificate hash scheme). However, the other backends
(wolfSSL, mbedTLS, gnutls) only expect a single directory (and do not
use the hash scheme, preferring to iterate the directory and load all
files). This adjusts the `--capath` documentation to reflect that
multiple paths is an OpenSSL-specific feature. Alternatively, curl could
delimiter-separate these itself, but I'm not sure it's worth it.

Ref https://github.com/JuliaLang/NetworkOptions.jl/issues/41

Closes #17737
2025-06-25 11:23:56 +02:00
Daniel Stenberg
65f8253336
bufq: remove the unused Curl_bufq_unwrite function
Follow-up to 02edae54e8

Closes #17730
2025-06-24 10:56:54 +02:00
Daniel Stenberg
aed828cc51
tests/dnsd: read config from file
Make the <dns> tag in a test case control what is stored there. Also
documented. Make test 2102 and 2103 use the new tag.

Lets the test case config the A and AAAA contents the server replies
with. Initial work for the HTTPS RR exists, but does not yet work.

Closes #17543
2025-06-23 08:24:09 +02:00
Daniel Stenberg
2cdc02f49f
libcurl-env.md: drop LOGNAME, USER and NTLMUSER
They were used for NTLM-WB, which support was removed for back in 8.8.0

Closes #17713
2025-06-23 08:21:05 +02:00