Commit Graph

12201 Commits

Author SHA1 Message Date
Daniel Stenberg
cdf37a53b3
quiche: remove two leftover debug infof() outputs 2022-02-25 11:13:49 +01:00
Tatsuhiro Tsujikawa
6e9373b5f4
ngtcp2: Reset dynbuf when it is fully drained
Reported-by: vl409 on github
Fixes #7351
Closes #8504
2022-02-24 16:56:33 +01:00
Stewart Gebbie
8a1fa3b364
hostip: avoid unused parameter error in Curl_resolv_check
When built without DNS-over-HTTP and without asynchronous resolvers,
neither the dns nor the data parameters are used.

That is Curl_resolv_check appears to call
Curl_resolver_is_resolved(data, dns). But,
with CURL_DISABLE_DOH without CURLRES_ASYNCH, the call is actually
elided via a macro definition.

This fix resolves the resultant: "unused parameter 'data'" error.

Closes #8505
2022-02-24 14:17:33 +01:00
Daniel Stenberg
0694037032
http2: move two infof calls to debug-h2-only
and remove a superflous one

Ref: https://github.com/curl/curl/discussions/8498
Closes #8502
2022-02-24 11:00:12 +01:00
Jean-Philippe Menil
145d0803bb
quiche: fix upload for bigger content-length
Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
Closes #8421
2022-02-24 09:34:37 +01:00
MAntoniak
e9e79622d0
vtls: fix socket check conditions
fix condition to check the second socket during associate and
disassociate connection

Closes #8493
2022-02-22 13:39:54 +01:00
Daniel Stenberg
999c2179a1
libssh2: don't typecast socket to int for libssh2_session_handshake
Since libssh2_socket_t uses SOCKET on windows which can be larger than
int.

Closes #8492
2022-02-21 17:17:25 +01:00
Jay Satiro
f7ba0eccf7 openssl: check if sessionid flag is enabled before retrieving session
Ideally, Curl_ssl_getsessionid should not be called unless sessionid
caching is enabled. There is a debug assertion in the function to help
ensure that. Therefore, the pattern in all vtls is basically:

  if(primary.sessionid) {lock(); Curl_ssl_getsessionid(...); unlock();}

There was one instance in openssl.c where sessionid was not checked
beforehand and this change fixes that.

Prior to this change an assertion would occur in openssl debug builds
during connection stage if session caching was disabled.

Reported-by: Jim Beveridge

Fixes https://github.com/curl/curl/issues/8472
Closes https://github.com/curl/curl/pull/8484
2022-02-21 03:23:47 -05:00
Jay Satiro
e0dc9765a7 multi: allow user callbacks to call curl_multi_assign
Several years ago a change was made to block user callbacks from calling
back into the API when not supported (recursive calls). One of the calls
blocked was curl_multi_assign. Recently the blocking was extended to the
multi interface API, however curl_multi_assign may need to be called
from within those user callbacks (eg CURLMOPT_SOCKETFUNCTION).

I can't think of any callback where it would be unsafe to call
curl_multi_assign so I removed the restriction entirely.

Reported-by: Michael Wallner

Ref: https://github.com/curl/curl/commit/b46cfbc
Ref: https://github.com/curl/curl/commit/340bb19

Fixes https://github.com/curl/curl/issues/8480
Closes https://github.com/curl/curl/pull/8483
2022-02-21 03:23:12 -05:00
MAntoniak
ccc2752ce8
ssl: reduce allocated space for ssl backend when FTP is disabled
Add assert() for the backend pointer in many places

Closes #8471
2022-02-21 08:39:55 +01:00
MAntoniak
9fff7feb82
checkprefix: remove strlen calls
Closes #8481
2022-02-21 08:18:59 +01:00
Jan Venekamp
14d9358a0c sectransp: mark a 3DES cipher as weak
- Change TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA strength to weak.

All other 3DES ciphers are already marked as weak.

Closes https://github.com/curl/curl/pull/8479
2022-02-20 16:13:31 -05:00
Jan Venekamp
f36e32b5b8 bearssl: fix EXC_BAD_ACCESS on incomplete CA cert
- Do not create trust anchor object for a CA certificate until after it
  is processed.

Prior to this change the object was created at state BR_PEM_BEGIN_OBJ
(certificate processing begin state). An incomplete certificate (for
example missing a newline at the end) never reaches BR_PEM_END_OBJ
(certificate processing end state) and therefore the trust anchor data
was not set in those objects, which caused EXC_BAD_ACCESS.

Ref: https://github.com/curl/curl/pull/8106

Closes https://github.com/curl/curl/pull/8476
2022-02-20 02:52:56 -05:00
Jan Venekamp
8af1cef29e bearssl: fix connect error on expired cert and no verify
- When peer verification is disabled use the x509_decode engine instead
  of the x509_minimal engine to parse and extract the public key from
  the first cert of the chain.

Prior to this change in such a case no key was extracted and that caused
CURLE_SSL_CONNECT_ERROR. The x509_minimal engine will stop parsing if
any validity check fails but the x509_decode won't.

Ref: https://github.com/curl/curl/pull/8106

Closes https://github.com/curl/curl/pull/8475
2022-02-20 02:47:50 -05:00
Jan Venekamp
b84437194c bearssl: fix session resumption (session id)
Prior to this change br_ssl_client_reset was mistakenly called with
resume_session param set to 0, which disabled session resumption.

Ref: https://github.com/curl/curl/pull/8106

Closes https://github.com/curl/curl/pull/8474
2022-02-20 02:47:06 -05:00
MAntoniak
bbe7042113
openssl: fix build for version < 1.1.0
Closes #8470
2022-02-18 08:08:04 +01:00
Joel Depooter
df957e1003
schannel: move the algIds array out of schannel.h
This array is only used by the SCHANNEL_CRED struct in the
schannel_acquire_credential_handle function. It can therefore be kept as
a local variable. This is a minor update to
bbb71507b7.

This change also updates the NUM_CIPHERS value to accurately count the
number of ciphers options listed in schannel.c, which is 47 instead of
45. It is unlikely that anyone tries to set all 47 values, but if they
had tried, the last two would not have been set.

Closes #8469
2022-02-18 08:03:22 +01:00
Marcel Raad
049f3765c7
des: fix compile break for OpenSSL without DES
When `USE_OPENSSL` was defined but OpenSSL had no DES support and a
different crypto library was used for that, `Curl_des_set_odd_parity`
was called but not defined. This could for example happen on Windows
and macOS when using OpenSSL v3 with deprecated features disabled.

Use the same condition for the function definition as used at the
caller side, but leaving out the OpenSSL part to avoid including
OpenSSL headers.

Closes https://github.com/curl/curl/pull/8459
2022-02-17 11:25:03 +01:00
Daniel Stenberg
2ad44ce70d
ftp: provide error message for control bytes in path
Closes #8460
2022-02-17 08:24:14 +01:00
Daniel Stenberg
8984a42ae4
http: fix "unused parameter ‘conn’" warning
Follow-up from 7d600ad1c3

Spotted on appveyor

Closes #8465
2022-02-17 07:55:17 +01:00
Alejandro R. Sedeño
477a2bf989 sha256: Fix minimum OpenSSL version
- Change the minimum OpenSSL version for using their SHA256
  implementation from 0.9.7 to 0.9.8.

EVP_sha256() does not appear in the OpenSSL source before 0.9.7h, and
does not get built by default until 0.9.8, so trying to use it for all
0.9.7 is wrong, and before 0.9.8 is unreliable.

Closes https://github.com/curl/curl/pull/8464
2022-02-17 00:35:23 -05:00
Daniel Stenberg
7d600ad1c3
urldata: remove conn->bits.user_passwd
The authentication status should be told by the transfer and not the
connection.

Reported-by: John H. Ayad
Fixes #8449
Closes #8451
2022-02-16 10:28:31 +01:00
Kevin Adler
eb13cc2927
gskit: Convert to using Curl_poll
As mentioned in 32766cb, gskit was the last user of Curl_select which is
now gone. Convert to using Curl_poll to allow build to work on IBM i.

Closes #8454
2022-02-16 09:27:39 +01:00
Kevin Adler
657687fb17
gskit: Fix initialization of Curl_ssl_gskit struct
In c30bf22, Curl_ssl_getsock was factored out in to a member of
struct Curl_ssl but the gskit initialization was not updated to reflect
this new member.

Closes #8454
2022-02-16 09:27:36 +01:00
Kevin Adler
9234547c34
gskit: Fix errors from Curl_strerror refactor
2f0bb864c1 replaced sterror with Curl_strerror, but the strerror buffer
shadows the set_buffer "buffer" parameter. To keep consistency with the
other functions that use Curl_strerror, rename the parameter.

In addition, strerror.h is needed for the definition of STRERROR_LEN.

Closes #8454
2022-02-16 09:27:22 +01:00
Marcel Raad
897e8baa54
ntlm: remove unused feature defines
They're not used anymore and always supported.

Closes https://github.com/curl/curl/pull/8453
2022-02-15 14:12:41 +01:00
Jay Satiro
ea67337684 h2h3: fix compiler warning due to function prototype mismatch
- Add missing const qualifier in Curl_pseudo_headers declaration.
2022-02-14 16:45:14 -05:00
Stefan Eissing
70ac27604a
urlapi: handle "redirects" smarter
- avoid one malloc when setting a new url via curl_url_set()
    and CURLUPART_URL.
  - extract common pattern into a new static function.

Closes #8450
2022-02-14 17:56:58 +01:00
Daniel Stenberg
6dd8d7f349
connect: follow-up fix the copyright year 2022-02-13 12:13:45 +01:00
MAntoniak
06eb208126
misc: remove unused data when IPv6 is not supported
Closes #8430
2022-02-13 12:08:50 +01:00
Daniel Stenberg
f670665419
quiche: handle stream reset
A stream reset now causes a CURLE_PARTIAL_FILE error. I'm not convinced
this is the right action nor the right error code.

Reported-by: Lucas Pardue
Fixes #8437
Closes #8440
2022-02-13 11:48:32 +01:00
Daniel Stenberg
c8e8791d2d
mime: use a define instead of the magic number 24
MIME_BOUNDARY_DASHES is now the number of leading dashes in the
generated boundary string.

Closes #8441
2022-02-13 11:46:18 +01:00
Henrik Holst
65c6e37fe3
hostcheck: reduce strlen calls on chained certificates
Closes #8428
2022-02-13 11:42:47 +01:00
Patrick Monnerat
0bd50335fe
mime: some more strlen() call removals.
Closes #8423
2022-02-13 11:40:40 +01:00
Daniel Stenberg
c3331a029c
url: exclude zonefrom_url when no ipv6 is available
Closes #8439
2022-02-11 23:27:47 +01:00
Daniel Stenberg
7e65d91071
if2ip: make Curl_ipv6_scope a blank macro when IPv6-disabled
Closes #8439
2022-02-11 23:27:37 +01:00
Henrik Holst
186340c9cd
mprintf: remove strlen calls on empty strings in dprintf_formatf
Turns out that in dprintf_formatf we did a strlen on empty strings, a
bit strange is how common this actually is, 24 alone when doing a simple
GET from https://curl.se

Closes #8427
2022-02-11 23:07:34 +01:00
Daniel Stenberg
e1667a61ea
wolfssl: return CURLE_AGAIN for the SSL_ERROR_NONE case
Closes #8431
2022-02-11 12:36:52 +01:00
Daniel Stenberg
327ef30530
wolfssl: when SSL_read() returns zero, check the error
Returning zero indicates end of connection, so if there's no data read
but the connection is alive, it needs to return -1 with CURLE_AGAIN.

Closes #8431
2022-02-11 10:48:52 +01:00
Daniel Stenberg
96f85a0fef
quiche: after leaving h3_recving state, poll again
This could otherwise easily leave libcurl "hanging" after the entire
transfer is done but without noticing the end-of-transfer signal.

Assisted-by: Lucas Pardue
Closes #8436
2022-02-11 10:07:24 +01:00
Daniel Stenberg
6883180fa5
quiche: when *recv_body() returns data, drain it before polling again
Assisted-by: Lucas Pardue

Closes #8429
2022-02-11 08:48:30 +01:00
Daniel Stenberg
836d3ccfe4
lib/h2h3: #ifdef on ENABLE_QUIC, not the wrong define
Otherwise the build fails when H3 is enabled but the build doesn't
include nghttp2.

Closes #8424
2022-02-10 15:12:02 +01:00
Daniel Stenberg
d15692ebba
hostcheck: pass in pattern length too, to avoid a strlen call
Removes one strlen() call per SAN name in a cert-check.

Closes #8418
2022-02-10 08:53:34 +01:00
HenrikHolst
9bc3cebc92
misc: remove strlen for Curl_checkheaders + Curl_checkProxyheaders
Closes #8409
2022-02-10 08:51:06 +01:00
Daniel Stenberg
f9d1b25011
mqtt: free 'sendleftovers' in disconnect
Fix a memory-leak

Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43646
Closes #8415
2022-02-09 14:43:32 +01:00
Patrick Monnerat
d9c61a9792
openldap: pass string length arguments to client_write()
This uses the new STRCONST() macro and saves 2 strlen() calls on short
string constants per LDIF output line.

Closes #8404
2022-02-09 13:57:35 +01:00
HenrikHolst
b807219292
misc: reduce strlen() calls with Curl_dyn_add()
Use STRCONST() to switch from Curl_dyn_add() to Curl_dyn_addn() for
string literals.

Closes #8398
2022-02-09 13:52:47 +01:00
Daniel Stenberg
2a1951519e
http2: fix the array copy to nghttp2_nv
Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44517
Follow-up to 9f985a11e7
Closes #8414
2022-02-09 12:18:50 +01:00
Daniel Stenberg
5c55fe6df6
h2h3: pass correct argument types to infof()
Detected by Coverity. CID 1497993

Closes #8401
2022-02-08 10:15:22 +01:00
Daniel Stenberg
93767237c4
lib/Makefile: remove config-tpf.h from the dist
Follow-up from da15443ddd. Missed before because the 'distcheck'
CI job was not working as intended.

Reported-by: Marcel Raad
Bug: https://curl.se/mail/lib-2022-02/0070.html
Closes #8403
2022-02-08 10:03:06 +01:00