]> granicus.if.org Git - curl/log
curl
7 years agoossfuzz: additional seed corpora
Max Dymond [Tue, 29 Aug 2017 22:03:50 +0000 (23:03 +0100)]
ossfuzz: additional seed corpora

Create simple seed corpora for:
- FTP
- telnet
- dict
- tftp
- imap
- pop3

based off the tests of the same number.

Closes #1842

7 years agoossfuzz: moving towards the ideal integration
Max Dymond [Sun, 27 Aug 2017 14:57:05 +0000 (15:57 +0100)]
ossfuzz: moving towards the ideal integration

- Start with the basic code from the ossfuzz project.
- Rewrite fuzz corpora to be binary files full of Type-Length-Value
  data, and write a glue layer in the fuzzing function to convert
  corpora into CURL options.
- Have supporting functions to generate corpora from existing tests
- Integrate with Makefile.am

7 years agostrcase: corrected comment header for Curl_strcasecompare()
Daniel Stenberg [Thu, 31 Aug 2017 09:37:36 +0000 (11:37 +0200)]
strcase: corrected comment header for Curl_strcasecompare()

7 years agounit1301: fix error message on first test
Daniel Stenberg [Thu, 31 Aug 2017 09:37:13 +0000 (11:37 +0200)]
unit1301: fix error message on first test

7 years agocurl_global_sslset.3: show the struct and enum too
Daniel Stenberg [Thu, 31 Aug 2017 08:12:50 +0000 (10:12 +0200)]
curl_global_sslset.3: show the struct and enum too

... so that users can actually write code based on the man page alone,
not having to read the header file.

7 years agodarwinssl: handle long strings in TLS certs (follow-up)
Jay Satiro [Mon, 28 Aug 2017 03:37:02 +0000 (23:37 -0400)]
darwinssl: handle long strings in TLS certs (follow-up)

- Fix handling certificate subjects that are already UTF-8 encoded.

Follow-up to b3b75d1 from two days ago. Since then a copy would be
skipped if the subject was already UTF-8, possibly resulting in a NULL
deref later on.

Ref: https://github.com/curl/curl/issues/1823
Ref: https://github.com/curl/curl/pull/1831

Closes https://github.com/curl/curl/pull/1836

7 years agocyassl: call it the "WolfSSL" backend
Daniel Stenberg [Wed, 30 Aug 2017 10:48:53 +0000 (12:48 +0200)]
cyassl: call it the "WolfSSL" backend

... instead of cyassl, as this is the current name for it.

Closes #1844

7 years agopolarssl: fix multissl breakage
Daniel Stenberg [Wed, 30 Aug 2017 08:26:37 +0000 (10:26 +0200)]
polarssl: fix multissl breakage

Reported-by: Dan Fandrich
Bug: https://curl.haxx.se/mail/lib-2017-08/0121.html
Closes #1843

7 years agoconfigure: remove the leading comma from the backends list
Daniel Stenberg [Wed, 30 Aug 2017 10:58:37 +0000 (12:58 +0200)]
configure: remove the leading comma from the backends list

... when darwinssl is used.

Reported-by: Viktor Szakats
Bug: https://github.com/curl/curl/commit/b0989cd3abaff4f9a0717b4875022fa79e33b481#commitcomment-23943493

Closes #1845

7 years agoexamples/sslbackend.c: fix failure of 'make checksrc'
Kamil Dudka [Wed, 30 Aug 2017 12:16:35 +0000 (14:16 +0200)]
examples/sslbackend.c: fix failure of 'make checksrc'

./sslbackend.c:58:3: warning: else after closing brace on same line (BRACEELSE)
   } else if(isdigit(*name)) {
   ^
./sslbackend.c:62:3: warning: else after closing brace on same line (BRACEELSE)
   } else
   ^

7 years agomakefile.m32: add multissl support
Viktor Szakats [Wed, 30 Aug 2017 10:44:50 +0000 (10:44 +0000)]
makefile.m32: add multissl support

Closes https://github.com/curl/curl/pull/1840

7 years agocurl.h: CURLSSLBACKEND_WOLFSSL used wrong value
Daniel Stenberg [Wed, 30 Aug 2017 08:04:00 +0000 (10:04 +0200)]
curl.h: CURLSSLBACKEND_WOLFSSL used wrong value

The CURLSSLBACKEND_WOLFSSL is supposed to be an alias for
CURLSSLBACKEND_CYASSL, but used an erronous value. To reduce the risk
for a similar mistake, define the backend aliases to use the enum values
instead.

Reported-by: Gisle Vanem
Bug: https://curl.haxx.se/mail/lib-2017-08/0120.html

7 years agocurl_global_sslset.3: clarify
Daniel Stenberg [Wed, 30 Aug 2017 07:48:14 +0000 (09:48 +0200)]
curl_global_sslset.3: clarify

it is a one time *set*, not necessarily a one time use... it can be
called again if the first call failed or just listed the alternatives.

clarify that the available backends are the ones this build supports

plus add some formatting

Reported-by: Rich Gray
Bug: https://curl.haxx.se/mail/lib-2017-08/0119.html

7 years agocurl/multi.h: remove duplicated closing c++ brace
Daniel Stenberg [Tue, 29 Aug 2017 15:14:36 +0000 (17:14 +0200)]
curl/multi.h: remove duplicated closing c++ brace

Regression since 1328f69d53f2f2e93

Fixes #1841
Reported-by: Andrei Karas
7 years agoRELEASE-NOTES: synced with 8c33c963a
Daniel Stenberg [Tue, 29 Aug 2017 08:51:01 +0000 (10:51 +0200)]
RELEASE-NOTES: synced with 8c33c963a

7 years agoHELP-US.md: spelling
Daniel Stenberg [Tue, 29 Aug 2017 06:31:59 +0000 (08:31 +0200)]
HELP-US.md: spelling

7 years agoHELP-US.md: "How to get started helping out in the curl project"
Daniel Stenberg [Mon, 28 Aug 2017 09:29:39 +0000 (11:29 +0200)]
HELP-US.md: "How to get started helping out in the curl project"

Closes #1837

7 years agoasyn-thread: Fixed cleanup after OOM
Dan Fandrich [Mon, 28 Aug 2017 22:30:30 +0000 (00:30 +0200)]
asyn-thread: Fixed cleanup after OOM

destroy_async_data() assumes that if the flag "done" is not set yet, the
thread itself will clean up once the request is complete.  But if an
error (generally OOM) occurs before the thread even has a chance to
start, it will never get a chance to clean up and memory will be leaked.
By clearing "done" only just before starting the thread, the correct
cleanup sequence will happen in all cases.

7 years agocurl_global_init.3: mention curl_global_sslset(3)
Daniel Stenberg [Mon, 28 Aug 2017 21:58:11 +0000 (23:58 +0200)]
curl_global_init.3: mention curl_global_sslset(3)

7 years agounit1606: Fixed shadowed variable warning
Dan Fandrich [Mon, 28 Aug 2017 21:54:25 +0000 (23:54 +0200)]
unit1606: Fixed shadowed variable warning

7 years agoasyn-thread: Improved cleanup after OOM situations
Dan Fandrich [Mon, 28 Aug 2017 21:43:36 +0000 (23:43 +0200)]
asyn-thread: Improved cleanup after OOM situations

7 years agoasyn-thread: Set errno to the proper value ENOMEM in OOM situation
Dan Fandrich [Mon, 28 Aug 2017 21:41:04 +0000 (23:41 +0200)]
asyn-thread: Set errno to the proper value ENOMEM in OOM situation

This used to be set in some configurations to EAI_MEMORY which is not a
valid value for errno and caused Curl_strerror to fail an assertion.

7 years agoconfigure: Handle "MultiSSL" specially When versioning symbols
Johannes Schindelin [Thu, 24 Aug 2017 20:33:19 +0000 (22:33 +0200)]
configure: Handle "MultiSSL" specially When versioning symbols

There is a mode in which libcurl is compiled with versioned symbols,
depending on the active SSL backend.

When multiple SSL backends are active, it does not make sense to favor
one over the others, so let's not: introduce a new prefix for the case
where multiple SSL backends are compiled into cURL.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoconfigure: allow setting the default SSL backend
Johannes Schindelin [Thu, 24 Aug 2017 20:26:48 +0000 (22:26 +0200)]
configure: allow setting the default SSL backend

Previously, we used as default SSL backend whatever was first in the
`available_backends` array.

However, some users may want to override that default without patching
the source code.

Now they can: with the --with-default-ssl-backend=<backend> option of
the ./configure script.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: use Curl_ssl_multi pseudo backend only when needed
Johannes Schindelin [Fri, 18 Aug 2017 11:15:12 +0000 (13:15 +0200)]
vtls: use Curl_ssl_multi pseudo backend only when needed

When only one SSL backend is configured, it is totally unnecessary to
let multissl_init() configure the backend at runtime, we can select the
correct backend at build time already.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoversion: if built with more than one SSL backend, report all of them
Johannes Schindelin [Fri, 18 Aug 2017 11:01:38 +0000 (13:01 +0200)]
version: if built with more than one SSL backend, report all of them

To discern the active one from the inactive ones, put the latter into
parentheses.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoversion: add the CURL_VERSION_MULTI_SSL feature flag
Johannes Schindelin [Fri, 18 Aug 2017 06:51:24 +0000 (08:51 +0200)]
version: add the CURL_VERSION_MULTI_SSL feature flag

This new feature flag reports When cURL was built with multiple SSL
backends.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agometalink: allow compiling with multiple SSL backends
Johannes Schindelin [Fri, 18 Aug 2017 05:53:33 +0000 (07:53 +0200)]
metalink: allow compiling with multiple SSL backends

Previously, the code assumed that at most one of the SSL backends would
be compiled in, emulating OpenSSL's functions if the configured backend
was not OpenSSL itself.

However, now we allow building with multiple SSL backends and choosing
one at runtime. Therefore, metalink needs to be adjusted to handle this
scenario, too.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agodocs/examples: demonstrate how to select SSL backends
Johannes Schindelin [Sat, 15 Jul 2017 20:30:42 +0000 (22:30 +0200)]
docs/examples: demonstrate how to select SSL backends

The newly-introduced curl_global_sslset() function deserves to be
show-cased.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoAdd a man page for curl_global_sslset()
Johannes Schindelin [Sat, 15 Jul 2017 20:43:31 +0000 (22:43 +0200)]
Add a man page for curl_global_sslset()

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: introduce curl_global_sslset()
Johannes Schindelin [Fri, 7 Jul 2017 09:49:08 +0000 (11:49 +0200)]
vtls: introduce curl_global_sslset()

Let's add a compile time safe API to select an SSL backend. This
function needs to be called *before* curl_global_init(), and can be
called only once.

Side note: we do not explicitly test that it is called before
curl_global_init(), but we do verify that it is not called multiple times
(even implicitly).

If SSL is used before the function was called, it will use whatever the
CURL_SSL_BACKEND environment variable says (or default to the first
available SSL backend), and if a subsequent call to
curl_global_sslset() disagrees with the previous choice, it will fail
with CURLSSLSET_TOO_LATE.

The function also accepts an "avail" parameter to point to a (read-only)
NULL-terminated list of available backends. This comes in real handy if
an application wants to let the user choose between whatever SSL backends
the currently available libcurl has to offer: simply call

curl_global_sslset(-1, NULL, &avail);

which will return CURLSSLSET_UNKNOWN_BACKEND and populate the avail
variable to point to the relevant information to present to the user.

Just like with the HTTP/2 push functions, we have to add the function
declaration of curl_global_sslset() function to the header file
*multi.h* because VMS and OS/400 require a stable order of functions
declared in include/curl/*.h (where the header files are sorted
alphabetically). This looks a bit funny, but it cannot be helped.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: refactor out essential information about the SSL backends
Johannes Schindelin [Sat, 15 Jul 2017 11:49:30 +0000 (13:49 +0200)]
vtls: refactor out essential information about the SSL backends

There is information about the compiled-in SSL backends that is really
no concern of any code other than the SSL backend itself, such as which
function (if any) implements SHA-256 summing.

And there is information that is really interesting to the user, such as
the name, or the curl_sslbackend value.

Let's factor out the latter into a publicly visible struct. This
information will be used in the upcoming API to set the SSL backend
globally.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: allow selecting which SSL backend to use at runtime
Johannes Schindelin [Wed, 14 Jun 2017 14:56:00 +0000 (16:56 +0200)]
vtls: allow selecting which SSL backend to use at runtime

When building software for the masses, it is sometimes not possible to
decide for all users which SSL backend is appropriate.

Git for Windows, for example,  uses cURL to perform clones, fetches and
pushes via HTTPS, and some users strongly prefer OpenSSL, while other
users really need to use Secure Channel because it offers
enterprise-ready tools to manage credentials via Windows' Credential
Store.

The current Git for Windows versions use the ugly work-around of
building libcurl once with OpenSSL support and once with Secure Channel
support, and switching out the binaries in the installer depending on
the user's choice.

Needless to say, this is a super ugly workaround that actually only
works in some cases: Git for Windows also comes in a portable form, and
in a form intended for third-party applications requiring Git
functionality, in which cases this "swap out libcurl-4.dll" simply is
not an option.

Therefore, the Git for Windows project has a vested interest in teaching
cURL to make the SSL backend a *runtime* option.

This patch makes that possible.

By running ./configure with multiple --with-<backend> options, cURL will
be built with multiple backends.

For the moment, the backend can be configured using the environment
variable CURL_SSL_BACKEND (valid values are e.g. "openssl" and
"schannel").

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: fold the backend ID into the Curl_ssl structure
Johannes Schindelin [Fri, 23 Jun 2017 22:25:29 +0000 (00:25 +0200)]
vtls: fold the backend ID into the Curl_ssl structure

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agocurl_ntlm_core: don't complain but #include OpenSSL header if needed
Johannes Schindelin [Fri, 28 Jul 2017 20:30:59 +0000 (22:30 +0200)]
curl_ntlm_core: don't complain but #include OpenSSL header if needed

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: encapsulate SSL backend-specific data
Johannes Schindelin [Fri, 28 Jul 2017 20:09:35 +0000 (22:09 +0200)]
vtls: encapsulate SSL backend-specific data

So far, all of the SSL backends' private data has been declared as
part of the ssl_connect_data struct, in one big #if .. #elif .. #endif
block.

This can only work as long as the SSL backend is a compile-time option,
something we want to change in the next commits.

Therefore, let's encapsulate the exact data needed by each SSL backend
into a private struct, and let's avoid bleeding any SSL backend-specific
information into urldata.h. This is also necessary to allow multiple SSL
backends to be compiled in at the same time, as e.g. OpenSSL's and
CyaSSL's headers cannot be included in the same .c file.

To avoid too many malloc() calls, we simply append the private structs
to the connectdata struct in allocate_conn().

This requires us to take extra care of alignment issues: struct fields
often need to be aligned on certain boundaries e.g. 32-bit values need to
be stored at addresses that divide evenly by 4 (= 32 bit / 8
bit-per-byte).

We do that by assuming that no SSL backend's private data contains any
fields that need to be aligned on boundaries larger than `long long`
(typically 64-bit) would need. Under this assumption, we simply add a
dummy field of type `long long` to the `struct connectdata` struct. This
field will never be accessed but acts as a placeholder for the four
instances of ssl_backend_data instead. the size of each ssl_backend_data
struct is stored in the SSL backend-specific metadata, to allow
allocate_conn() to know how much extra space to allocate, and how to
initialize the ssl[sockindex]->backend and proxy_ssl[sockindex]->backend
pointers.

This would appear to be a little complicated at first, but is really
necessary to encapsulate the private data of each SSL backend correctly.
And we need to encapsulate thusly if we ever want to allow selecting
CyaSSL and OpenSSL at runtime, as their headers cannot be included within
the same .c file (there are just too many conflicting definitions and
declarations for that).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: prepare the SSL backends for encapsulated private data
Johannes Schindelin [Wed, 21 Jun 2017 10:41:18 +0000 (12:41 +0200)]
vtls: prepare the SSL backends for encapsulated private data

At the moment, cURL's SSL backend needs to be configured at build time.
As such, it is totally okay for them to hard-code their backend-specific
data in the ssl_connect_data struct.

In preparation for making the SSL backend a runtime option, let's make
the access of said private data a bit more abstract so that it can be
adjusted later in an easy manner.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agourldata.h: move SSPI-specific #include to correct location
Johannes Schindelin [Sun, 30 Jul 2017 21:19:19 +0000 (23:19 +0200)]
urldata.h: move SSPI-specific #include to correct location

In 86b889485 (sasl_gssapi: Added GSS-API based Kerberos V5 variables,
2014-12-03), an SSPI-specific field was added to the kerberos5data
struct without moving the #include "curl_sspi.h" later in the same file.

This broke the build when SSPI was enabled, unless Secure Channel was
used as SSL backend, because it just so happens that Secure Channel also
requires "curl_sspi.h" to be #included.

In f4739f639 (urldata: include curl_sspi.h when Windows SSPI is enabled,
2017-02-21), this bug was fixed incorrectly: Instead of moving the
appropriate conditional #include, the Secure Channel-conditional part
was now also SSPI-conditional.

Fix this problem by moving the correct #include instead.

This is also required for an upcoming patch that moves all the Secure
Channel-specific stuff out of urldata.h and encapsulates it properly in
vtls/schannel.c instead.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agourldata.h: remove support for obsolete PolarSSL version
Johannes Schindelin [Fri, 28 Jul 2017 20:49:13 +0000 (22:49 +0200)]
urldata.h: remove support for obsolete PolarSSL version

Since 5017d5ada (polarssl: now require 1.3.0+, 2014-03-17), we require
a newer PolarSSL version. No need to keep code trying to support any
older version.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agogetinfo: access SSL internals via Curl_ssl
Johannes Schindelin [Fri, 23 Jun 2017 14:05:26 +0000 (16:05 +0200)]
getinfo: access SSL internals via Curl_ssl

In the ongoing endeavor to abstract out all SSL backend-specific
functionality, this is the next step: Instead of hard-coding how the
different SSL backends access their internal data in getinfo.c, let's
implement backend-specific functions to do that task.

This will also allow for switching SSL backends as a runtime option.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: move SSL backends' private constants out of their header files
Johannes Schindelin [Mon, 26 Jun 2017 15:05:49 +0000 (17:05 +0200)]
vtls: move SSL backends' private constants out of their header files

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoaxtls: use Curl_none_* versions of init() and cleanup()
Johannes Schindelin [Tue, 20 Jun 2017 09:32:53 +0000 (11:32 +0200)]
axtls: use Curl_none_* versions of init() and cleanup()

There are convenient no-op versions of the init/cleanup functions now,
no need to define private ones for axTLS.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: remove obsolete declarations of SSL backend functionality
Johannes Schindelin [Fri, 23 Jun 2017 11:19:00 +0000 (13:19 +0200)]
vtls: remove obsolete declarations of SSL backend functionality

These functions are all available via the Curl_ssl struct now, no need
to declare them separately anymore.

As the global declarations are removed, the corresponding function
definitions are marked as file-local. The only two exceptions here are
Curl_mbedtls_shutdown() and Curl_polarssl_shutdown(): only the
declarations were removed, there are no function definitions to mark
file-local.

Please note that Curl_nss_force_init() is *still* declared globally, as
the only SSL backend-specific function, because it was introduced
specifically for the use case where cURL was compiled with
`--without-ssl --with-nss`. For details, see f3b77e561 (http_ntlm: add
support for NSS, 2010-06-27).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoschannel: reorder functions topologically
Johannes Schindelin [Sun, 25 Jun 2017 10:44:26 +0000 (12:44 +0200)]
schannel: reorder functions topologically

The _shutdown() function calls the _session_free() function; While this
is not a problem now (because schannel.h declares both functions), a
patch looming in the immediate future with make all of these functions
file-local.

So let's just move the _session_free() function's definition before it
is called.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoaxtls: reorder functions topologically
Johannes Schindelin [Sun, 25 Jun 2017 10:44:26 +0000 (12:44 +0200)]
axtls: reorder functions topologically

The connect_finish() function (like many other functions after it) calls
the Curl_axtls_close() function; While this is not a problem now
(because axtls.h declares the latter function), a patch looming in the
immediate future with make all of these functions file-local.

So let's just move the Curl_axtls_close() function's definition before
it is called.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: move the SUPPORT_HTTPS_PROXY flag into the Curl_ssl struct
Johannes Schindelin [Mon, 26 Jun 2017 16:05:38 +0000 (18:05 +0200)]
vtls: move the SUPPORT_HTTPS_PROXY flag into the Curl_ssl struct

That will allow us to choose the SSL backend at runtime.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: convert the have_curlssl_* constants to runtime flags
Johannes Schindelin [Tue, 20 Jun 2017 09:32:53 +0000 (11:32 +0200)]
vtls: convert the have_curlssl_* constants to runtime flags

The entire idea of introducing the Curl_ssl struct to describe SSL
backends is to prepare for choosing the SSL backend at runtime.

To that end, convert all the #ifdef have_curlssl_* style conditionals
to use bit flags instead.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: move sha256sum into the Curl_ssl struct
Johannes Schindelin [Thu, 22 Jun 2017 23:04:56 +0000 (01:04 +0200)]
vtls: move sha256sum into the Curl_ssl struct

The SHA-256 checksumming is also an SSL backend-specific function.
Let's include it in the struct declaring the functionality of SSL
backends.

In contrast to MD5, there is no fall-back code. To indicate this, the
respective entries are NULL for those backends that offer no support for
SHA-256 checksumming.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: move md5sum into the Curl_ssl struct
Johannes Schindelin [Thu, 22 Jun 2017 23:04:56 +0000 (01:04 +0200)]
vtls: move md5sum into the Curl_ssl struct

The MD5 summing is also an SSL backend-specific function. So let's
include it, offering the previous fall-back code as a separate function
now: Curl_none_md5sum(). To allow for that, the signature had to be
changed so that an error could be returned from the implementation
(Curl_none_md5sum() can run out of memory).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: use the Curl_ssl struct to access all SSL backends' functionality
Johannes Schindelin [Thu, 22 Jun 2017 22:22:47 +0000 (00:22 +0200)]
vtls: use the Curl_ssl struct to access all SSL backends' functionality

This is the first step to unify the SSL backend handling. Now all the
SSL backend-specific functionality is accessed via a global instance of
the Curl_ssl struct.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: declare Curl_ssl structs for every SSL backend
Johannes Schindelin [Thu, 22 Jun 2017 14:45:34 +0000 (16:45 +0200)]
vtls: declare Curl_ssl structs for every SSL backend

The idea of introducing the Curl_ssl struct was to unify how the SSL
backends are declared and called. To this end, we now provide an
instance of the Curl_ssl struct for each and every SSL backend.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: introduce a new struct for SSL backends
Johannes Schindelin [Thu, 22 Jun 2017 14:36:03 +0000 (16:36 +0200)]
vtls: introduce a new struct for SSL backends

This new struct is similar in nature to Curl_handler: it will define the
functions and capabilities of all the SSL backends (where Curl_handler
defines the functions and capabilities of protocol handlers).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: make sure every _sha256sum()'s first arg is const
Johannes Schindelin [Sun, 25 Jun 2017 11:06:54 +0000 (13:06 +0200)]
vtls: make sure every _sha256sum()'s first arg is const

This patch makes the signature of the _sha256sum() functions consistent
among the SSL backends, in preparation for unifying the way all SSL
backends are accessed.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: make sure all _data_pending() functions return bool
Johannes Schindelin [Sun, 25 Jun 2017 11:06:54 +0000 (13:06 +0200)]
vtls: make sure all _data_pending() functions return bool

This patch makes the signature of the _data_pending() functions
consistent among the SSL backends, in preparation for unifying the way
all SSL backends are accessed.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: make sure all _cleanup() functions return void
Johannes Schindelin [Sun, 25 Jun 2017 11:06:54 +0000 (13:06 +0200)]
vtls: make sure all _cleanup() functions return void

This patch makes the signature of the _cleanup() functions consistent
among the SSL backends, in preparation for unifying the way all SSL
backends are accessed.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agovtls: use consistent signature for _random() implementations
Johannes Schindelin [Thu, 22 Jun 2017 21:48:03 +0000 (23:48 +0200)]
vtls: use consistent signature for _random() implementations

This will make the upcoming multissl backend much easier to implement.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agostrtooff: fix build for systems with long long but no strtoll option
Daniel Stenberg [Fri, 25 Aug 2017 09:09:46 +0000 (11:09 +0200)]
strtooff: fix build for systems with long long but no strtoll option

Closes #1829

Reported-by: Dan Fandrich
Bug: https://github.com/curl/curl/pull/1758#issuecomment-324861615

7 years agodarwinssl: handle long strings in TLS certs
Daniel Stenberg [Fri, 25 Aug 2017 14:56:03 +0000 (16:56 +0200)]
darwinssl: handle long strings in TLS certs

... as the previous fixed length 128 bytes buffer was sometimes too
small.

Fixes #1823
Closes #1831

Reported-by: Benjamin Sergeant
Assisted-by: Bill Pyne, Ray Satiro, Nick Zitzmann
7 years agosystem.h: include sys/poll.h for AIX
Daniel Stenberg [Fri, 25 Aug 2017 21:42:38 +0000 (23:42 +0200)]
system.h: include sys/poll.h for AIX

... to get the event/revent defines that might be used for the poll
struct.

Reported-by: Michael Smith
Fixes #1828
Closes #1833

7 years agotests: Make sure libtests & unittests call curl_global_cleanup()
Dan Fandrich [Sat, 26 Aug 2017 20:01:42 +0000 (22:01 +0200)]
tests: Make sure libtests & unittests call curl_global_cleanup()

These were missed in commit c468c27b.

7 years agowinbuild: fix embedded manifest option
theantigod [Sat, 26 Aug 2017 06:25:23 +0000 (02:25 -0400)]
winbuild: fix embedded manifest option

Embedded manifest option didn't work due to incorrect path.

Fixes https://github.com/curl/curl/issues/1832

7 years agofuzz/Makefile.am: remove curlbuild.h leftovers
Daniel Stenberg [Fri, 25 Aug 2017 09:01:07 +0000 (11:01 +0200)]
fuzz/Makefile.am: remove curlbuild.h leftovers

7 years agoexamples/threaded-ssl: mention that this is for openssl before 1.1
Daniel Stenberg [Fri, 25 Aug 2017 06:15:59 +0000 (08:15 +0200)]
examples/threaded-ssl: mention that this is for openssl before 1.1

7 years agoimap: use defined names for response codes
Daniel Stenberg [Thu, 24 Aug 2017 11:39:07 +0000 (13:39 +0200)]
imap: use defined names for response codes

When working on this code I found the previous setup a bit weird while
using proper defines increases readability.

Closes #1824

7 years agoCURLOPT_USERPWD.3: see also CURLOPT_PROXYUSERPWD
Daniel Stenberg [Thu, 24 Aug 2017 08:09:28 +0000 (10:09 +0200)]
CURLOPT_USERPWD.3: see also CURLOPT_PROXYUSERPWD

7 years agoimap: support PREAUTH
Daniel Stenberg [Tue, 22 Aug 2017 22:08:18 +0000 (00:08 +0200)]
imap: support PREAUTH

It is a defined possible greeting at server startup that means the
connection is already authenticated. See
https://tools.ietf.org/html/rfc3501#section-7.1.4

Test 846 added to verify.

Fixes #1818
Closes #1820

7 years agoconfig-tpf: define SIZEOF_LONG
Jay Satiro [Wed, 23 Aug 2017 07:17:10 +0000 (03:17 -0400)]
config-tpf: define SIZEOF_LONG

Recent changes that replaced CURL_SIZEOF_LONG in the source with
SIZEOF_LONG broke builds that use the premade configuration files and
don't have SIZEOF_LONG defined.

Bug: https://github.com/curl/curl/issues/1816

7 years agotest1453: Fixed <features>
Dan Fandrich [Wed, 23 Aug 2017 07:03:13 +0000 (09:03 +0200)]
test1453: Fixed <features>

7 years agoconfig-dos: add missing defines, SIZEOF_* and two others
Gisle Vanem [Tue, 22 Aug 2017 21:34:47 +0000 (23:34 +0200)]
config-dos: add missing defines, SIZEOF_* and two others

Bug: #1816

7 years agocurl: shorten and clean up CA cert verification error message
Daniel Stenberg [Tue, 22 Aug 2017 07:07:11 +0000 (09:07 +0200)]
curl: shorten and clean up CA cert verification error message

The previous message was just too long for ordinary people and it was
encouraging users to use `--insecure` a little too easy.

Based-on-work-by: Frank Denis
Closes #1810
Closes #1817

7 years agorequest-target.d: mention added in 7.55.0
Daniel Stenberg [Tue, 22 Aug 2017 12:48:33 +0000 (14:48 +0200)]
request-target.d: mention added in 7.55.0

7 years agotool_main: turn off MinGW CRT's globbing
Marcel Raad [Mon, 21 Aug 2017 19:35:46 +0000 (21:35 +0200)]
tool_main: turn off MinGW CRT's globbing

By default, the MinGW CRT globs command-line arguments. This prevents
getting a single asterisk into an argument as test 1299 does. Turn off
globbing by setting the global variable _CRT_glob to 0 for MinGW.

Fixes https://github.com/curl/curl/issues/1751
Closes https://github.com/curl/curl/pull/1813

7 years agomakefile.m32: add support for libidn2
Viktor Szakats [Tue, 22 Aug 2017 07:13:20 +0000 (07:13 +0000)]
makefile.m32: add support for libidn2

libidn was replaced with libidn2 last year in configure.
Caveat: libidn2 may depend on a list of further libs.
These can be manually specified via CURL_LDFLAG_EXTRAS.

Closes https://github.com/curl/curl/pull/1815

7 years agoconfig-win32: define SIZEOF_LONG
Viktor Szakats [Mon, 21 Aug 2017 22:14:33 +0000 (22:14 +0000)]
config-win32: define SIZEOF_LONG

Recent changes that replaced CURL_SIZEOF_LONG in the source with
SIZEOF_LONG broke builds that use the premade configuration files and
don't have SIZEOF_LONG defined.

Closes https://github.com/curl/curl/pull/1814

7 years agocmake: enable picky compiler options with clang and gcc
Daniel Stenberg [Thu, 17 Aug 2017 13:55:38 +0000 (15:55 +0200)]
cmake: enable picky compiler options with clang and gcc

closes #1799

7 years agocurl/system.h: fix build for hppa
Daniel Stenberg [Sun, 20 Aug 2017 19:11:48 +0000 (21:11 +0200)]
curl/system.h: fix build for hppa

Reported-by: John David Anglin
Bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872502#10

7 years agotftp: fix memory leak on too long filename
Even Rouault [Sat, 19 Aug 2017 14:33:32 +0000 (16:33 +0200)]
tftp: fix memory leak on too long filename

Fixes

$ valgrind --leak-check=full ~/install-curl-git/bin/curl tftp://localhost/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz

==9752== Memcheck, a memory error detector
==9752== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==9752== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==9752== Command: /home/even/install-curl-git/bin/curl tftp://localhost/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz
==9752==
curl: (71) TFTP file name too long

==9752==
==9752== HEAP SUMMARY:
==9752== 505 bytes in 1 blocks are definitely lost in loss record 11 of 11
==9752==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==9752==    by 0x4E61CED: Curl_urldecode (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
==9752==    by 0x4E75868: tftp_state_machine (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
==9752==    by 0x4E761B6: tftp_do (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
==9752==    by 0x4E711B6: multi_runsingle (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
==9752==    by 0x4E71D00: curl_multi_perform (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
==9752==    by 0x4E6950D: curl_easy_perform (in /home/even/install-curl-git/lib/libcurl.so.4.4.0)
==9752==    by 0x40E0B7: operate_do (in /home/even/install-curl-git/bin/curl)
==9752==    by 0x40E849: operate (in /home/even/install-curl-git/bin/curl)
==9752==    by 0x402693: main (in /home/even/install-curl-git/bin/curl)

Fixes https://oss-fuzz.com/v2/testcase-detail/5232311106797568
Credit to OSS Fuzz

Closes #1808

7 years agoruntests: fixed case insensitive matching of keywords
Dan Fandrich [Sat, 19 Aug 2017 20:07:15 +0000 (22:07 +0200)]
runtests: fixed case insensitive matching of keywords

Commit 5c2aac71 didn't work in the case of mixed-case keywords given on
the command-line.

7 years agotests: Make sure libtests call curl_global_cleanup()
Dan Fandrich [Sat, 19 Aug 2017 19:27:38 +0000 (21:27 +0200)]
tests: Make sure libtests call curl_global_cleanup()

This ensures that global data allocations are freed so Valgrind stays
happy. This was a problem with at least PolarSSL and mbedTLS.

7 years agoRELEASE-NOTES: synced with 8baead425
Daniel Stenberg [Fri, 18 Aug 2017 21:30:40 +0000 (23:30 +0200)]
RELEASE-NOTES: synced with 8baead425

7 years agoscripts/contri*sh: use "git log --use-mailmap"
Daniel Stenberg [Fri, 18 Aug 2017 20:41:48 +0000 (22:41 +0200)]
scripts/contri*sh: use "git log --use-mailmap"

7 years agomailmap: de-duplify some git authors
Daniel Stenberg [Fri, 18 Aug 2017 15:49:20 +0000 (17:49 +0200)]
mailmap: de-duplify some git authors

7 years agohttp2_recv: return error better on fatal h2 errors
Daniel Stenberg [Fri, 18 Aug 2017 14:29:55 +0000 (16:29 +0200)]
http2_recv: return error better on fatal h2 errors

Ref #1012
Figured-out-by: Tatsuhiro Tsujikawa
7 years agoKNOWN_BUGS: HTTP test server 'connection-monitor' problems
Daniel Stenberg [Fri, 18 Aug 2017 14:04:55 +0000 (16:04 +0200)]
KNOWN_BUGS: HTTP test server 'connection-monitor' problems

Closes #868

7 years agocurl/system.h: check for __ppc__ as well
Daniel Stenberg [Thu, 17 Aug 2017 12:39:39 +0000 (14:39 +0200)]
curl/system.h: check for __ppc__ as well

... regression since issue #1774 (commit 10b3df10596a) since obviously
some older gcc doesn't know __powerpc__ while some newer doesn't know
__ppc__ ...

Fixes #1797
Closes #1798
Reported-by: Ryan Schmidt
7 years agohttp: Don't wait on CONNECT when there is no proxy
Jan Alexander Steffens (heftig) [Fri, 18 Aug 2017 08:43:02 +0000 (10:43 +0200)]
http: Don't wait on CONNECT when there is no proxy

Since curl 7.55.0, NetworkManager almost always failed its connectivity
check by timeout. I bisected this to 5113ad04 (http-proxy: do the HTTP
CONNECT process entirely non-blocking).

This patch replaces !Curl_connect_complete with Curl_connect_ongoing,
which returns false if the CONNECT state was left uninitialized and lets
the connection continue.

Closes #1803
Fixes #1804

Also-fixed-by: Gergely Nagy
7 years agometalink: adjust source code style
Johannes Schindelin [Fri, 18 Aug 2017 05:58:16 +0000 (07:58 +0200)]
metalink: adjust source code style

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7 years agoCURL_SIZEOF_LONG: removed, use only SIZEOF_LONG
Daniel Stenberg [Wed, 16 Aug 2017 08:25:49 +0000 (10:25 +0200)]
CURL_SIZEOF_LONG: removed, use only SIZEOF_LONG

7 years agolib557: no longer use CURL_SIZEOF_* defines
Daniel Stenberg [Sat, 12 Aug 2017 13:54:06 +0000 (15:54 +0200)]
lib557: no longer use CURL_SIZEOF_* defines

7 years agoconfig-win32: define SIZEOF_CURL_OFF_T
Daniel Stenberg [Sat, 12 Aug 2017 13:54:06 +0000 (15:54 +0200)]
config-win32: define SIZEOF_CURL_OFF_T

7 years agocmake: sizeof curl_off_t, remove unused detections
Daniel Stenberg [Sat, 12 Aug 2017 13:54:06 +0000 (15:54 +0200)]
cmake: sizeof curl_off_t, remove unused detections

7 years agosystem.h: remove all CURL_SIZEOF_* defines
Daniel Stenberg [Sat, 12 Aug 2017 13:54:06 +0000 (15:54 +0200)]
system.h: remove all CURL_SIZEOF_* defines

... as they're not used externally and internally we check for the sizes
already in configure etc.

Closes #1767

7 years agoftp: fix CWD when doing multicwd then nocwd on same connection
Daniel Stenberg [Tue, 15 Aug 2017 16:48:04 +0000 (18:48 +0200)]
ftp: fix CWD when doing multicwd then nocwd on same connection

Fixes #1782
Closes #1787
Reported-by: Peter Lamare
7 years agoCURLOPT_SSH_COMPRESSION.3: enable with 1L
Daniel Stenberg [Thu, 17 Aug 2017 07:52:13 +0000 (09:52 +0200)]
CURLOPT_SSH_COMPRESSION.3: enable with 1L

(leaves other values reserved for the future)

7 years agocompressed-ssh.d: "Added: 7.56.0"
Daniel Stenberg [Thu, 17 Aug 2017 07:49:33 +0000 (09:49 +0200)]
compressed-ssh.d: "Added: 7.56.0"

7 years agocurl/system.h: checksrc compliance
Daniel Stenberg [Thu, 17 Aug 2017 07:38:41 +0000 (09:38 +0200)]
curl/system.h: checksrc compliance

7 years agossh: add the ability to enable compression (for SCP/SFTP)
Viktor Szakats [Sat, 5 Aug 2017 09:26:04 +0000 (09:26 +0000)]
ssh: add the ability to enable compression (for SCP/SFTP)

The required low-level logic was already available as part of
`libssh2` (via `LIBSSH2_FLAG_COMPRESS` `libssh2_session_flag()`[1]
option.)

This patch adds the new `libcurl` option `CURLOPT_SSH_COMPRESSION`
(boolean) and the new `curl` command-line option `--compressed-ssh`
to request this `libssh2` feature. To have compression enabled, it
is required that the SSH server supports a (zlib) compatible
compression method and that `libssh2` was built with `zlib` support
enabled.

[1] https://www.libssh2.org/libssh2_session_flag.html

Ref: https://github.com/curl/curl/issues/1732
Closes https://github.com/curl/curl/pull/1735

7 years agoexamples/ftpuploadresume: checksrc compliance
Jay Satiro [Wed, 16 Aug 2017 18:44:50 +0000 (14:44 -0400)]
examples/ftpuploadresume: checksrc compliance

7 years agohttp_proxy: fix build error for CURL_DOES_CONVERSIONS
Maksim Stsepanenka [Wed, 16 Aug 2017 15:33:33 +0000 (18:33 +0300)]
http_proxy: fix build error for CURL_DOES_CONVERSIONS

Closes https://github.com/curl/curl/pull/1793

7 years agoconfigure: check for __builtin_available() availability (#1788)
Nick Zitzmann [Wed, 16 Aug 2017 17:24:39 +0000 (12:24 -0500)]
configure: check for __builtin_available() availability (#1788)

This change does two things:
1. It un-breaks the build in Xcode 9.0. (Xcode 9.0 is currently
   failing trying to compile connectx() in lib/connect.c.)
2. It finally weak-links the connectx() function, and falls back on
   connect() when run on older operating systems.