Re: SIGINT vs. SIGTERM?

2024-08-25 Thread Daniel Stenberg via curl-users

On Sun, 25 Aug 2024, Paul Gilmartin via curl-users wrote:


Running curl from a script I attempt to terminate a long download.
   kill -INT  curl has no effect
   kill -TERM curl terminates curl.

Does curl trap SIGINT for some special behavior, leaving the default 
SIGTERM?


SIGINT is the signal that hitting ctrl-c in a terminal sends to the 
application like when aborting a slow transfer. I use that frequently with 
curl and I have never seen or experienced a problem with that. So no, curl 
does not ignore SIGINT.


--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


"webinar: mastering the curl command line"

2024-09-02 Thread Daniel Stenberg via curl-users

Hello!

I just wanted to mention that I am again running a little webinar about curl 
this Thursday.


All details here:

https://daniel.haxx.se/blog/2024/09/02/webinar-mastering-the-curl-command-line/

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Upload of new mail via IMAP

2024-09-09 Thread Daniel Stenberg via curl-users

On Mon, 9 Sep 2024, Nicolas George via curl-users wrote:

Can I submit a feature wish to have an option to choose the presence or 
absence of this “(\\Seen)” flag?


What would you say the ideal way would be to set such an option on the command 
line? Assuming we keep the current way the default for backwards 
compatibility.


--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.10.0

2024-09-10 Thread Daniel Stenberg via curl-users

Hello friends!

I'm happy to announce another curl release. Get it as always from 
https://curl.se. Pay special attention to the security advisory that follows 
this email.


curl and libcurl 8.10.0

 Public curl releases: 260
 Command line options: 265
 curl_easy_setopt() options:   306
 Public functions in libcurl:  94
 Contributors: 3239

This release includes the following changes:

 o autotools: add `--enable-windows-unicode` option [103]
 o curl: --help [option] displays documentation for given cmdline option [19]
 o curl: add --skip-existing [54]
 o curl: for -O, use "default" as filename when the URL has none [34]
 o curl: make --rate accept "number of units" [4]
 o curl: make --show-headers the same as --include [6]
 o curl: support --dump-header % to direct to stderr [31]
 o curl: support embedding a CA bundle and --dump-ca-embed [20]
 o curl: support repeated use of the verbose option; -vv etc [35]
 o curl: use libuv for parallel transfers with --test-event [82]
 o getinfo: add CURLINFO_POSTTRANSFER_TIME_T [87]
 o mbedtls: add CURLOPT_TLS13_CIPHERS support [78]
 o rustls: add support for setting TLS version and ciphers [113]
 o vtls: stop offering alpn http/1.1 for http2-prior-knowledge [53]
 o wolfssl: add CURLOPT_TLS13_CIPHERS support [76]
 o wolfssl: add support for ssl cert blob / ssl key blob options [50]

This release includes the following bugfixes:

 o asyn-thread: stop using GetAddrInfoExW on Windows [241]
 o autotools: fix MS-DOS builds [249]
 o autotools: fix typo in tests/data target [30]
 o aws_sigv4: fix canon order for headers with same prefix [74]
 o bearssl: fix setting tls version [203]
 o bearssl: improve shutdown handling [45]
 o BINDINGS: add zig binding [100]
 o build: add `iphlpapi` lib for libssh on Windows [166]
 o build: add `poll()` detection for cross-builds [244]
 o build: add options to disable SHA-512/256 hash algo [239]
 o build: check OS-native IDN first, then libidn2 [223]
 o build: delete unused `REQUIRE_LIB_DEPS` [226]
 o build: drop unused `NROFF` reference [253]
 o build: drop unused feature-detection code for Apple `poll()` [227]
 o build: generate `buildinfo.txt` for test logs [256]
 o build: improve compiler version detection portability
 o build: make `CURL_FORMAT_CURL_OFF_T[U]` work with mingw-w64 <=7.0.0 [207]
 o build: silence C4232 MSVC warnings in vcpkg ngtcp2 builds [137]
 o build: use -Wno-format-overflow [195]
 o buildconf.bat: fix tool_hugehelp.c generation [173]
 o cf-socket: fix pollset for listening [179]
 o cf-socket: prevent KEEPALIVE_FACTOR being set to 1000 for Windows [185]
 o cfilters: send flush [13]
 o CHANGES: rename to CHANGES.md, no longer generated [40]
 o CI: enable parallel testing in CI builds [18]
 o ci: Update actions/upload-artifact digest to 89ef406 [24]
 o cmake: `Libs.private` improvements [215]
 o cmake: add `CURL_USE_PKGCONFIG` option [138]
 o cmake: add Linux CI job, fix pytest with cmake [71]
 o cmake: add math library when using wolfssl and ngtcp2 [66]
 o cmake: add missing `pkg-config` hints to Find modules [158]
 o cmake: add missing version detection to Find modules [170]
 o cmake: add rustls [116]
 o cmake: add support for versioned symbols option [51]
 o cmake: add wolfSSH support [117]
 o cmake: allow `pkg-config` in more envs [147]
 o cmake: cleanup header paths [59]
 o cmake: default `CURL_DISABLE_LDAPS` to the value of `CURL_DISABLE_LDAP` [231]
 o cmake: delete MSVC warning suppression for tests/server [101]
 o cmake: detect `nghttp2` via `pkg-config`, enable by default [21]
 o cmake: detect and show VCPKG in platform flags [84]
 o cmake: distcheck for files in CMake subdir [9]
 o cmake: drop custom `CMakeOutput.log`/`CMakeError.log` logs [27]
 o cmake: drop libssh CONFIG-style detection [167]
 o cmake: drop no-op `tests/data/CMakeLists.txt` [26]
 o cmake: drop reference to undefined variable [25]
 o cmake: drop unused `HAVE_IDNA_STRERROR` [62]
 o cmake: drop unused internal variable [22]
 o cmake: exclude tests/http/clients builds by default [110]
 o cmake: fix `GSS_VERSION` for Heimdal found via pkg-config [77]
 o cmake: fix `pkg-config`-based detection in `FindGSS.cmake` [94]
 o cmake: fix and tidy up c-ares builds, enable in more CI jobs [156]
 o cmake: fix find rustls [148]
 o cmake: fixup linking libgsasl when detected via CMake-native
 o cmake: honor custom `CMAKE_UNITY_BUILD_BATCH_SIZE` [163]
 o cmake: limit `pkg-config` to UNIX and MSVC+vcpkg by default [188]
 o cmake: limit libidn2 `pkg-config` detection to `UNIX` [109]
 o cmake: migrate dependency detections to Find modules [183]
 o cmake: more small tidy-ups and fixes [80]
 o cmake: rename wolfSSL and zstd config variables to uppercase [151]
 o cmake: respect cflags/libdirs of native pkg-config detections [175]
 o cmake: show CMake platform/compiler flags [63]
 o cmake: show warning if libpsl is not found [154]
 o cmake: sync code between test/example targets [234]
 o cmake: sync up formatting in Find modules [129

[SECURITY ADVISORY] curl: CVE-2024-8096: OCSP stapling bypass with GnuTLS

2024-09-10 Thread Daniel Stenberg via curl-users

OCSP stapling bypass with GnuTLS


Project curl Security Advisory, September 11th 2024 -
[Permalink](https://curl.se/docs/CVE-2024-8096.html)

VULNERABILITY
-

When curl is told to use the Certificate Status Request TLS extension, often
referred to as OCSP stapling, to verify that the server certificate is valid,
it might fail to detect some OCSP problems and instead wrongly consider the
response as fine.

If the returned status reports another error than "revoked" (like for example
"unauthorized") it is not treated as a bad certficate.

INFO


This issue only exists when curl is built to use the GnuTLS library. curl can
be made to use a large variety of TLS libraries and GnuTLS is not the most
common choice.

OCSP stapling is not a widely used feature on the open web, perhaps partly
because so many big name sites do not support it.

This bug is **not** considered a *C mistake* (likely to have been avoided had
we not been using C).

This flaw also affects the curl command line tool.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2024-8096 to this issue.

CWE-295: Improper Certificate Validation

Severity: Medium

AFFECTED VERSIONS
-

The vulnerable code can only be reached when curl is built to use GnuTLS.

- Affected versions: curl 7.41.0 to and including 8.9.1
- Not affected versions: curl < 7.41.0 and >= 8.10.0
- Introduced-in: https://github.com/curl/curl/commit/f13669a375f

libcurl is used by many applications, but not always advertised as such!

SOLUTION


- Fixed-in: https://github.com/curl/curl/commit/aeb1a281cab13c7ba

RECOMMENDATIONS
---

We suggest you take one of the following actions immediately, in order of
preference:

 A - Upgrade curl and libcurl to version 8.10.0

 B - Apply the patch to your version and rebuild

 C - Build your curl with an unaffected TLS backend

TIMELINE
-

This issue was reported to the curl project on August 19, 2024. We contacted
distros@openwall on September 3, 2024.

curl 8.10.0 was released on September 11 2024 around 06:00 UTC, coordinated
with the publication of this advisory.

CREDITS
---

- Reported-by: Hiroki Kurosawa
- Patched-by: Daniel Stenberg

Thanks a lot!

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: %{filename_effective but not transmit file?

2024-09-11 Thread Daniel Stenberg via curl-users

On Wed, 11 Sep 2024, Paul Gilmartin via curl-users wrote:


curl: showing headers and --remote-header-name cannot be combined


Since --head implies that the body is not saved, we can actually make this 
work fairly easy...


--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: %{filename_effective but not transmit file?

2024-09-11 Thread Daniel Stenberg via curl-users

On Thu, 12 Sep 2024, Daniel Stenberg via curl-users wrote:

Since --head implies that the body is not saved, we can actually make this 
work fairly easy...


Eh, no. I was not thinking right. It still needs to save the headers in that 
final name that it will not know until several headers have already arrived. 
So not *that* simple.


Basically what we need to do is to make the tool keep the initial set of 
headers in memory first before it has decided what file name to use, then save 
all the headers in the file name once it knows. That would fix this 
limitation.


--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Any way to set connect-timeout per-IP, not global?

2024-10-11 Thread Daniel Stenberg via curl-users

On Fri, 11 Oct 2024, ValdikSS via curl-users wrote:

Currently curl, when used with --connect-timeout option, uses it as a global 
timeout for the whole connection set, decreasing the timeout for each IP 
address in half every connection attempt.


When you use curl 8.3.0 or later, curl stops the timeout halving when there is 
less than 600 milliseconds left.


--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Capture the cURL (https://curl.se/) request (header and body) initiated by Postman REST API client

2024-09-24 Thread Daniel Stenberg via curl-users

On Tue, 24 Sep 2024, Kaushal Shriyan via curl-users wrote:

I am using a postman to invoke a REST API call. Is there a way to capture 
the cURL (https://curl.se/) request (header and body) initiated by Postman 
REST API client to the Application server which is running RHEL 8.10 OS to 
the backend server/system?


I don't think postman uses curl natively. But I think I have seen people 
mention as "copy as curl" option?


If not, I propose you just tell it to send its request to a http server + port 
where you run nc -l which when will display the full request.


Then you can copy that full request into "h2c" that converts it to a curl 
command line for you: https://curl.se/h2c/


--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Help on : CURL header -> Authorization: Negotiate

2024-09-24 Thread Daniel Stenberg via curl-users

On Mon, 23 Sep 2024, Jason Qian via curl-users wrote:


When Kerberos is enabled, sometimes  the server ticket of Negotiate is too
large that the server has problems handling it.

My question is in the curl, is there a way to control the size of the ticket 
which will be sent to the server?


No. There is no way to send a shorter auth header. It sounds like a broken 
server to me.


--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Upload of new mail via IMAP

2024-09-19 Thread Daniel Stenberg via curl-users

On Fri, 13 Sep 2024, Nicolas George via curl-users wrote:

I created a PR for adding this proposal to the TODO document:

  https://github.com/curl/curl/pull/14964

"someone" just has to work on it.

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.10.1

2024-09-17 Thread Daniel Stenberg via curl-users

Hello friends!

I'm happy to announce another curl release. Get it as always from 
https://curl.se


curl and libcurl 8.10.1

 Public curl releases: 261
 Command line options: 265
 curl_easy_setopt() options:   306
 Public functions in libcurl:  94
 Contributors: 3246

This release includes the following bugfixes:

 o autotools: fix `--with-ca-embed` build rule [3]
 o cmake: ensure `CURL_USE_OPENSSL`/`USE_OPENSSL_QUIC` are set in sync [8]
 o cmake: fix MSH3 to appear on the feature list [20]
 o connect: store connection info when really done [9]
 o CURLMOPT_TIMERFUNCTION.md: emphasize that only a single timer should run [5]
 o FTP: partly revert eeb7c1280742f5c8fa48a4340fc1e1a1a2c7075a [34]
 o http2: when uploading data from stdin, fix eos forwarding [7]
 o http: make max-filesize check not count ignored bodies [33]
 o lib: fix AF_INET6 use outside of USE_IPV6 [13]
 o libcurl-docs: CURLINFO_LOCAL_* work for QUIC as well as TCP [1]
 o multi: check that the multi handle is valid in curl_multi_assign [14]
 o QUIC: on connect, keep on trying on draining server [11]
 o request: correctly reset the eos_sent flag [21]
 o runtests: accecpt 'quictls' as OpenSSL compatible [2]
 o rustls: fixed minor logic bug in default cipher selection [12]
 o rustls: rustls-ffi 0.14.0 update [18]
 o rustls: support strong CSRNG data [16]
 o setopt: remove superfluous use of ternary expressions [4]
 o singleuse: drop `Curl_memrchr()` for no-HTTP builds [24]
 o test537: cap the rlimit max this test runs [10]
 o tests: tweak lock file handling and timers [22]
 o tool_cb_wrt: use "curl_response" if no file name in URL [19]
 o transfer: fix sendrecv() without interim poll [15]
 o vtls: fix `Curl_ssl_conn_config_match` doc param [6]

This release includes the following known bugs:

 See docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)

For all changes ever done in curl:

 See https://curl.se/changes.html

Planned upcoming removals include:

 o Hyper support after February 2025 [89]
 o TLS libraries not supporting TLS 1.3

 See https://curl.se/dev/deprecate.html for details

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Brian Inglis, Carlo Cabrera, Daniel McCarney, Daniel Stenberg,
  dependabot[bot], finkjsc on github, Gabriel Marin, Harry Sintonen,
  Jan Venekamp, Julian K., MasterInQuestion on github, Michael Osipov,
  nekopsykose on github, Patrick Steinhardt, rampageX on github,
  Stefan Eissing, Tal Regev, Victor Kislov, Viktor Szakats
  (19 contributors)

References to bug reports and discussions on issues:

 [1] = https://curl.se/bug/?i=14852
 [2] = https://curl.se/bug/?i=14850
 [3] = https://curl.se/bug/?i=14879
 [4] = https://curl.se/bug/?i=14884
 [5] = https://curl.se/bug/?i=14886
 [6] = https://curl.se/bug/?i=14887
 [7] = https://curl.se/bug/?i=14870
 [8] = https://curl.se/bug/?i=14872
 [9] = https://curl.se/bug/?i=14897
 [10] = https://curl.se/bug/?i=14857
 [11] = https://curl.se/bug/?i=14863
 [12] = https://curl.se/bug/?i=14840
 [13] = https://curl.se/bug/?i=14858
 [14] = https://curl.se/bug/?i=14860
 [15] = https://curl.se/bug/?i=14898
 [16] = https://curl.se/bug/?i=14889
 [18] = https://curl.se/bug/?i=14889
 [19] = https://curl.se/bug/?i=14939
 [20] = https://curl.se/bug/?i=14927
 [21] = https://marc.info/?l=git&m=172620452502747&w=2
 [22] = https://curl.se/bug/?i=14835
 [24] = https://curl.se/bug/?i=14919
 [33] = https://curl.se/bug/?i=14899
 [34] = https://curl.se/bug/?i=14873

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.11.0

2024-11-05 Thread Daniel Stenberg via curl-users

Hi friends,

Here's another release for you. As always, get it from https://curl.se/

curl and libcurl 8.11.0

 Public curl releases: 262
 Command line options: 266
 curl_easy_setopt() options:   306
 Public functions in libcurl:  94
 Contributors: 3267

This release includes the following changes:

 o curl: --create-dirs works for --dump-header as well [4]
 o gtls: Add P12 format support [9]
 o ipfs: add options to disable [8]
 o TLS: TLSv1.3 earlydata support for curl [140]
 o WebSockets: make support official (non-experimental) [106]

This release includes the following bugfixes:

 o alt-svc: honor data->state.httpwant [19]
 o altsvc: avoid using local buffer and memcpy [124]
 o asyn-ares: remove typecast, fix expire [113]
 o autotools: add support for 'unity' builds, enable in CI [15]
 o bearssl: avoid strpcy() when generating TLS version log message [120]
 o bearssl: improved session handling, test exceptions [233]
 o bufq: unwrite fix [121]
 o build: add `ldap` to `libcurl.pc` `Requires:` [139]
 o build: add pytest targets [71]
 o build: clarify CA embed is for curl tool, mark default, improve summary [72]
 o build: detect and use `_setmode()` with Cygwin/MSYS, also use on Windows 
[136]
 o build: disable warning `-Wunreachable-code-break` [195]
 o build: fix clang-cl builds, add CI job [254]
 o build: fix cross-compile check for poll with bionic [70]
 o build: fix possible `-Wformat-overflow` in lib557 [85]
 o build: limit arc4random detection to no-SSL configs [43]
 o build: show if CA bundle to embed was found [83]
 o build: tidy up and improve versioned-symbols options [5]
 o build: tidy up deprecation suppression, enable warnings for clang [12]
 o certs: add missing `-CAcreateserial` option for LibreSSL [247]
 o checksrc: add check for spaces around logical AND operators [220]
 o checksrc: Added checks for colon operator in ternary expressions [77]
 o checksrc: check for spaces around '?', '>' and '<' [46]
 o ci: dump `curl_config.h` to log in all jobs [199]
 o CI: run with standard mod_http2 [214]
 o cmake, Makefile.mk: use -isystem for headers, silence BearSSL issues [37]
 o cmake/FindCares: fix version detection for c-ares 1.34.1 [209]
 o cmake/FindNGTCP2: use library path as hint for finding crypto module [40]
 o cmake: add missed variable to comment
 o cmake: add native `pkg-config` detection for mbedTLS, MSH3, Quiche, Rustls, 
wolfSSL [149]
 o cmake: allow building tests in unity mode [31]
 o cmake: apply `WIN32_LEAN_AND_MEAN` to all feature checks
 o cmake: avoid setting `BUILD_TESTING` [179]
 o cmake: clear package version after `pkg-config` detection [207]
 o cmake: delete unused NEED_LBER_H, HAVE_LDAP_H [38]
 o cmake: detect `HAVE_NETINET_IN6_H`, `HAVE_CLOSESOCKET_CAMEL`, 
`HAVE_PROTO_BSDSOCKET_H` [132]
 o cmake: detect GNU GSS [127]
 o cmake: disable default OpenSSL if BearSSL, GnuTLS or Rustls is enabled [44]
 o cmake: do not propagate unused `HAVE_GSSAPI_GSSAPI_KRB5_H` to C [131]
 o cmake: document `-D` and env build options [208]
 o cmake: drop obsolete items from `TODO` and `INSTALL-CMAKE` [228]
 o cmake: drop redundant assignments [49]
 o cmake: drop redundant zlib var, rename function (internals) [50]
 o cmake: expand CURL_USE_PKGCONFIG to non-cross MINGW [13]
 o cmake: fix broken dependency chain for cmdline-opts, tidy-ups [11]
 o cmake: fix compile warnings for clang-cl [218]
 o cmake: fix missing spacing in log message [205]
 o cmake: limit `CURL_STATIC_CRT` to MSVC [217]
 o cmake: make `test-ci` target skip building dependencies [88]
 o cmake: mark as advanced some internal Find* variables [212]
 o cmake: readd `generate-curl.1` dependency for `src` just in case [86]
 o cmake: rename LDAP dependency config variables to match Find modules [144]
 o cmake: replace `check_include_file_concat()` for LDAP and GSS detection [143]
 o cmake: replace `CURL_*_DIR` with `{PROJECT,CMAKE_CURRENT}_*_DIR` [211]
 o cmake: require quictls (or fork) when using msh3 on non-Windows [14]
 o cmake: separate target for examples, optimize CI, fix fallouts [16]
 o cmake: set version for `project()` and add CPack support [123]
 o cmake: stop adding dependency headers to global `CMAKE_REQUIRED_INCLUDES` 
[146]
 o cmake: sync torture test parallelism with autotools [35]
 o cmake: tidy up `CURL_DISABLE_FORM_API` initialization [225]
 o cmake: tidy up and shorten symbol hiding initialization [213]
 o cmake: tidy up line order
 o cmake: tidy up picky warning initialization [215]
 o cmake: tidy-ups and rebase fixups [191]
 o cmake: tweaks around debug mode and hidden symbols [194]
 o cmake: untangle feature detection interdependencies [198]
 o cmake: use `list(APPEND)` on `CURL_INCLUDES` [223]
 o cmake: use OpenSSL for LDAP detection only if available [102]
 o cmake: use the `BSD` variable [210]
 o config: rename the OS define to CURL_OS to reduce collision risk [256]
 o configure: add GSS to `libcurl.pc` `Depends:` [126]
 o configure: catch Apple in more target triplets [6]

[SECURITY ADVISTORY] curl: CVE-2024-9681 HSTS subdomain overwrites parent cache entry

2024-11-05 Thread Daniel Stenberg via curl-users

HSTS subdomain overwrites parent cache entry


Project curl Security Advisory, November 6th 2024 -
[Permalink](https://curl.se/docs/CVE-2024-9681.html)

VULNERABILITY
-

When curl is asked to use HSTS, the expiry time for a subdomain might
overwrite a parent domain's cache entry, making it end sooner or later than
otherwise intended.

This affects curl using applications that enable HSTS and use URLs with the
insecure `HTTP://` scheme and perform transfers with hosts like
`x.example.com` as well as `example.com` where the first host is a subdomain
of the second host.

(The HSTS cache either needs to have been populated manually or there needs to
have been previous HTTPS accesses done as the cache needs to have entries for
the domains involved to trigger this problem.)

When `x.example.com` responds with `Strict-Transport-Security:` headers, this
bug can make the subdomain's expiry timeout *bleed over* and get set for the
parent domain `example.com` in curl's HSTS cache.

The result of a triggered bug is that HTTP accesses to `example.com` get
converted to HTTPS for a different period of time than what was asked for by
the origin server. If `example.com` for example stops supporting HTTPS at its
expiry time, curl might then fail to access `http://example.com` until the
(wrongly set) timeout expires. This bug can also expire the parent's entry
*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier
than otherwise intended.

INFO


When triggered, this is a potential minor DoS security problem when trying to
use HTTPS when that no longer works or a cleartext transmission of data that
was otherwise intended to *possibly* be protected.

But:

`example.com` as per above is deliberately setup for HSTS, and servers should
probably expect that clients will try upgrading to HTTPS for a while outside
of the time range set in its headers.

The access that fails in this scenario tries to use plain HTTP to the domain.
Clear text, unprotected, vulnerable. HTTP is an insecure protocol and as such
applications should **not** rely on nor trust such responses, which reduces
the severity of this issue.

Even without this problem, servers occasionally set HSTS headers but have
problems with their HTTPS offering so this is a scenario that an application
ends up in now and then completely without involving curl issues and therefore
needs to have logic for. An application can for example work around the
situation by simply toggling off HSTS.

This bug is **not** considered a *C mistake* (ie not likely to have been
avoided had we not been using C).

This flaw also affects the curl command line tool.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2024-9681 to this issue.

CWE-1025: Comparison Using Wrong Factors

Severity: Low

AFFECTED VERSIONS
-

The vulnerable code can only be reached when curl is told to use HSTS.

- Affected versions: curl 7.74.0 to and including 8.10.1
- Not affected versions: curl < 7.74.0 and >= 8.11.0
- Introduced-in: https://github.com/curl/curl/commit/7385610d0c74c6a25

libcurl is used by many applications, but not always advertised as such!

SOLUTION


- Fixed-in: https://github.com/curl/curl/commit/a94973805df96269bf

RECOMMENDATIONS
---

We suggest you take one of the following actions immediately, in order of
preference:

 A - Upgrade curl and libcurl to version 8.11.0

 B - Apply the patch to your version and rebuild

 C - Avoid relying on HSTS

TIMELINE
-

This issue was reported to the curl project on October 7, 2024. We contacted
distros@openwall on October 29, 2024.

curl 8.11.0 was released on November 6 2024 around 06:00 UTC, coordinated with
the publication of this advisory.

CREDITS
---

- Reported-by: newfunction
- Patched-by: Daniel Stenberg

Thanks a lot!

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[SECURITY ADVISORY] curl: CVE-2025-0725: gzip integer overflow

2025-02-05 Thread Daniel Stenberg via curl-users

gzip integer overflow
=

Project curl Security Advisory, February 5th 2025 -
[Permalink](https://curl.se/docs/CVE-2025-0725.html)

VULNERABILITY
-

When libcurl is asked to perform automatic gzip decompression of
content-encoded HTTP responses with the `CURLOPT_ACCEPT_ENCODING` option,
**using zlib 1.2.0.3 or older**, an attacker-controlled integer overflow would
make libcurl perform a buffer overflow.

INFO


This problem can only trigger when using a run-time zlib version 1.2.0.3 or
older. zlib 1.2.0.4 was relased on August 10, 2003. This means zlib versions
that do not trigger this problem have been available and used for more than
twenty-one years already. A zlib version 1.2.0.3 or earlier still in use is
vulnerable to a wide range of security problems and a user using this is
already in a spectacularly bad position.

libcurl featured code that at run-time takes a different code path for zlib
versions before 1.0.2.4 because of lack of functionality in those old
versions, and this rarely used piece of code contained the vulnerable code
path.

This bug is considered a *C mistake*. It is likely to have been avoided had we
not been using C.

This flaw also affects the curl command line tool.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2025-0725 to this issue.

CWE-680: Integer Overflow to Buffer Overflow

Severity: Low

While the impact of this problem is potentially huge, we struggled with
setting a severity combined with the knowledge that a user vulnerable to this
is using **an over twenty years old and vulnerable zlib** and has practially
"given up" all security. If there actually exist users vulnerable to this flaw
in the world, they most likely already have worse problems than this to deal
with.

AFFECTED VERSIONS
-

- Affected versions: curl 7.10.5 to and including 8.11.1
- Not affected versions: curl < 7.10.5 and >= 8.12.0
- Introduced-in: https://github.com/curl/curl/commit/019c4088cfcca0d2b7c5cc4f

libcurl is used by many applications, but not always advertised as such!

SOLUTION


Starting in version 8.12.0, libcurl no longer supports zlib < 1.2.0.4. Using
such a version will now instead cause a run-time error.

- Fixed-in: https://github.com/curl/curl/commit/76f83f0db23846e254d940ec7

RECOMMENDATIONS
---

We suggest you take one of the following actions immediately, in order of
preference:

 A - Upgrade curl and libcurl to version 8.12.0

 B - Apply the patch to your version and rebuild

 C - Use a modern zlib

 D - Avoid using the `CURLOPT_ACCEPT_ENCODING` option

TIMELINE
-

This issue was reported to the curl project on January 23, 2025. We contacted
distros@openwall on January 28, 2025.

curl 8.12.0 was released on February 5 2025 around 08:00 UTC, coordinated with
the publication of this advisory.

CREDITS
---

- Reported-by: z2_
- Patched-by: Daniel Stenberg

Thanks a lot!

--

 / daniel.haxx.se
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.12.0

2025-02-05 Thread Daniel Stenberg via curl-users

Hi friends,

I'm happy to announce a brand new curl release. This time in association with 
three separate security advisories that will follow shortly.


Get this curl version as always from https://curl.se/

curl and libcurl 8.12.0

 Public curl releases: 264
 Command line options: 267
 curl_easy_setopt() options:   306
 Public functions in libcurl:  96
 Contributors: 3332

This release includes the following changes:

 o curl: add byte range support to --variable reading from file [56]
 o curl: make --etag-save acknowledge --create-dirs [31]
 o getinfo: fix CURLINFO_QUEUE_TIME_T and add 'time_queue' var [55]
 o getinfo: provide info which auth was used for HTTP and proxy [40]
 o hyper: drop support [57]
 o openssl: add support to use keys and certificates from PKCS#11 provider [77]
 o QUIC: 0RTT for gnutls via CURLSSLOPT_EARLYDATA [61]
 o vtls: feature ssls-export for SSL session im-/export [141]

This release includes the following bugfixes:

 o altsvc: avoid integer overflow in expire calculation [16]
 o altsvc: return error on dot-only name [178]
 o android: add CI jobs, buildinfo, cmake docs, disable `CURL_USE_PKGCONFIG` by 
default [185]
 o asyn-ares: acknowledge CURLOPT_DNS_SERVERS set to NULL [190]
 o asyn-ares: fix memory leak [233]
 o asyn-ares: initial HTTPS resolve support [166]
 o asyn-thread: use c-ares to resolve HTTPS RR [205]
 o async-thread: avoid closing eventfd twice [9]
 o autotools: add support for mingw UWP builds [192]
 o autotools: silence gcc warnings in libtool code [96]
 o binmode: convert to macro and use it from tests [44]
 o build: delete `-Wsign-conversion` related FIXMEs [137]
 o build: drop `-Winline` picky warning [53]
 o build: drop `tool_hugehelp.c.cvs`, tidy up macros, drop `buildconf.bat` [200]
 o build: drop macro used to enable `-Wsign-conversion` warnings in CI [224]
 o build: drop unused feature macros, update exception list [51]
 o build: fix `-Wtrampolines` picky warning for gcc 4.x versions [156]
 o build: fix compiling with GCC 4.x versions [214]
 o build: fix the tidy targets for autotools [52]
 o build: fix unsigned `time_t` detection for cmake, MS-DOS, AmigaOS [104]
 o build: replace configure check with PP condition (Android <21) [97]
 o build: stop detecting `sched_yield()` on Windows [176]
 o c-ares: fix/tidy-up macro initializations, avoid a deprecated function [209]
 o cd2nroff: do not insist on quoted <> within backticks [222]
 o cd2nroff: support "none" as a TLS backend [29]
 o cf-https-connect: look into httpsrr alpns when available [152]
 o cf-socket: error if address can't be copied [72]
 o cfilters: kill connection filter events attach+detach [217]
 o checksrc.bat: remove explicit SNPRINTF bypass [174]
 o checksrc: ban use of sscanf() [7]
 o checksrc: check for return with parens around a value/name [130]
 o checksrc: exclude generated bundle files to avoid race condition [235]
 o checksrc: fix the return() checker [35]
 o checksrc: introduce 'banfunc' to ban specific functions [117]
 o cmake/Find: add `iphlpapi` for c-ares, omit syslibs if dep not found [203]
 o cmake/FindLDAP: avoid empty 'Requires' item when omitting `pkg-config` 
module [90]
 o cmake/FindLDAP: avoid framework locations for libs too (Apple) [122]
 o cmake/FindLibpsl: protect against `pkg-config` "half-detection" [89]
 o cmake/FindLibssh: sync header comment with other modules
 o cmake/FindMbedTLS: drop lib duplicates early [17]
 o cmake: add `librtmp` Find module [86]
 o cmake: add LDAP Find module [46]
 o cmake: add native `pkg-config` detection for remaining Find modules [37]
 o cmake: allow `CURL_LTO` regardless of `CURL_BUILD_TYPE`, enable in CI [88]
 o cmake: clang-cl improvements [42]
 o cmake: delete accidental debug message
 o cmake: deprecate winbuild, add migration guide from legacy build methods 
[157]
 o cmake: detect mingw-w64 version, pre-fill `HAVE_STRTOK_R` [179]
 o cmake: do not store `MINGW64_VERSION` in cache [175]
 o cmake: drop `CURL_USE_PKGCONFIG` from `curl-config.cmake.in` [208]
 o cmake: drop `fseeko()` pre-fill and check for Windows [201]
 o cmake: drop duplicate Windows cache value [81]
 o cmake: drop redundant FOUND checks (libgsasl, libssh, libuv) [49]
 o cmake: drop redundant opening/closing `.*` from `MATCH` expressions [64]
 o cmake: drop unused `HAVE_SYS_XATTR_H` detection [79]
 o cmake: drop VS2010 "Dialog Hell" workaround added in 2013 [136]
 o cmake: extend zlib's `AUTO` option to brotli, zstd and enable if found [36]
 o cmake: fix `net/in.h` detection for MS-DOS [103]
 o cmake: improve `curl_dumpvars()` and move to `Utilities.cmake` [50]
 o cmake: make libpsl required by default [45]
 o cmake: make system libraries `dl`, `m`, `pthread` customizable [123]
 o cmake: move `pkg-config` names to Find modules [87]
 o cmake: move GSS init before feature detections [93]
 o cmake: move mingw UWP workaround from GHA to `CMakeLists.txt` [194]
 o cmake: namespace functions and macros [41]
 o cmake: optimize out 4 pick

[SECURITY ADVISORY] curl: CVE-2025-0665: eventfd double close

2025-02-05 Thread Daniel Stenberg via curl-users

eventfd double close


Project curl Security Advisory, February 5th 2025 -
[Permalink](https://curl.se/docs/CVE-2025-0665.html)

VULNERABILITY
-

libcurl would wrongly close the same eventfd file descriptor twice when taking
down a connection channel after having completed a threaded name resolve.

INFO


This flaw requires libcurl to get built with the threaded resolver

It requires that *eventfd* is used in the curl build. This feature is only
used on 64-bit architectures.

The eventfd socket is used for inter-thread messaging and since the
communication was originally written to use `socketpair()` only, there was two
`close()` calls done and the superfluous one was left accidentally used
because of an `#ifdef` mistake.

This bug was reported (and fixed) immediately after the 8.11.1 release, but
the security impact was not considered until later. This bug causes libcurl to
act unreliably which many users will have noticed and either avoided eventfd
or the vulnerable version, thus somewhat reducing the impact of this problem.

It can also be worth noting that both `close()` calls are typically called
within a few dozens of instructions, severely limiting the ability for an
external party to control which other file descriptor this can be made to
affect.

This bug is **not** considered a *C mistake*. It is not likely to have been
avoided had we not been using C.

This flaw also affects the curl command line tool.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2025-0665 to this issue.

CWE-1341: Multiple Releases of Same Resource or Handle

Severity: Low

AFFECTED VERSIONS
-

- Affected version: curl 8.11.1
- Not affected versions: curl < 8.11.1 and >= 8.12.0
- Introduced-in: https://github.com/curl/curl/commit/92124838c6b7e09e3f35f

libcurl is used by many applications, but not always advertised as such!

SOLUTION


- Fixed-in: https://github.com/curl/curl/commit/ff5091aa9f73802e894b1cbdf

RECOMMENDATIONS
---

We suggest you take one of the following actions immediately, in order of
preference:

 A - Upgrade curl and libcurl to version 8.12.0

 B - Apply the patch to your version and rebuild

 C - Disable eventfd use in your build

 D - Use the c-ares resolver backend

TIMELINE
-

This issue was reported to the curl project on January 22, 2025. We contacted
distros@openwall on January 28, 2025.

curl 8.12.0 was released on February 5 2025 around 08:00 UTC, coordinated with
the publication of this advisory.

CREDITS
---

- Reported-by: Ankom Coper
- Patched-by: Andy Pan

The [original bug](https://github.com/curl/curl/issues/15725) was first
reported as a "normal" bug, by:

- Reported-by: Christian Heusel

Thanks a lot!

--

 / daniel.haxx.se
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[SECURITY ADVISORY] curl: CVE-2025-0167: netrc and default credential leak

2025-02-05 Thread Daniel Stenberg via curl-users

netrc and default credential leak
==

Project curl Security Advisory, February 5th 2025 -
[Permalink](https://curl.se/docs/CVE-2025-0167.html)

VULNERABILITY
-

When asked to use a `.netrc` file for credentials **and** to follow HTTP
redirects, curl could leak the password used for the first host to the
followed-to host under certain circumstances.

This flaw only manifests itself if the netrc file has a `default` entry that
omits both login and password. A rare circumstance.

INFO


A curl transfer with `nn.tld` that redirects to `zz.tld`, using a `.netrc`
file with an *empty* `default` entry like below, would make curl pass on
`maryspassword` as password even in the transfer to the second and separate
host `zz.tld`.

~~~
machine nn.tld
  login mary
  password maryspassword

default
~~~

This bug is **not** considered a *C mistake*. It is not likely to have been
avoided had we not been using C.

This flaw also affects the curl command line tool.

This flaw is similar, but not identical, to
[CVE-2024-11053](https://curl.se/docs/CVE-2024-11053.html).

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2025-0167 to this issue.

CWE-200: Exposure of Sensitive Information to an Unauthorized Actor

Severity: Low

AFFECTED VERSIONS
-

- Affected versions: curl 7.76.0 to and including 8.11.1
- Not affected versions: curl < 7.76.0 and >= 8.12.0
- Introduced-in: https://github.com/curl/curl/commit/46620b97431e19c53ce82e5

libcurl is used by many applications, but not always advertised as such!

SOLUTION


- Fixed-in: https://github.com/curl/curl/commit/0e120c5b925e8ca75d5319e

RECOMMENDATIONS
---

We suggest you take one of the following actions immediately, in order of
preference:

 A - Upgrade curl and libcurl to version 8.12.0

 B - Apply the patch to your version and rebuild

 C - Avoid using netrc together with redirects

TIMELINE
-

This issue was reported to the curl project on December 30, 2024. We contacted
distros@openwall on January 28, 2025.

curl 8.12.0 was released on February 5 2025 around 08:00 UTC, coordinated with
the publication of this advisory.

CREDITS
---

- Reported-by: Yihang Zhou
- Patched-by: Daniel Stenberg

Thanks a lot!

--

 / daniel.haxx.se
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[SECURITY ADVISORY] curl: CVE-2024-11053: netrc and redirect credential leak

2024-12-10 Thread Daniel Stenberg via curl-users

netrc and redirect credential leak
==

Project curl Security Advisory, December 11th 2024 -
[Permalink](https://curl.se/docs/CVE-2024-11053.html)

VULNERABILITY
-

When asked to both use a `.netrc` file for credentials and to follow HTTP
redirects, curl could leak the password used for the first host to the
followed-to host under certain circumstances.

This flaw only manifests itself if the netrc file has an entry that matches
the redirect target hostname but the entry either omits just the password or
omits both login and password.

INFO


A curl transfer with `a.tld` that redirects to `b.tld` that uses a `.netrc`
like below (with a match, but no password specified for the second host),
would make curl pass on `alicespassword` as password even in the second
transfer to the separate host `b.tld`.

~~~
machine a.tld
  login alice
  password alicespassword

default
  login bob
~~~

This bug is **not** considered a *C mistake*. It is not likely to have been
avoided had we not been using C.

This flaw also affects the curl command line tool.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2024-11053 to this issue.

CWE-200: Exposure of Sensitive Information to an Unauthorized Actor

Severity: Low

AFFECTED VERSIONS
-

- Affected versions: curl 6.5 to and including 8.11.0
- Not affected versions: curl < 6.5 and >= 8.11.1
- Introduced-in: https://github.com/curl/curl/commit/ae1912cb0d494b48d514

libcurl is used by many applications, but not always advertised as such!

SOLUTION


- Fixed-in: https://github.com/curl/curl/commit/e9b9bbac22c26cf6731

The fix also addresses a few other .netrc related issues.

RECOMMENDATIONS
---

We suggest you take one of the following actions immediately, in order of
preference:

 A - Upgrade curl and libcurl to version 8.11.1

 B - Apply the patch to your version and rebuild

 C - Avoid using netrc together with redirects

TIMELINE
-

This issue was reported to the curl project on November 8, 2024. We contacted
distros@openwall on December 3, 2024.

curl 8.11.1 was released on December 11 2024 around 06:00 UTC, coordinated
with the publication of this advisory.

CREDITS
---

- Reported-by: Harry Sintonen
- Patched-by: Daniel Stenberg

Thanks a lot!

--

 / daniel.haxx.se
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.11.1

2024-12-10 Thread Daniel Stenberg via curl-users

Hello!

I'm happy to announce a brand new curl release. Get it as always from 
https://curl.se/


curl and libcurl 8.11.1

 Public curl releases: 263
 Command line options: 266
 curl_easy_setopt() options:   306
 Public functions in libcurl:  94
 Contributors: 3298

This release includes the following changes:


This release includes the following bugfixes:

 o build: fix ECH to always enable HTTPS RR [35]
 o build: fix MSVC UWP builds [32]
 o build: omit certain deps from `libcurl.pc` unless found via `pkg-config` [27]
 o build: use `_fseeki64()` on Windows, drop detections [41]
 o cmake: do not echo most inherited `LDFLAGS` to config files [55]
 o cmake: drop cmake args list from `buildinfo.txt` [8]
 o cmake: include `wolfssl/options.h` first [53]
 o cmake: remove legacy unused IMMEDIATE keyword [21]
 o cmake: restore cmake args list in `buildinfo.txt` [26]
 o cmake: set `CURL_STATICLIB` for static lib when `SHARE_LIB_OBJECT=OFF` [64]
 o cmake: sync GSS config code with other deps [28]
 o cmake: typo in comment
 o cmake: work around `ios.toolchain.cmake` breaking feature-detections [37]
 o cmakelint: fix to check root `CMakeLists.txt` [36]
 o cmdline/ech.md: formatting cleanups [13]
 o configure: add FIXMEs for disabled pkg-config references
 o configure: do not echo most inherited `LDFLAGS` to config files [31]
 o configure: replace `$#` shell syntax [25]
 o cookie: treat cookie name case sensitively [4]
 o curl-rustls.m4: keep existing `CPPFLAGS`/`LDFLAGS` when detected [40]
 o curl.h: mark two error codes as obsolete [19]
 o curl: --continue-at is mutually exclusive with --no-clobber [51]
 o curl: --continue-at is mutually exclusive with --range [61]
 o curl: --continue-at is mutually exclusive with --remove-on-error [50]
 o curl: --test-duphandle in debug builds runs "duphandled" [6]
 o curl: do more command line parsing in sub functions [71]
 o curl: rename struct var to fix AIX build [24]
 o curl: use realtime in trace timestamps [52]
 o curl_multi_socket_all.md: soften the deprecation warning [56]
 o CURLOPT_PREREQFUNCTION.md: add result code on failure [23]
 o digest: produce a shorter cnonce in Digest headers [70]
 o DISTROS: update Alt Linux links
 o dmaketgz: use --no-cache when building docker image [66]
 o docs: bring back ALTSVC.md and HSTS.md [76]
 o docs: document default `User-Agent` [57]
 o docs: suggest --ssl-reqd instead of --ftp-ssl [62]
 o duphandle: also init netrc [3]
 o ECH: enable support for the AWS-LC backend [5]
 o hostip: don't use the resolver for FQDN localhost [45]
 o http_negotiate: allow for a one byte larger channel binding buffer [63]
 o http_proxy: move dynhds_add_custom here from http.c [18]
 o KNOWN_BUGS: setting a disabled option should return CURLE_NOT_BUILT_IN [74]
 o krb5: fix socket/sockindex confusion, MSVC compiler warnings [22]
 o lib: fixes for wolfSSL OPENSSL_COEXIST [73]
 o libssh: use libssh sftp_aio to upload file [47]
 o libssh: when using IPv6 numerical address, add brackets [43]
 o macos: disable gcc `availability` workaround as needed [7]
 o mbedtls: call psa_crypt_init() in global init [2]
 o mime: fix reader stall on small read lengths [65]
 o mk-ca-bundle: remove CKA_NSS_SERVER_DISTRUST_AFTER conditions [39]
 o mprintf: fix the integer overflow checks [44]
 o multi: add clarifying comment for wakeup_write() [9]
 o multi: fix callback for `CURLMOPT_TIMERFUNCTION` not being called again 
when... [48]
 o netrc: address several netrc parser flaws [17]
 o netrc: support large file, longer lines, longer tokens [14]
 o nghttp2: use custom memory functions [1]
 o OpenSSL: improvde error message on expired certificate [59]
 o openssl: remove three "Useless Assignments" [72]
 o openssl: stop using SSL_CTX_ function prefix for our functions [20]
 o os400: Fix IBMi builds [33]
 o os400: Fix IBMi EBCDIC conversion of arguments [34]
 o pytest: add test for use of CURLMOPT_MAX_HOST_CONNECTIONS [60]
 o rtsp: check EOS in the RTSP receive and return an error code [49]
 o schannel: remove TLS 1.3 ciphersuite-list support [54]
 o setopt: fix CURLOPT_HTTP_CONTENT_DECODING [15]
 o setopt: fix missing options for builds without HTTP & MQTT [10]
 o show-headers.md: clarify the headers are saved with the data [58]
 o socket: handle binding to "host!" [16]
 o socketpair: fix enabling `USE_EVENTFD` [30]
 o strtok: use namespaced `strtok_r` macro instead of redefining it [29]
 o tests: add the ending time stamp in testcurl.pl
 o tests: re-enable 2086, and 472, 1299, 1613 for Windows [38]
 o TODO: consider OCSP stapling by default [11]
 o tool_formparse: remove use of sscanf() [68]
 o tool_getparam: parse --localport without using sscanf [67]
 o tool_getpass: fix UWP `-Wnull-dereference` [46]
 o tool_getpass: replace `getch()` call with `_getch()` on Windows [42]
 o tool_urlglob: parse character globbing range without sscanf [69]
 o vtls: fix compile warning when ALPN is not available [12]

This release includes the following known bugs:

 

Re: [Feature Request] Use checksum to verify download

2025-01-19 Thread Daniel Stenberg via curl-users

On Fri, 17 Jan 2025, Falk via curl-users wrote:


I would like to propose a feature, where one can specify a checksum (e.g. md5 
or sha256) on command line which is checked by curl during download.

Example:
  curl -sha256 $SHA256_HASH -o- https://fnm.vercel.app/install | bash


Problem one:

Imagine that the file you download in that command line is several gigabytes - 
because it might be and we need to make it work even when it is enormous. The 
hash is only valid for the entire thing, so it would need to download every 
single byte before it can check the hash.


That's not how that curl command line works today and would mean a significant 
difference to implement it that way: it would have to download the entire 
thing in a temporary place and after having validated the hash, send the 
entire thing to stdout and then delete the file again.


Problem two:

Where would users get the hash to use in the command line? In most cases users 
would download their stuff from https://example.com and the hash would be 
mentioned on https://example.com - meaning that since the download is already 
protected with TLS, checking the data with a hash from the same site adds 
extremely little. If the site is breached and the download is replaced with 
malware without breaking the server TLS certificate, then surely the attacker 
can also update the hash mentioned on the site?


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


make --url support a file with URLs

2025-01-27 Thread Daniel Stenberg via curl-users

Hey,

Over the years, people have requested an easier way to provide a list of URLs 
to curl and have it download them all.


With my new PR [*], you can write "curl --url @file" and curl will download 
all the URLs in the provided file as if -O was used for each one of them. It 
can also get the list from stdin if you do "--url @-" in style with how other 
curl options work.


If you add -Z, it will do them in parallel.

Thoughts? What did I forget?

[*] = https://github.com/curl/curl/pull/16099

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


RE: make --url support a file with URLs

2025-01-27 Thread Daniel Stenberg via curl-users

On Mon, 27 Jan 2025, Dick Brooks wrote:


This is great news. Will Basic Auth info also be supported for each URL?


Sure that works as expected pretty much already:

1. You can add the username + password on a per URL basis in the file

or

2. You provide the credentials separately on the command line:

   curl --url @urls.txt -u mrsmith:password123

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: make --url support a file with URLs

2025-01-27 Thread Daniel Stenberg via curl-users

On Mon, 27 Jan 2025, Paul Gilmartin via curl-users wrote:

Will the URL list support individual --time-cond or --ETag values for 
selective update of outdated packages?


Not really. Those are already options that are ticky to use when there are 
more than one URL involved so I don't know how you would do it conveniently 
for a whole list of URLs. Also, the etag options for curl only supports single 
URL so far.


The URL list is meant to be rather "simple". Somone who wants fancy and more 
advanced features per URL can always just generate a config file using a 
wrapper script and pass that to curl.


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.12.1

2025-02-12 Thread Daniel Stenberg via curl-users

Hello!

Due to a number of annoying bugs in the previous release, this follow-up 
8.12.1 release is here only eight days later.


As always, get it from https://curl.se

curl and libcurl 8.12.1

 Public curl releases: 265
 Command line options: 267
 curl_easy_setopt() options:   306
 Public functions in libcurl:  96
 Contributors: 3344

This release includes the following changes:


This release includes the following bugfixes:

 o all: remove FIXME and TODO comments [55]
 o asyn-thread: fix build with `CURL_DISABLE_SOCKETPAIR` [47]
 o asyn-thread: fix HTTPS RR crash [10]
 o asyn-thread: fix the returned bitmask from Curl_resolver_getsock [18]
 o asyn-thread: survive a c-ares channel set to NULL [52]
 o build: add tool_hugehelp.c into IBMi build [40]
 o checksrc.pl: warn on FIXME/TODO comments
 o cmake/Find: set `_FOUND` for compatibility when found via 
`pkg-config` [22]
 o cmake: add integration tests, run them in CI [21]
 o cmake: always reference OpenSSL and ZLIB via imported targets [24]
 o cmake: avoid unnecessary `-L` for implicit link dirs [11]
 o cmake: drop `LDAP_DEPRECATED=1` macro, to sync with autotools [23]
 o cmake: fix `HAVE_GETHOSTBYNAME_R_*` detections with `CURL_WERROR=ON` [57]
 o cmake: fix to detect `HAVE_OPENSSL_SRP` in MSVC UWP builds [62]
 o cmake: fix/add missing feature detections for Windows/MS-DOS [58]
 o cmake: initialize variables where missing [27]
 o cmake: lib order fixes for picky linkers (e.g. binutils `ld`) [26]
 o cmake: normalize before matching paths with syspaths [30]
 o cmake: respect `GNUTLS_CFLAGS` when detected via `pkg-config` [38]
 o cmake: respect `GNUTLS_LIBRARY_DIRS` in `libcurl.pc` and `curl-config` [39]
 o cmake: save a line with `CMAKE_C_IMPLICIT_LINK_DIRECTORIES` exclusion [32]
 o cmake: tidy up string append and list prepend syntax [28]
 o configure/cmake: check for realpath [19]
 o configure/cmake: set asyn-rr a feature only if httpsrr is enabled [42]
 o content_encoding: #error on too old zlib [2]
 o curl_global_sslset.md: Add SSL backend names [50]
 o CURLOPT_SSH_KNOWNHOSTS.md: strongly recommend using this [41]
 o CURLSHOPT_SHARE.md: adjust for the new SSL session cache [6]
 o docs: better explain multi-part byte range behavior [4]
 o docs: use valid example domain names [54]
 o generate.bat: remove curl_get_line.c from the curlx file list [20]
 o header.md: mention `Authorization:` and `Cookie:` special treatment [43]
 o imap: TLS upgrade fix [14]
 o INTERNALS: fix c-ares, as we actually support 1.6.0 or later [37]
 o ldap: drop support for legacy Novell LDAP SDK [25]
 o lib: include necessary headers for `inet_ntop`/`inet_pton` [8]
 o lib: silence LibreSSL collision warning on non-MSVC Windows [51]
 o libssh2: comparison is always true because rc <= -1 [56]
 o libssh2: raise lowest supported version to 1.2.8 [3]
 o libssh: drop support for libssh older than 0.9.0 [33]
 o libssh: silence `-Wconversion` with a cast (Windows 32-bit) [7]
 o netrc: return code cleanup, fix missing file error [45]
 o openssl-quic: ignore ciphers for h3 [1]
 o openssl: fix out of scope variables in goto [12]
 o pop3: TLS upgrade fix [15]
 o runtests: fix the disabling of the memory tracking [29]
 o runtests: quote commands to support paths with spaces [35]
 o scache: add magic checks [31]
 o smb: silence `-Warray-bounds` with gcc 13+ [9]
 o smtp: TLS upgrade fix [16]
 o SPONSORS.md: clarify that we don't promise goods or services [5]
 o test1516: avoid failure due to spaces in path [36]
 o test2080: simplify, avoid the null byte
 o tests: fix test 558, 1330 for MSVC, allow TrackMemory with MSVC in cmake [53]
 o tidy-up: make per-file `ARRAYSIZE` macros global as `CURL_ARRAYSIZE` [48]
 o tool_cfgable: sort struct fields by size, use bitfields for booleans [17]
 o tool_getparam: add "TLS required" flag for each such option [44]
 o tool_progress: fix percent output of large parallel transfers [61]
 o tool_ssls: switch to tool-specific get_line function [34]
 o verbose.md: mention how carriage-return might occur in headers [49]
 o vquic: make the "disable GSO" use infof, not failf [65]
 o vtls: fix multissl-init [60]
 o vtsl: eliminate 'data->state.ssl_scache' [59]
 o wakeup_write: make sure the eventfd write sends eight bytes [46]
 o wolfssl: silence compiler warning (MSVC 2019), simplify existing [13]

This release includes the following known bugs:

 See https://curl.se/docs/knownbugs.html

For all changes ever done in curl:

 See https://curl.se/changes.html

Planned upcoming removals include:

 o Support for the msh3 HTTP/3 backend
 o The winbuild build system
 o TLS libraries not supporting TLS 1.3

 See https://curl.se/dev/deprecate.html

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Aaron Deadman, Andrei Korshikov, Andrew Kirillov, arlt on github,
  Christian Schmitz, CueXXIII on Github, Dan Fandrich, Daniel Stenberg,
  deliciouslytyped on github, Fay Stegerman, Jan Eng

mascot?

2025-02-09 Thread Daniel Stenberg via curl-users

Hello,

In a break from the debugging and thinking of patch releases, a less serious 
question to ponder about:


Should we get ourselves a mascot for the curl project?

The poll is here: https://github.com/curl/curl/discussions/16276

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 2: curl 8.13.0-rc2

2025-03-17 Thread Daniel Stenberg via curl-users

Hello friends!

Welcome to the second 8.13.0 release candidate: rc2.

Please try this release candidate in your use cases and products and verify
that everything works as intended.

Please try the new features and options and verify that they work the way they
are documented, and maybe also the way you think they should. Features that
have not shipped in a release yet can still be marginally tweaked if deemed
desirable.

Download your curl release candidates from https://curl.se/rc/

--

 / daniel.haxx.se
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Anyone using --raw?

2025-04-06 Thread Daniel Stenberg via curl-users

On Sun, 6 Apr 2025, Daniel Stenberg via curl-users wrote:

Hm, sorry, I might have been mostly wrong in my explanation of this bug. 
I'll rethink and come back with a new PR soon.


In my great wisdom I confused CURLOPT_HTTP_TRANSFER_DECODING with 
CURLOPT_TRANSFER_ENCODING.


Maybe not the most cleverly named options we have. Anyway, I think the outcome 
is that the fix is much simpler than what I first thought:


  https://github.com/curl/curl/pull/16984

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: [RELEASE] curl 8.13.0

2025-04-05 Thread Daniel Stenberg via curl-users

On Wed, 2 Apr 2025, Dagobert Michelsen wrote:


I have a regression on Solaris 10 Sparc:


It is puzzling that CloseSocket suddenly is deemed fine by configure.

I made https://github.com/curl/curl/issues/16915 for it

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Anyone using --raw?

2025-04-05 Thread Daniel Stenberg via curl-users

On Sat, 5 Apr 2025, Fabian Keil via curl-users wrote:


Privoxy has tests for the handling of chunk-encoded content


Thanks!

That's even the "worst" kind of use - the most complicated for us to provide. 
This, because when curl doesn't handle the chunking itself it doesn't know 
when the content ends. This particular use case works because the server 
decides to close the connection after use, but that's sort of contrary to the 
point of having chunked encoding to begin with.


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Anyone using --raw?

2025-04-05 Thread Daniel Stenberg via curl-users

Hello,

If there is anyone around who uses --raw with a decent use case? I would not 
mind learning how/why because I'm about to break it:


  https://github.com/curl/curl/issues/16974

... and I'd like to figure out what we should to do fix it again. If at all...

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Anyone using --raw?

2025-04-05 Thread Daniel Stenberg via curl-users

On Sat, 5 Apr 2025, Dan Fandrich via curl-users wrote:


Debian codesearch shows a number of projects using it:


Thanks!

My plan to keep --raw working in the next release now looks like this:

  https://github.com/curl/curl/pull/16982

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: Anyone using --raw?

2025-04-05 Thread Daniel Stenberg via curl-users

On Sat, 5 Apr 2025, Daniel Stenberg via curl-users wrote:


My plan to keep --raw working in the next release now looks like this:


Hm, sorry, I might have been mostly wrong in my explanation of this bug. I'll 
rethink and come back with a new PR soon.


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 3: curl 8.13.0-rc3

2025-03-26 Thread Daniel Stenberg via curl-users

Hello friends!

Welcome to the third and last 8.13.0 release candidate: rc3. Now only a week 
left until the actual release.


Please try this release candidate in your use cases and products and verify
that everything works as intended.

Please try the new features and options and verify that they work the way they
are documented, and maybe also the way you think they should. Features that
have not shipped in a release yet can still be marginally tweaked if deemed
desirable.

Download your curl release candidates from https://curl.se/rc/

--

 / daniel.haxx.se
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.13.0

2025-04-01 Thread Daniel Stenberg via curl-users

Hello team!

Welcome to a new release. Get it as always from https://curl.se/

curl and libcurl 8.13.0

 Public curl releases: 266
 Command line options: 268
 curl_easy_setopt() options:   307
 Public functions in libcurl:  96
 Contributors: 3378

This release includes the following changes:

 o curl: add write-out variable 'tls_earlydata' [79]
 o curl: make --url support a file with URLs [104]
 o gnutls: set priority via --ciphers [167]
 o IMAP: add CURLOPT_UPLOAD_FLAGS and --upload-flags [124]
 o lib: add CURLFOLLOW_OBEYCODE and CURLFOLLOW_FIRSTONLY [147]
 o OpenSSL/quictls: add support for TLSv1.3 early data [150]
 o rustls: add support for CERTINFO [106]
 o rustls: add support for SSLKEYLOGFILE [282]
 o rustls: support ECH w/ DoH lookup for config [280]
 o rustls: support native platform verifier
 o var: add a '64dec' function that can base64 decode a string [78]
 o wolfssl: tls early data support [50]

This release includes the following bugfixes:

 o addrinfo: add curl macro to avoid redefining foreign symbols [29]
 o asyn-thread: avoid the separate 'struct resdata' alloc [20]
 o asyn-thread: avoid the separate curl_mutex_t alloc [6]
 o asyn-thread: do not allocate thread_data separately [21]
 o asyn-thread: remove 'status' from struct Curl_async [36]
 o autotools: fix `dllmain.c` in unity builds [257]
 o autotools: fix `libtest` bundle to depend on `FIRSTFILES` [240]
 o autotools: use `CURLDEBUG` to exclude TrackMemory code from unity [253]
 o aws_sigv4: cannot be used for proxy [171]
 o aws_sigv4: merge repeated headers in canonical request [272]
 o aws_sigv4: use strparse more for parsing [55]
 o base64: drop `BUILDING_CURL` macro, always include in tests/server [234]
 o build: add Windows CE / CeGCC support, with CI jobs [87]
 o build: cmake multi-pkg-config detection improvements (brotli, ldap, mbedtls) 
[192]
 o build: do not apply curl debug macros to `tests/server` by default [254]
 o build: drop unused `getpart` tool [107]
 o build: enable -Wjump-misses-init for GCC 4.5+ [62]
 o build: enable `-Wcast-qual`, fix or silence compiler warnings [208]
 o build: fix compiler warnings in feature detections [39]
 o build: replace Curl_ prefix with curlx_ for functions used in servers [236]
 o build: set `-O3` and tune WinCE in CI, fix `getpart`, `vtls_scache` fallouts 
[137]
 o build: set `HAVE_STDINT_H` if `stdint.h` is available [155]
 o build: set `HAVE_WRITABLE_ARGV` for Apple cross-builds [8]
 o build: silence bogus `-Wconversion` warnings with gcc 5.1-5.4 [68]
 o build: silence mingw32ce C99 format warnings, simplify CI [143]
 o build: tidy-ups around `inet_pton` [180]
 o c-ares httpsrr: fix ifdef [223]
 o c-ares: error out for unsupported versions, drop unused macros [85]
 o ca-native.md: sync with CURLSSLOPT_NATIVE_CA [72]
 o cf-socket: deduplicate Windows Vista detection [11]
 o cf-socket: remove empty switch [75]
 o client writer: handle pause before decoding [61]
 o cmake: `CURL_LIBDIRS` improvements (upstreamed from vcpkg) [191]
 o cmake: `SHARE_LIB_OBJECT=ON` requires CMake 3.12 or newer [46]
 o cmake: add custom command scripts as dependencies where missing [298]
 o cmake: add pre-fill for Unix, enable in GHA/macos, verify pre-fills [42]
 o cmake: add shell completion support [261]
 o cmake: allow `CURL_STATIC_CRT` with shared libcurl and no curl exe [123]
 o cmake: allow `CURL_STATIC_CRT` with UCRT VS2015+ builds [134]
 o cmake: allow empty `IMPORT_LIB_SUFFIX`, add suffix collision detection [41]
 o cmake: avoid `-Wnonnull` warning in `HAVE_FSETXATTR_5` detection [81]
 o cmake: disable HTTPS-proxy as a feature if proxy is disabled [77]
 o cmake: drop `CURL_DISABLE_TESTS` option [94]
 o cmake: drop `HAVE_C_FLAG_Wno_long_double` logic for ancient Apple gcc [126]
 o cmake: drop `HAVE_IN_ADDR_T` from pre-fill too
 o cmake: drop two stray TLS feature checks for wolfSSL [9]
 o cmake: exclude `-MP` for `clang-cl` again [132]
 o cmake: fix `HAVE_ATOMIC`/`HAVE_STDATOMIC` pre-fill for clang-cl [28]
 o cmake: fix clang-tidy builds to verify tests, fix fallouts [289]
 o cmake: fix detection pre-fills for iOS [153]
 o cmake: fix ECH detection in custom-patched OpenSSL [32]
 o cmake: fix typo in ECH config error msg [246]
 o cmake: hide empty `MINGW64_VERSION` output for mingw32ce [114]
 o cmake: improve httpd detection for pytest [127]
 o cmake: mention 'insecure' in the debug build warning [15]
 o cmake: misc tidy-ups [38]
 o cmake: pre-fill known type sizes for Windows OSes [100]
 o cmake: replace CMAKE_COMPILER_IS_GNUCC with CMAKE_C_COMPILER_ID [232]
 o cmake: replace exec_program() with execute_process() [239]
 o cmake: restrict static CRT builds to static curl exe, test in CI [113]
 o cmake: sync cutoff version with autotools for picky option `-ftree-vrp` [99]
 o cmake: sync OpenSSL(-fork) feature checks with `./configure` [49]
 o cmake: unity mode optimization for non-`CURLDEBUG` `testdeps` targets [231]
 o CODE_STYLE: readability and banned functions [35]
 o 

location-mode ?

2025-04-25 Thread Daniel Stenberg via curl-users

Hi friends,

In an attempt to improve -X and to perhaps support the future QUERY method 
better, I recently made a PR that introduces a --location-mode option.


It has received very little attention and feedback so here I am. I would like 
some more eyes and thoughts on this before I proceed.


This new option can make -X start working the way most people assume it 
already does...


  https://github.com/curl/curl/pull/16543

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: [RFE] Improve etag handling with --etag-compare-update

2025-04-28 Thread Daniel Stenberg via curl-users

On Mon, 28 Apr 2025, Aleksei via curl-users wrote:


I'm trying to implement a "download only if updated on a remote
resource" functionality with a curl script using etags.

Currently the etag file saved with --etag-save becomes useless after a 
single update on a remote resource.


I don't understand. Can you elaborate? If the remote resource is indeed 
updated, surely it should download again and update the etag file?


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: [RFE] Improve etag handling with --etag-compare-update

2025-04-29 Thread Daniel Stenberg via curl-users

On Tue, 29 Apr 2025, Aleksei wrote:


If they work together in a single invocation then great, no enhancement
needed. Man page describes ETag usage in separate requests:

 Use the option --etag-save to first save the ETag from a response, and
 then use  this option to compare against the saved ETag in a
 **subsequent request**.


It saves the etag from this transfer for the purpose of using in the next 
command line.


The compare option however uses the existing file contents for *this* command 
line.


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: [RFE] Improve etag handling with --etag-compare-update

2025-04-28 Thread Daniel Stenberg via curl-users

On Tue, 29 Apr 2025, Aleksei wrote:


I'm asking for "and update the etag file" part to be done by curl.

Scenario:
1) curl downloads a webpage, saving etag file in file0.etag


Something like this:

curl --etag-save file0.etag $URL


2) website updates a webpage (update 1)
3) curl uses "--etag-compare file0.etag" and re-downloads the page -
  so far so good


Download the file if changed, update the etag file:

curl --etag-compare file0.etag --etag-save file0.etag $URL


4) website updates a webpage (update 2)
5) How do I check that webpage is updated now? "--etag-compare
  file0.etag" will re-download even if update 2 has been downloaded


You repeat the command above:

curl --etag-compare file0.etag --etag-save file0.etag $URL

... which only downloads the URL again if it is different than the last 
download.


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: [RFE] Improve etag handling with --etag-compare-update

2025-04-29 Thread Daniel Stenberg via curl-users

On Tue, 29 Apr 2025, Aleksei wrote:

Thanks for explanations Daniel, all clear now. Perhaps these things should 
be mentioned in the man page, the current --etag-save and --etag-compare 
sections gave me a clear impression these options are to be used in separate 
curl invocations.


How about adding this paragraph to the --etag-save documentation?

  In many situations you want to use an existing etag in the request to avoid
  downloading the same resource again but also save the new etag if it has
  indeed changed, by using both etag options --etag-save and --etag-compare,
  in the same command line.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 1: curl 8.14.0-rc1

2025-05-01 Thread Daniel Stenberg via curl-users

Hello friends!

As per our new tradition, we have an rc1 build of the coming curl release 
uploaded and made available for testing on https://curl.se/rc/.


Please consider taking this for a spin and verify that everything seems to 
work as they should. All the new features for the pending release have been 
merged and should work as documented.


Do not use release candidates in production. They are work in progress. Use 
them for testing and verification only. Use actual releases in production.


This rc1 release is tagged as rc-8_14_0-1.

Thanks for flying curl.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: On QUERY and -X

2025-03-02 Thread Daniel Stenberg via curl-users

On Tue, 25 Feb 2025, Daniel Stenberg wrote:

This new functionality that opens up the opportunity to make curl do QUERY 
better by using this new flag. But how?


My plan is now to merge the libcurl part necessary for this functionality in 
this feature window, then write up a proposal for the curl tool to ideally get 
merged in the *next* pending release window.


I have not yet figured out exactly which of the approaches I prefer...

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: On QUERY and -X

2025-03-03 Thread Daniel Stenberg via curl-users

On Sun, 2 Mar 2025, Bastian Jesuiter wrote:

I personally like the idea of adding a flag specifically for this new -L 
behavior.


Here's a first take that introduces a --request-mode option for this purpose:

https://github.com/curl/curl/pull/16543

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 1: curl 8.13.0-rc1

2025-03-08 Thread Daniel Stenberg via curl-users

Hello friends!

Welcome to the first 8.13.0 release candidate: rc1.

Today is the first day of the feature freeze, meaning that all changes and new
features that are introduced in the pending release have been merged already
and should work.

Please try this release candidate in your use cases and products and verify
that everything works as intended.

Please try the new features and options and verify that they work the way they
are documented, and maybe also the way you think they should. Features that
have not shipped in a release yet can still be marginally tweaked if deemed
desirable.

Download your curl release candidates from https://curl.se/rc/

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: On QUERY and -X

2025-02-25 Thread Daniel Stenberg via curl-users

On Tue, 25 Feb 2025, Daniel Stenberg via curl-users wrote:


4. Another way?


I thought of another way:

4. Add a new option --location-code that just changes how -L works, so that
   users can opt to add this in their .curlrc and magically have all existing
   command lines using -L switch over to the new way.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: On QUERY and -X

2025-02-25 Thread Daniel Stenberg via curl-users

On Tue, 25 Feb 2025, Stefan Eissing wrote:

AFAICT, this is to make QUERY requests working correctly? Would it be 
clearer to have a separate option to do a QUERY, which then would have the 
"correct" redirect behaviour? So, user would not have to -X this?


While the primary purpose right now is for QUERY is, I was thinking that it 
could be a good oppurtunity to clean this up so that users would have a better 
experience independently of what custom method they use.


Hence me not trying to push for --query specifically.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 2: curl 8.14.0-rc2

2025-05-11 Thread Daniel Stenberg via curl-users

Hello friends!

In preparing for the actual release, rc2 has been uploaded and made available 
for testing on https://curl.se/rc/.


Please consider taking this for a spin and verify that everything seems to work
as they should. All the new features for the pending release have been merged
and should work as documented.

Do not use release candidates in production. They are work in progress. Use them
for testing and verification only. Use actual releases in production.

This rc2 release is tagged as rc-8_14_0-2.

Thanks for flying curl.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 3: curl 8.14.0-rc3

2025-05-20 Thread Daniel Stenberg via curl-users

Hello friends!

In preparing for the actual release, rc3 has been uploaded and made available
for testing on https://curl.se/rc/.

Please consider taking this for a spin and verify that everything seems to work
as they should. All the new features for the pending release have been merged
and should work as documented.

Do not use release candidates in production. They are work in progress. Use them
for testing and verification only. Use actual releases in production.

This rc3 release is tagged as rc-8_14_0-3.

This is exactly one week before the actual pending 8.14.0 release is planned 
to ship.


Thanks for flying curl.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


The curl user survey 2025 is up

2025-05-18 Thread Daniel Stenberg via curl-users

Hello!

The time has come for you to once again do your curl community duty. Run over 
and fill in the curl user survey and tell us about how you use curl etc. This 
is the only proper way we get user feedback on a wide scale so please use this 
opportunity to tell us what you really think.


This is the 12th time the survey runs. It is generally similar to last year’s 
but with some details updated and refreshed.


  https://forms.gle/mtoVC4AfEer8L8CK6

Also available through the blog post announcing this:

  https://daniel.haxx.se/blog/2025/05/19/the-curl-user-survey-2025-is-up/

Thanks!

--

 / daniel.haxx.se || https://rock-solid.curl.dev-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[reminder] The curl user survey 2025

2025-05-26 Thread Daniel Stenberg via curl-users

Hello!

Just a quick reminder: if you haven't already, please head over and fill in 
this year's curl survey:


  https://daniel.haxx.se/blog/2025/05/19/the-curl-user-survey-2025-is-up/

Thanks!

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Help out in the curl project!

2025-05-26 Thread Daniel Stenberg via curl-users

Hello,

What YOU can do to help out in the curl project. Things we would appreciate
help and assistance with at the moment. Some things that are current.

For general tips on how to get started helping out, start at [1].

## survey

Fill in the annual curl user survey [3] and make your friends do it as well.
This is the best way we have to solicit user feedback and will guide us going
forward.

## known bugs

If you have been looking for somewhere to start contributing, one way is to
find an entry in the known bugs document [2] that sounds like something you
would like to fix and then go do it.

It is a good idea to check early if the issue is still around and to bounce
potential solutions with the team.

## reproduce bugs

A great way to help out is to join the issues tracker on GitHub [4] and help
us figure out what the issues are about. Can we reproduce them? Can we figure
out the reason for them? Write a PR to fix them?

## test rc builds

While basically over for this release cycle as we shipped the third and last
rc build last week for this time, building and testing release candidates in
your environment and use cases *before* the actual release helps us greatly to
catch regressions and makes for a better and more solid release.

## experimental features

Build curl with one or more of these features enabled, use them and make sure
that they work the way you want to work and how the documentation says they
work:

 - SSL session import/export
 - HTTPS RR
 - ECH

Submit issues when you find something wrong!

## Links

[1] = https://curl.se/docs/help-us.html
[2] = https://curl.se/docs/knownbugs.html
[3] = https://daniel.haxx.se/blog/2025/05/19/the-curl-user-survey-2025-is-up/
[4] = https://github.com/curl/curl/issues

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl and libcurl 8.14.0

2025-05-27 Thread Daniel Stenberg via curl-users

Hello,

I'm happy to once again announce that we have shipped a new curl release. curl 
8.14.0 is uploaded and is as always available at https://curl.se


Enjoy!

curl and libcurl 8.14.0

 Public curl releases: 267
 Command line options: 269
 curl_easy_setopt() options:   308
 Public functions in libcurl:  96
 Contributors: 3427

This release includes the following changes:

 o mqtt: send ping at upkeep interval [49]
 o schannel: handle pkcs12 client certificates containing CA certificates [58]
 o TLS: add CURLOPT_SSL_SIGNATURE_ALGORITHMS and --sigalgs [113]
 o vquic: ngtcp2 + openssl support [96]
 o wcurl: import v2025.04.20 script + docs [97]
 o websocket: add option to disable auto-pong reply [52]

This release includes the following bugfixes:

 o _SEEALSO.md: remove spaces around command and man page section [166]
 o asny-thrdd: fix detach from running thread [191]
 o asnyc-thrdd: explain how this is okay with a comment [200]
 o asyn resolver code improvements [50]
 o async-threaded resolver: use ref counter [10]
 o async: DoH improvements [99]
 o autotools: detect `wolfSSL_set_quic_use_legacy_code` like cmake does [104]
 o autotools: install shell completion files on cross build [119]
 o aws-sigv4: allow a blank string [86]
 o build: check required rustls-ffi version [46]
 o build: enable gcc-12/13+, clang-10+ picky warnings [147]
 o build: enable gcc-15 picky warnings [133]
 o certs: drop unused `default_bits` from `.prm` files [45]
 o cf-https-connect: use the passed in dns struct pointer [64]
 o cf-socket: fix FTP accept connect [153]
 o cfilters: remove assert [120]
 o cmake/FindNGTCP2: simplify multi-pkg-config detection [27]
 o cmake: append picky warnings to `CMAKE_REQUIRED_FLAGS` as string [68]
 o cmake: avoid 'target is imported but not globally visible' when consuming 
libcurl with old cmake [125]
 o cmake: do not install `mk-ca-bundle` script and manpage [101]
 o cmake: enable `-Wall` for MSVC when `PICKY_COMPILER=ON` [100]
 o cmake: extend integration tests [139]
 o cmake: fix `fish` install directory detection via `pkg-config` [123]
 o cmake: fix nghttp3 static linking with `USE_OPENSSL_QUIC=ON` [79]
 o cmake: fix option() and mark_as_advanced() mixed order [111]
 o cmake: fix shell completion install when just one flavor is enabled [73]
 o cmake: honor individual picky option overrides found in `CMAKE_C_FLAGS` [146]
 o cmake: install shell completions for cross-builds [112]
 o cmake: link `crypt32` for OpenSSL feature detection [105]
 o cmake: merge `CURL_WERROR` logic into `PickyWarnings.cmake` [66]
 o cmake: prefer `COMPILE_OPTIONS` over `CMAKE_C_FLAGS` for custom C options 
[72]
 o cmake: quotes, whitespace, use `VERSION_GREATER_EQUAL` [33]
 o cmake: revert `CURL_LTO` behavior for multi-config generators [74]
 o cmake: set `BUILDING_LIBCURL` directly for unit test targets [174]
 o cmake: stop deleting `-W` from `CMAKE_C_FLAGS` (MSVC) [155]
 o cmake: tidy up and document feature detections in dependencies [107]
 o cmake: use `CMAKE_COMPILE_WARNING_AS_ERROR` if available [154]
 o cmake: use `INCLUDE_DIRECTORIES` prop to specify local header dirs [47]
 o cmake: use `LIB_NAME` in `curl-config.cmake.in` [148]
 o cmake: use absolute paths for completion targets [40]
 o cmake: use the `LINK_OPTIONS` property with CMake 3.13+ [78]
 o configure: catch asking for double resolver without https-rr [82]
 o configure: fix --disable-rt [20]
 o configure: restore link checks [25]
 o configure: suppress command not found for brew [235]
 o conncache: make Curl_cpool_init return void [15]
 o connect: shutdown timer fix [132]
 o content_encoding: Transfer-Encoding parser improvements [31]
 o CONTRIBUTE: add project guidelines for AI use [76]
 o contrithanks.sh: drop set -e [6]
 o cpool/cshutdown: force close connections under pressure [80]
 o curl: fix memory leak when -h is used in config file [161]
 o curl: only warn once for --manual in manual-disabled build [205]
 o curl_get_line: handle lines ending on the buffer boundary [62]
 o curl_krb5: only use functions if FTP is still enabled [21]
 o curl_multibyte: fixup low-level calls, include in unity builds [55]
 o curl_osslq: remove a leftover debug fprintf() call [140]
 o curl_url_get.md: don't call it normalized [212]
 o curl_version_info.md: clarify ssl_version for MultiSSL [145]
 o CURLMOPT_TIMERFUNCTION.md: correct the example [162]
 o CURLOPT_ERRORBUFFER.md: buffer is read only after curl takes ownership [93]
 o CURLOPT_FOLLOWLOCATION.md: switch to GET => no body [208]
 o CURLOPT_READFUNCTION.md: mention the seek callback [209]
 o CURLOPT_XFERINFOFUNCTION.md: fix the callback return type in example [122]
 o curlx: move the docs to docs/internals/ [184]
 o DEPRECATE.md: drop support for VS2008 [214]
 o DEPRECATE.md: drop Windows CE support [216]
 o dist: drop duplicate entry from `CMAKE_DIST` [88]
 o dns_entry: move from conn to data->state [178]
 o Dockerfile: update debian:bookworm-slim Docker digest to 90522ee [2

[SECURITY ADVISORY] curl: QUIC certificate check skip with wolfSSL

2025-05-27 Thread Daniel Stenberg via curl-users

QUIC certificate check skip with wolfSSL


Project curl Security Advisory, May 28 2025 -
[Permalink](https://curl.se/docs/CVE-2025-4947.html)

VULNERABILITY
-

libcurl accidentally skips the certificate verification for QUIC connections
when connecting to a host specified as an IP address in the URL. Therefore, it
does not detect impostors or man-in-the-middle attacks.

INFO


curl can get built to use one out of twelve different TLS libraries. The
selection is done both at build-time and also optionallt at run-time. This
vulnerability only affects curl made to use this specific TLS backend.

This flaw requires wolfSSL to be used as the TLS backend for QUIC to trigger.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2025-4947 to this issue.

CWE-295: Improper Certificate Validation

Severity: Medium

AFFECTED VERSIONS
-

- Affected versions: curl 8.8.0 to and including 8.13.0
- Not affected versions: curl < 8.8.0 and >= 8.14.0
- Introduced-in: https://github.com/curl/curl/commit/4c46e277b2a0c0489

Beware that while curl versions before 8.8.0 are not considered vulnerable to
this flaw, certificate verification still did not work correctly then and was
documented to not work.

libcurl is used by many applications, but not always advertised as such!

This bug is **not** considered a *C mistake*. It is not likely to have been
avoided had we not been using C.

This flaw also affects the curl command line tool.

SOLUTION


Starting in curl 8.14.0, this mistake is fixed.

- Fixed-in: https://github.com/curl/curl/commit/a85f1df4803bbd272905c9e7125

RECOMMENDATIONS
--

 A - Upgrade curl to version 8.14.0

 B - Apply the patch to your local version

 C - Avoid using HTTP/3 with curl built to use wolfSSL

TIMELINE


This issue was reported to the curl project on May 17, 2025. We contacted
distros@openwall on May 20, 2025.

curl 8.14.0 was released on May 28 2025 around 07:00 UTC, coordinated with the
publication of this advisory.

The curl security team is not aware of any active exploits using this
vulnerability.

CREDITS
---

- Reported-by: Hiroki Kurosawa
- Patched-by: Stefan Eissing

Thanks a lot!

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[SECURITY ADVISORY] curl: No QUIC certificate pinning with wolfSSL

2025-05-27 Thread Daniel Stenberg via curl-users

No QUIC certificate pinning with wolfSSL


Project curl Security Advisory, May 28 2025 -
[Permalink](https://curl.se/docs/CVE-2025-5025.html)

VULNERABILITY
-

libcurl supports *pinning* of the server certificate public key for HTTPS
transfers. Due to an omission, this check is not performed when connecting
with QUIC for HTTP/3, when the TLS backend is wolfSSL.

Documentation says the option works with wolfSSL, failing to specify that it
does not for QUIC and HTTP/3.

Since pinning makes the transfer succeed if the pin is fine, users could
unwittingly connect to an impostor server without noticing.

INFO


curl can get built to use one out of twelve different TLS libraries. The
selection is done both at build-time and also optionallt at run-time. This
vulnerability only affects curl made to use this specific TLS backend.

This flaw requires wolfSSL to be used as the TLS backend for QUIC to trigger.

The pinning option still works fine with wolfSSL for TCP-based TLS, meaning
for HTTP/1 and HTTP/2.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2025-5025 to this issue.

CWE-295: Improper Certificate Validation

Severity: Medium

AFFECTED VERSIONS
-

- Affected versions: curl 8.5.0 to and including 8.13.0
- Not affected versions: curl < 8.5.0 and >= 8.14.0
- Introduced-in: https://github.com/curl/curl/commit/5f78cf503c786a1d48d1352

Beware that while curl versions before 8.5.0 are not strictly considered
vulnerable to this flaw, certificate pinning for QUIC with wolfSSL did not
work correctly then either but before then HTTP/3 support was labeled
experimental and not presumed to work 100%.

libcurl is used by many applications, but not always advertised as such!

This bug is **not** considered a *C mistake*. It is not likely to have been
avoided had we not been using C.

This flaw also affects the curl command line tool.

SOLUTION


Starting in curl 8.14.0, this mistake is fixed.

- Fixed-in: https://github.com/curl/curl/commit/e1f65937a96a451292e92313396

RECOMMENDATIONS
--

 A - Upgrade curl to version 8.14.0

 B - Apply the patch to your local version

 C - Avoid using HTTP/3 or certificate pinning with curl built to use wolfSSL

TIMELINE


This issue was reported to the curl project on May 19, 2025. We contacted
distros@openwall on May 22, 2025.

curl 8.14.0 was released on May 28 2025 around 07:00 UTC, coordinated with the
publication of this advisory.

The curl security team is not aware of any active exploits using this
vulnerability.

CREDITS
---

- Reported-by: Hiroki Kurosawa
- Patched-by: Stefan Eissing

Thanks a lot!

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 1: curl 8.15.0-rc1

2025-06-21 Thread Daniel Stenberg via curl-users

Hello friends!

There is a fresh rc1 build of the coming curl 8.15.0 release uploaded and made 
available for testing on https://curl.se/rc/.


Please consider taking this for a spin and verify that everything seems to work 
as they should. All the new features for the pending release have been merged 
and should work as documented.


Do not use release candidates in production. They are work in progress. Use 
them for testing and verification only. Use actual releases in production.


This rc1 release is tagged as rc-8_15_0-1.

Thanks for flying curl.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl and libcurl 8.14.1

2025-06-03 Thread Daniel Stenberg via curl-users

Hello!

Another curl release has been packaged, signed and uploaded. Get it as always 
from https://curl.se/


curl and libcurl 8.14.1

 Public curl releases: 268
 Command line options: 269
 curl_easy_setopt() options:   308
 Public functions in libcurl:  96
 Contributors: 3431

This release includes the following bugfixes:

 o asyn-thrdd: fix cleanup when RR fails due to OOM [20]
 o autotools: recognize more Linux targets when setting `-D_GNU_SOURCE` [35]
 o BUG-BOUNTY.md. mention the medium bounty amount in 2025 [5]
 o cmake: fix missed version number for multi-pkg-config detections [14]
 o cmdline-docs: mention HTTP resumed uploads to be shaky [21]
 o curl: make -N handled correctly [34]
 o curl: upload from '.' fix [9]
 o dllmain: exclude from Cygwin builds [32]
 o docs/tests: remove mention of hyper [23]
 o docs: fix typos [12]
 o ftp: fix teardown of DATA connection in done [31]
 o http: fail early when rewind of input failed when following redirects [2]
 o license: update some copyright links to curl.se [24]
 o memanalyze.pl: fix getaddrinfo/freeaddrinfo checks [25]
 o misc: fix spelling [15]
 o misc: we write *an* IPv6 address [10]
 o multi: fix add_handle resizing [3]
 o spelling: 'a' vs 'an' [8]
 o spelling: call it null-terminate consistently [6]
 o test1510: fix expectation [19]
 o tests: await portfile to be complete [1]
 o tests: fix checks for https-mtls proto [30]
 o tests: improve server start reliability [18]
 o tests: move test docs into /docs [16]
 o tests: re-enable 1510, document heimdal memleak [22]
 o tests: test mtls also w/ clientAuth EKU only [28]
 o tests: test mtls with --insecure [29]
 o tls BIOs: handle BIO_CTRL_EOF correctly [33]
 o tool_getparam: make --no-anyauth not be accepted [13]
 o tool_getparam: refactored, simplified [4]
 o tool_getparam: remove two nextarg NULL checks [11]
 o VULN-DISCLOSURE-POLICY.md: the distros list wants <= 7 days embargo [26]
 o wolfssl: fix sending of early data [7]
 o ws: handle blocked sends better [27]
 o ws: tests and fixes [17]

This release includes the following known bugs:

 See https://curl.se/docs/knownbugs.html

For all changes ever done in curl:

 See https://curl.se/changes.html

Planned upcoming removals include:

 o Support for the msh3 HTTP/3 backend
 o Supporting curl builds using VS2008
 o The Secure Transport and BearSSL TLS backends
 o The winbuild build system
 o Windows CE support

 See https://curl.se/dev/deprecate.html

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Calvin Ruocco, Dan Fandrich, Daniel Stenberg, denandz on github,
  Ethan Everett, Jacob Mealey, Jeremy Drake, Jeroen Ooms, John Bampton,
  Kadambini Nema, Michael Kaufmann, Rasmus Melchior Jacobsen, Ray Satiro,
  Samuel Henrique, Stefan Eissing, Viktor Szakats, x-xiang on github,
  Yedaya Katsman, Yuyi Wang, z2_
  (20 contributors)

References to bug reports and discussions on issues:

 [1] = https://curl.se/bug/?i=17492
 [2] = https://curl.se/bug/?i=17472
 [3] = https://curl.se/bug/?i=17473
 [4] = https://curl.se/bug/?i=17448
 [5] = https://curl.se/bug/?i=17470
 [6] = https://curl.se/bug/?i=17489
 [7] = https://curl.se/bug/?i=17481
 [8] = https://curl.se/bug/?i=17487
 [9] = https://curl.se/bug/?i=17513
 [10] = https://curl.se/bug/?i=17484
 [11] = https://curl.se/bug/?i=17483
 [12] = https://curl.se/bug/?i=17480
 [13] = https://curl.se/bug/?i=17508
 [14] = https://curl.se/bug/?i=16980
 [15] = https://curl.se/bug/?i=17478
 [16] = https://curl.se/bug/?i=17463
 [17] = https://curl.se/bug/?i=17136
 [18] = https://curl.se/bug/?i=17516
 [19] = https://curl.se/bug/?i=17515
 [20] = https://curl.se/bug/?i=17507
 [21] = https://curl.se/bug/?i=17521
 [22] = https://curl.se/bug/?i=17462
 [23] = https://curl.se/bug/?i=17500
 [24] = https://curl.se/bug/?i=17502
 [25] = https://curl.se/bug/?i=17503
 [26] = https://curl.se/bug/?i=17497
 [27] = https://curl.se/bug/?i=17496
 [28] = https://curl.se/bug/?i=17493
 [29] = https://curl.se/bug/?i=17493
 [30] = https://curl.se/bug/?i=17493
 [31] = https://curl.se/bug/?i=17482
 [32] = https://curl.se/bug/?i=17262
 [33] = https://curl.se/bug/?i=17471
 [34] = https://curl.se/bug/?i=17527
 [35] = https://curl.se/bug/?i=17512

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[SECURITY AVISORY] curl: CVE-2025-5399: WebSocket endless loop

2025-06-03 Thread Daniel Stenberg via curl-users

WebSocket endless loop
==

Project curl Security Advisory, June 4 2025 -
[Permalink](https://curl.se/docs/CVE-2025-5399.html)

VULNERABILITY
-

Due to a mistake in libcurl's WebSocket code, a malicious server can send a
particularly crafted packet which makes libcurl get trapped in an endless
busy-loop.

There is no other way for the application to escape or exit this loop other
than killing the thread/process.

This might be used to DoS libcurl-using application.

INFO


The problem does not occur if "auto-pong" is disabled with the
`CURLWS_NOAUTOPONG` option.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2025-5399 to this issue.

CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')

Severity: Low

AFFECTED VERSIONS
-

- Affected versions: curl 8.13.0 to and including 8.14.0
- Not affected versions: curl < 8.13.0 and >= 8.14.1
- Introduced-in: https://github.com/curl/curl/commit/3588df9478d7c270

libcurl is used by many applications, but not always advertised as such!

This bug is **not** considered a *C mistake*. It is not likely to have been
avoided had we not been using C.

This flaw does not affect the curl command line tool.

SOLUTION


Starting in curl 8.14.1, this mistake is fixed.

- Fixed-in: https://github.com/curl/curl/commit/d1145df24de8f80e6b16

RECOMMENDATIONS
--

 A - Upgrade curl to version 8.14.1

 B - Apply the patch to your local version

 C - Avoid using WebSocket

TIMELINE


This issue was reported to the curl project on May 30, 2025. We contacted
distros@openwall on June 2, 2025.

curl 8.14.1 was released on June 4 2025 around 07:00 UTC, coordinated with the
publication of this advisory.

The curl security team is not aware of any active exploits using this
vulnerability.

CREDITS
---

- Reported-by: z2_ on hackerone
- Patched-by: z2_ on hackerone

Thanks a lot!

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


The #curl user survey 2025 analysis

2025-07-03 Thread Daniel Stenberg via curl-users

Hi friends,

I managed to chew through all the data, I ran the numbers and I generated the 
output.


Enjoy:

 https://daniel.haxx.se/blog/2025/07/03/curl-user-survey-2025-analysis/

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 2: curl 8.15.0-rc2

2025-06-30 Thread Daniel Stenberg via curl-users

Hello again!

I just uploaded the rc2 build of the coming curl 8.15.0 release uploaded and 
made it available for testing on https://curl.se/rc/.


Please take this one for a spin and verify that everything seems to work as 
they should. All the new features for the pending release have been merged and 
should work as documented.


Do not use release candidates in production. They are work in progress. Use them
for testing and verification only. Use actual releases in production.

This rc2 release is tagged as rc-8_15_0-2.

Thanks for flying curl.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


supporting --longopt=value

2025-07-01 Thread Daniel Stenberg via curl-users

Hello friends,

The curl command line parser is a custom parser that acts slightly different 
than many other command line tools.


One particular difference is how arguments to long options are provided: 
space-separated from the option itself. Like this when setting the user agent:


  curl --user-agent curl-2000 https://example.com/

Many other command line tools instead uses the equals-sign-approach, where the 
argument is instead specified immediately next to the flag like this:


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

I am now proposing a PR for curl that makes it add support for the latter 
syntax in addition to the previous, which then perhaps makes curl a bit more 
aligned with the rest of the world: https://github.com/curl/curl/pull/17789


If we deem this fine, it might be merged for the 8.16.0 release (Sep 2025).

Since this would introduce support for a syntax that is not supported by older 
curl versions, I would expect that not too many users will actually use this 
command line style for the first few years until the new parser is in more 
widespread use.


Thoughts?

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Re: supporting --longopt=value

2025-07-01 Thread Daniel Stenberg via curl-users

On Tue, 1 Jul 2025, Paul Gilmartin via curl-users wrote:


Does this introduce any incompatibility?


I have thought hard on this but I can't think of any.


For  example, would i
 change the behavior of:
 curl --output =x  https://example.com


That's a valid existing command line for which the equals sign is part of the 
argument to --output. The new handling does not change this and it will work 
exactly like before.


The new parser only detects and works if the equals sign is used directly 
"attached" to the right side of a valid option name with no space in between, 
like --output=x. This syntax can be made supported without causing problems 
exactly because it does not work at all with the old (existing) parser


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


curl, new long option '--out-null'

2025-07-04 Thread Daniel Stenberg via curl-users

Hello,

Feel free to join in the name-shedding over on GitHub where this new option 
proposal is being discussed:


 https://github.com/curl/curl/pull/17800

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Release candidate 3: curl 8.15.0-rc3

2025-07-09 Thread Daniel Stenberg via curl-users

Hello,

The third and last release candidate of the coming curl 8.15.0 release is now 
uploaded and available for testing on https://curl.se/rc/.


Please take this one for a spin and verify that everything seems to work as they
should. All the new features for the pending release have been merged and should
work as documented.

Do not use release candidates in production. They are work in progress. Use them
for testing and verification only. Use actual releases in production.

This rc3 release is tagged as rc-8_15_0-3.

Thanks for flying curl.

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


RE: Release candidate 3: curl 8.15.0-rc3

2025-07-09 Thread Daniel Stenberg via curl-users

On Wed, 9 Jul 2025, Dick Brooks wrote:


Congratulations. Any chance we will see an SBOM for curl in the future?


The "normal" curl release does not need an SBOM. It is just one thing and this 
one thing comes only from us: the curl release.


curl releases are done as source code tarballs with no third party code 
included.


There are some additional things we ship, like windows binaries at 
https://curl.se/windows/ and they contain 3rd party components. All the 
details for those are provided there, which should allow users to make an SBOM 
out of it in the preferred format of the day.


--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


Sponsor my laptop

2025-07-12 Thread Daniel Stenberg via curl-users

Hello,

We're running a small crowd-source program to give everyone a chance to help 
sponsor a new laptop for curl development:


 https://daniel.haxx.se/blog/2025/07/12/sponsor-my-laptop/

--

 / daniel.haxx.se || https://rock-solid.curl.dev
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html


[RELEASE] curl 8.15.0

2025-07-15 Thread Daniel Stenberg via curl-users

Hello team,

I'm happy to announce that we have yet again put together a little curl 
release. Get it as always from https://curl.se


Enjoy!

curl and libcurl 8.15.0

 Public curl releases: 269
 Command line options: 269
 curl_easy_setopt() options:   308
 Public functions in libcurl:  96
 Contributors: 3460

This release includes the following changes:

 o TLS: remove support for Secure Transport and BearSSL [19]

This release includes the following bugfixes:

 o altsvc: accept 'clear' without semicolon as well [190]
 o asyn-ares: remove redundant NULL check [152]
 o asyn-thrdd: free the previous name before strdup'ing the new [84]
 o autotools: detect and link `brotlicommon` library for brotli [130]
 o autotools: drop `$top_builddir/src` from src header path [23]
 o autotools: drop headers from src mk-unity rules (fixup) [136]
 o autotools: drop no longer necessary `--srcdir` unity options [66]
 o autotools: drop redundant `Makefile.inc` from `EXTRA_DIST` in src [127]
 o autotools: simplify configuration in tests, examples [47]
 o bufq: change read/write signatures [120]
 o bufq: remove the unused Curl_bufq_unwrite function [143]
 o build: assume `sys/socket.h`, `sys/time.h` on non-Windows (as in 
`curl/curl.h`) [21]
 o build: drop `HAVE_SYS_SOCKET_H` and `HAVE_SYS_TIME_H` macros [69]
 o build: drop explicit curlx from hdr paths, refer headers with `curlx/` 
prefix [150]
 o build: drop unused variables in tests
 o build: fix libcurltool with cmake and tunits, related tidy-ups [138]
 o build: split `.c` and `.h` file lists in tests [128]
 o build: stop checking for `sys/stat.h` [146]
 o build: stubgss tidy-ups (in tests) [137]
 o build: sync build scripts between client/libtest [49]
 o build: tidy up `Makefile.inc` use in lib and src [116]
 o build: tidy up header paths, use srcdir where possible [42]
 o cf-socket: make socket data_pending a nop [175]
 o checksrc-all: rewrite in Perl, remove `checksrc.bat` [217]
 o checksrc: reduce exceptions, apply again to curlx [114]
 o cmake/FindGSS: fix processing C header path options [160]
 o cmake/FindGSS: initialize result variables [159]
 o cmake: `curl_add_clang_tidy_test_target` tidy-ups [185]
 o cmake: build `stubgss` library for libtests to match autotools [34]
 o cmake: check USE_WINDOWS_SSPI when adding secur32 to CURL_LIBS [144]
 o cmake: configure c-ares header directory in project root (was: lib) [106]
 o cmake: document OpenSSL and ngtcp2 crypto lib custom variables [29]
 o cmake: drop never propagated C macros [22]
 o cmake: drop passing redundant `CURL_STATICLIB` in examples and clients [52]
 o cmake: drop redundant macro from test clients [51]
 o cmake: drop reference to future variable
 o cmake: enable soversion by default for OpenHarmony OS [131]
 o cmake: fix `curl_add_clang_tidy_test_target` when no `-D` option [155]
 o cmake: fix generator expression in docs/examples [109]
 o cmake: gather options recursively in `curl_add_clang_tidy_test_target` [156]
 o cmake: make docs depend on support files [80]
 o cmake: move `OUTPUT` argument in the `add_custom_command()` line [50]
 o cmake: omit clang-tidy on internal libs curlu and curltool [64]
 o cmake: replace `cmakelint` with `cmake-lint` from `cmakelang`, fix issues 
[20]
 o cmake: replace the way clang-tidy verifies tests, fix issues found [101]
 o cmake: simplify handling generated `lib1521.c` in libtests [24]
 o cmake: sync `target_link_libraries()` order in tests more [44]
 o cmake: sync tests scripts by using the variable `BUNDLE` [46]
 o cmake: sync tests scripts with each other and autotools (more) [100]
 o cmake: use `target_link_options()` when available [43]
 o config-win32: fix default targets, shorten macro logic [227]
 o configure: order LDAP after the SSL libraries
 o connect: drop unused struct member [209]
 o connection: clarify `transport` [197]
 o connection: eliminate member `remote_addr` [10]
 o curl-config: fix whitespace in usage text [122]
 o curl.h: make CURL_IPRESOLVE_* symbols defined as longs [206]
 o curl.h: make CURLSSLOPT_* symbols defined as longs [3]
 o curl.h: remove the "RESERVED" error codes [2]
 o curl: implement non-blocking STDIN read on Windows [28]
 o curl: improve non-blocking STDIN performance [129]
 o curl: remove the global argument from many functions [218]
 o curl: unify pointer names to global config [219]
 o curl_get_line: make sure lines end with newline [110]
 o curl_memory.h: fix to undefine `accept4` [180]
 o curl_path: make SFTP handle a path like /~ properly. [11]
 o curlinfo: provide the 'digest' feature [168]
 o CURLSHOPT_SHARE.md: mention multi-threading requires callbacks [161]
 o DEPRECATE.md: add VS2005 removal to the list [214]
 o digest: fix build with disabled digest auth [72]
 o DISTROS: update NixOS link
 o docs,tests: fix english grammar "allow to" -> "allow  to" [158]
 o docs/CONTRIBUTE: fix broken link [173]
 o docs/examples: add ftp-delete.c [5]
 o docs: beef up examples/websocket.c [189]
 o docs: