summaryrefslogtreecommitdiff
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* mbedtls: follow-up VERIFYHOST fix from f097669248Daniel Stenberg2018-12-201-9/+9
| | | | | | | Fix-by: Eric Rosenquist Fixes #3376 Closes #3390
* cookies: extend domain checks to non psl buildsDaniel Gustafsson2018-12-191-5/+8
| | | | | | | | | Ensure to perform the checks we have to enforce a sane domain in the cookie request. The check for non-PSL enabled builds is quite basic but it's better than nothing. Closes #2964 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
* smb: fix incorrect path in request if connection reusedMatus Uzak2018-12-191-6/+3
| | | | | | | | Follow-up to 09e401e01bf9. If connection gets reused, then data member will be copied, but not the proto member. As a result, in smb_do(), path has been set from the original proto.share data. Closes #3388
* mbedtls: use VERIFYHOSTDaniel Stenberg2018-12-171-3/+5
| | | | | | | | Previously, VERIFYPEER would enable/disable all checks. Reported-by: Eric Rosenquist Fixes #3376 Closes #3380
* pingpong: change default response timeout to 120 secondsDaniel Stenberg2018-12-171-1/+1
| | | | Previously it was 30 minutes
* pingpong: ignore regular timeout in disconnect phaseDaniel Stenberg2018-12-176-24/+29
| | | | | | | | | | | The timeout set with CURLOPT_TIMEOUT is no longer used when disconnecting from one of the pingpong protocols (FTP, IMAP, SMTP, POP3). Reported-by: jasal82 on github Fixes #3264 Closes #3374
* http: Implement trailing headers for chunked transfersAyoub Boudhar2018-12-145-21/+224
| | | | | | | | | | | | | This adds the CURLOPT_TRAILERDATA and CURLOPT_TRAILERFUNCTION options that allow a callback based approach to sending trailing headers with chunked transfers. The test server (sws) was updated to take into account the detection of the end of transfer in the case of trailing headers presence. Test 1591 checks that trailing headers can be sent using libcurl. Closes #3350
* darwinssl: accept setting max-tls with default min-tlsDaniel Stenberg2018-12-141-2/+1
| | | | | | Reported-by: Andrei Neculau Fixes #3367 Closes #3373
* gopher: fix memory leak from 9026083ddb2a9Daniel Stenberg2018-12-131-0/+1
|
* gopher: always include the entire gopher-path in requestLeonardo Taccari2018-12-131-2/+15
| | | | | | | | | | | | After the migration to URL API all octets in the selector after the first `?' were interpreted as query and accidentally discarded and not passed to the server. Add a gopherpath to always concatenate possible path and query URL pieces. Fixes #3369 Closes #3370
* urlapi: distinguish possibly empty queryLeonardo Taccari2018-12-131-3/+3
| | | | | | | | | | If just a `?' to indicate the query is passed always store a zero length query instead of having a NULL query. This permits to distinguish URL with trailing `?'. Fixes #3369 Closes #3370
* cookies: leave secure cookies aloneDaniel Gustafsson2018-12-134-12/+56
| | | | | | | | | | | Only allow secure origins to be able to write cookies with the 'secure' flag set. This reduces the risk of non-secure origins to influence the state of secure origins. This implements IETF Internet-Draft draft-ietf-httpbis-cookie-alone-01 which updates RFC6265. Closes #2956 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
* urlapi: Fix port parsing of eol colonDaniel Gustafsson2018-12-121-16/+16
| | | | | | | | | A URL with a single colon without a portnumber should use the default port, discarding the colon. Fix, add a testcase and also do little bit of comment wordsmithing. Closes #3365 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
* Curl_follow: extract the Location: header field unvalidatedDaniel Stenberg2018-12-121-5/+15
| | | | | | | | | | | ... when not actually following the redirect. Otherwise we return error for this and an application can't extract the value. Test 1518 added to verify. Reported-by: Pavel Pavlov Fixes #3340 Closes #3364
* multi: convert two timeout variables to timediff_tDaniel Stenberg2018-12-111-2/+2
| | | | | | | | The time_t type is unsigned on some systems and these variables are used to hold return values from functions that return timediff_t already. timediff_t is always a signed type. Closes #3363
* tests: add urlapi unittestDaniel Gustafsson2018-12-112-2/+13
| | | | | | | | | | This adds a new unittest intended to cover the internal functions in the urlapi code, starting with parse_port(). In order to avoid name collisions in debug builds, parse_port() is renamed Curl_parse_port() since it will be exported. Reviewed-by: Daniel Stenberg <daniel@haxx.se> Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
* urlapi: fix portnumber parsing for ipv6 zone indexDaniel Gustafsson2018-12-111-6/+20
| | | | | | | | | | | | | | An IPv6 URL which contains a zone index includes a '%%25<zode id>' string before the ending ']' bracket. The parsing logic wasn't set up to cope with the zone index however, resulting in a malformed url error being returned. Fix by breaking the parsing into two stages to correctly handle the zone index. Closes #3355 Closes #3319 Reported-by: tonystz on Github Reviewed-by: Daniel Stenberg <daniel@haxx.se> Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
* http: fix HTTP auth to include query in URIJay Satiro2018-12-111-4/+13
| | | | | | | | | | - Include query in the path passed to generate HTTP auth. Recent changes to use the URL API internally (46e1640, 7.62.0) inadvertently broke authentication URIs by omitting the query. Fixes https://github.com/curl/curl/issues/3353 Closes #3356
* http: don't set CURLINFO_CONDITION_UNMET for http status code 204Michael Kaufmann2018-12-111-7/+7
| | | | | | | | The http status code 204 (No Content) should not change the "condition unmet" flag. Only the http status code 304 (Not Modified) should do this. Closes #359
* ldap: fix LDAP URL parsing regressionsSamuel Surtees2018-12-111-5/+10
| | | | | | | | | - Match URL scheme with LDAP and LDAPS - Retrieve attributes, scope and filter from URL query instead Regression brought in 46e164069d1a5230 (7.62.0) Closes #3362
* (lib)curl.rc: fixup for minor bugsStefan Kanthak2018-12-101-6/+6
| | | | | | | | | | | | | | | All resources defined in lib/libcurl.rc and curl.rc are language neutral. winbuild/MakefileBuild.vc ALWAYS defines the macro DEBUGBUILD, so the ifdef's in line 33 of lib/libcurl.rc and src/curl.rc are wrong. Replace the hard-coded constants in both *.rc files with #define'd values. Thumbs-uped-by: Rod Widdowson, Johannes Schindelin URL: https://curl.haxx.se/mail/lib-2018-11/0000.html Closes #3348
* cookies: expire "Max-Age=0" immediatelyDaniel Stenberg2018-12-091-1/+4
| | | | | | Reported-by: Jeroen Ooms Fixes #3351 Closes #3352
* Upon HTTP_1_1_REQUIRED, retry the request with HTTP/1.1Johannes Schindelin2018-12-083-0/+32
| | | | | | | | | | | | | | | | | | | This is a companion patch to cbea2fd2c (NTLM: force the connection to HTTP/1.1, 2018-12-06): with NTLM, we can switch to HTTP/1.1 preemptively. However, with other (Negotiate) authentication it is not clear to this developer whether there is a way to make it work with HTTP/2, so let's try HTTP/2 first and fall back in case we encounter the error HTTP_1_1_REQUIRED. Note: we will still keep the NTLM workaround, as it avoids an extra round trip. Daniel Stenberg helped a lot with this patch, in particular by suggesting to introduce the Curl_h2_http_1_1_error() function. Closes #3349 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* openssl: fix unused variable compiler warning with old opensslBen Greear2018-12-071-0/+1
| | | | | | URL: https://curl.haxx.se/mail/lib-2018-11/0055.html Closes #3347
* NTLM: force the connection to HTTP/1.1Johannes Schindelin2018-12-071-0/+6
| | | | | | | | | | | | | | | | Since v7.62.0, cURL tries to use HTTP/2 whenever the server announces the capability. However, NTLM authentication only works with HTTP/1.1, and will likely remain in that boat (for details, see https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis#when-is-http2-not-supported). When we just found out that we want to use NTLM, and when the current connection runs in HTTP/2 mode, let's force the connection to be closed and to be re-opened using HTTP/1.1. Fixes https://github.com/curl/curl/issues/3341. Closes #3345 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* curl_global_sslset(): id == -1 is not necessarily an errorJohannes Schindelin2018-12-071-1/+8
| | | | | | | | | | It is allowed to call that function with id set to -1, specifying the backend by the name instead. We should imitate what is done further down in that function to allow for that. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Closes #3346
* doh: fix memory leak in OOM situationDaniel Stenberg2018-12-061-3/+4
| | | | | Reviewed-by: Daniel Gustafsson Closes #3342
* doh: make it work for h2-disabled builds tooDaniel Stenberg2018-12-051-26/+2
| | | | | | Reported-by: dtmsecurity at github Fixes #3325 Closes #3336
* openssl: do not use file BIOs if not requestedGergely Nagy2018-12-051-15/+13
| | | | | | | Moves the file handling BIO calls to the branch of the code where they are actually used. Closes #3339
* nss: Fix compatibility with nss versions 3.14 to 3.15Paul Howarth2018-12-051-1/+5
|
* nss: Improve info message when falling back SSL protocolPaul Howarth2018-12-051-2/+34
| | | | Use descriptive text strings rather than decimal numbers.
* nss: Fall back to latest supported SSL versionPaul Howarth2018-12-051-0/+9
| | | | | | | | | | | | | NSS may be built without support for the latest SSL/TLS versions, leading to "SSL version range is not valid" errors when the library code supports a recent version (e.g. TLS v1.3) but it has explicitly been disabled. This change adjusts the maximum SSL version requested by libcurl to be the maximum supported version at runtime, as long as that version is at least as high as the minimum version required by libcurl. Fixes #3261
* checksrc: add COPYRIGHTYEAR checkDaniel Gustafsson2018-12-032-5/+87
| | | | | | | | | | | | | | | | | | | | Forgetting to bump the year in the copyright clause when hacking has been quite common among curl developers, but a traditional checksrc check isn't a good fit as it would penalize anyone hacking on January 1st (among other things). This adds a more selective COPYRIGHTYEAR check which intends to only cover the currently hacked on changeset. The check for updated copyright year is currently not enforced on all files but only on files edited and/or committed locally. This is due to the amount of files which aren't updated with their correct copyright year at the time of their respective commit. To further avoid running this expensive check for every developer, it adds a new local override mode for checksrc where a .checksrc file can be used to turn on extended warnings locally. Closes #3303 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
* connect: fix building for recent versions of MinixSevan Janiyan2018-11-291-1/+1
| | | | | | | | EBADIOCTL doesn't exist on more recent Minix. There have also been substantial changes to the network stack. Fixes build on Minix 3.4rc Closes https://github.com/curl/curl/pull/3323
* doh: fix typo in infof callDaniel Gustafsson2018-11-261-1/+1
| | | | Reviewed-by: Daniel Stenberg <daniel@haxx.se>
* curl_easy_perform: fix timeout handlingDaniel Stenberg2018-11-253-5/+30
| | | | | | | | | | | | | curl_multi_wait() was erroneously used from within curl_easy_perform(). It could lead to it believing there was no socket to wait for and then instead sleep for a while instead of monitoring the socket and then miss acting on that activity as swiftly as it should (causing an up to 1000 ms delay). Reported-by: Antoni Villalonga Fixes #3305 Closes #3306 Closes #3308
* cookies: create the cookiejar even if no cookies to saveDaniel Stenberg2018-11-231-34/+28
| | | | | | | | | | | Important for when the file is going to be read again and thus must not contain old contents! Adds test 327 to verify. Reported-by: daboul on github Fixes #3299 Closes #3300
* checksrc: ban snprintf use, add command line flag to override warnsDaniel Stenberg2018-11-231-0/+27
|
* snprintf: renamed and we now only use msnprintf()Daniel Stenberg2018-11-2351-402/+394
| | | | | | | | | | | The function does not return the same value as snprintf() normally does, so readers may be mislead into thinking the code works differently than it actually does. A different function name makes this easier to detect. Reported-by: Tomas Hoger Assisted-by: Daniel Gustafsson Fixes #3296 Closes #3297
* host names: allow trailing dot in name resolve, then strip itTobias Hintze2018-11-222-28/+55
| | | | | | | Delays stripping of trailing dots to after resolving the hostname. Fixes #3022 Closes #3222
* openssl: support session resume with TLS 1.3Michael Kaufmann2018-11-211-42/+102
| | | | | | | | | | | | | | | | | | | | | | | Session resumption information is not available immediately after a TLS 1.3 handshake. The client must wait until the server has sent a session ticket. Use OpenSSL's "new session" callback to get the session information and put it into curl's session cache. For TLS 1.3 sessions, this callback will be invoked after the server has sent a session ticket. The "new session" callback is invoked only if OpenSSL's session cache is enabled, so enable it and use the "external storage" mode which lets curl manage the contents of the session cache. A pointer to the connection data and the sockindex are now saved as "SSL extra data" to make them available to the callback. This approach also works for old SSL/TLS versions and old OpenSSL versions. Reviewed-by: Daniel Stenberg <daniel@haxx.se> Fixes #3202 Closes #3271
* ssl: fix compilation with OpenSSL 0.9.7Michael Kaufmann2018-11-211-2/+2
| | | | | | | - ENGINE_cleanup() was used without including "openssl/engine.h" - enable engine support for OpenSSL 0.9.7 Closes #3266
* openssl: disable TLS renegotiation with BoringSSLDaniel Stenberg2018-11-211-1/+8
| | | | | | | | | | | | Since we're close to feature freeze, this change disables this feature with an #ifdef. Define ALLOW_RENEG at build-time to enable. This could be converted to a bit for CURLOPT_SSL_OPTIONS to let applications opt-in this. Concern-raised-by: David Benjamin Fixes #3283 Closes #3293
* ares: remove fd from multi fd set when ares is about to close the fdRomain Fliedel2018-11-208-23/+45
| | | | | | | | | | | | | | | | | | | When using c-ares for asyn dns, the dns socket fd was silently closed by c-ares without curl being aware. curl would then 'realize' the fd has been removed at next call of Curl_resolver_getsock, and only then notify the CURLMOPT_SOCKETFUNCTION to remove fd from its poll set with CURL_POLL_REMOVE. At this point the fd is already closed. By using ares socket state callback (ARES_OPT_SOCK_STATE_CB), this patch allows curl to be notified that the fd is not longer needed for neither for write nor read. At this point by calling Curl_multi_closed we are able to notify multi with CURL_POLL_REMOVE before the fd is actually closed by ares. In asyn-ares.c Curl_resolver_duphandle we can't use ares_dup anymore since it does not allow passing a different sock_state_cb_data Closes #3238
* ntlm: Remove redundant ifdef USE_OPENSSLpkubaj2018-11-201-16/+6
| | | | | | | | | | | | | | | | | | | lib/curl_ntlm.c had code that read as follows: #ifdef USE_OPENSSL # ifdef USE_OPENSSL # else # .. # endif #endif Remove the redundant USE_OPENSSL along with #else (it's not possible to reach it anyway). The removed construction is a leftover from when the SSLeay support was removed. Closes #3269 Reviewed-by: Daniel Gustafsson <daniel@yesql.se> Reviewed-by: Daniel Stenberg <daniel@haxx.se>
* ssl: replace all internal uses of CURLE_SSL_CACERTHan Han2018-11-206-17/+17
| | | | Closes #3291
* openssl: Remove SSLEAY leftoversDaniel Gustafsson2018-11-172-3/+1
| | | | | | | | | Commit 709cf76f6bb7dbac deprecated USE_SSLEAY, as curl since long isn't compatible with the SSLeay library. This removes the few leftovers that were omitted in the less frequently used platform targets. Closes #3270 Reviewed-by: Daniel Stenberg <daniel@haxx.se>
* http_negotiate: do not close connection until negotiation is completedElia Tufarolo2018-11-162-1/+8
| | | | | | Fix HTTP POST using CURLAUTH_NEGOTIATE. Closes #3275
* pop3: only do APOP with a valid timestampDaniel Stenberg2018-11-161-2/+10
| | | | | | Brought-by: bobmitchell1956 on github Fixes #3278 Closes #3279
* openssl: do not log excess "TLS app data" lines for TLS 1.3Peter Wu2018-11-161-17/+11
| | | | | | | | | | | | | | | The SSL_CTX_set_msg_callback callback is not just called for the Handshake or Alert protocols, but also for the raw record header (SSL3_RT_HEADER) and the decrypted inner record type (SSL3_RT_INNER_CONTENT_TYPE). Be sure to ignore the latter to avoid excess debug spam when using `curl -v` against a TLSv1.3-enabled server: * TLSv1.3 (IN), TLS app data, [no content] (0): (Following this message, another callback for the decrypted handshake/alert messages will be be present anyway.) Closes https://github.com/curl/curl/pull/3281