1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00
Go to file
Ivan Avdeev 31c521b047 vtls: fix ssl session cache race condition
Sessionid cache management is inseparable from managing individual
session lifetimes. E.g. for reference-counted sessions (like those in
SChannel and OpenSSL engines) every session addition and removal
should be accompanied with refcount increment and decrement
respectively. Failing to do so synchronously leads to a race condition
that causes symptoms like use-after-free and memory corruption.
This commit:
 - makes existing session cache locking explicit, thus allowing
   individual engines to manage lock's scope.
 - fixes OpenSSL and SChannel engines by putting refcount management
   inside this lock's scope in relevant places.
 - adds these explicit locking calls to other engines that use
   sessionid cache to accommodate for this change. Note, however,
   that it is unknown whether any of these engines could also have
   this race.

Bug: https://github.com/curl/curl/issues/815
Fixes #815
Closes #847
2016-06-01 09:40:55 +02:00
.github CONTRIBUTING.md: fix links 2016-02-18 11:59:17 +01:00
CMake URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
docs schannel: add CURLOPT_CERTINFO support 2016-06-01 08:50:01 +02:00
include http: add CURLINFO_HTTP_VERSION and %{http_version} 2016-05-30 22:58:51 +02:00
lib vtls: fix ssl session cache race condition 2016-06-01 09:40:55 +02:00
m4 configure: ac_cv_ -> curl_cv_ for write-only vars 2016-04-21 23:08:28 +02:00
packages loadlibrary: Only load system DLLs from the system directory 2016-05-30 08:14:27 +02:00
projects checksrc.bat: Added support for the examples 2016-04-03 22:09:07 +01:00
scripts contrithanks.sh: exclude existing names case insensitively 2016-05-23 10:07:48 +02:00
src curl: fix -q [regression] 2016-05-31 14:25:40 +02:00
tests URL parser: allow URLs to use one, two or three slashes 2016-05-30 23:13:55 +02:00
winbuild schannel: add CURLOPT_CERTINFO support 2016-06-01 08:50:01 +02:00
.dir-locals.el Add .dir-locals and set c-basic-offset to 2. 2015-12-23 10:16:14 +01:00
.gitattributes Tell git to not convert configure-related files. 2012-07-17 20:35:23 +02:00
.gitignore build: Install zsh completion 2015-11-24 22:22:01 +01:00
.travis.yml travis.yml: Add OS X testbot. 2015-08-21 12:48:52 +02:00
acinclude.m4 configure: ac_cv_ -> curl_cv_ for write-only vars 2016-04-21 23:08:28 +02:00
appveyor.yml AppVeyor: updated to handle OpenSSL/WinSSL builds 2016-02-01 23:55:08 +01:00
buildconf URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
buildconf.bat dist: ship buildconf.bat too 2016-02-12 16:45:25 +01:00
CHANGES URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
CHANGES.0 URLs: change more http to https 2016-02-04 18:46:54 -05:00
CMakeLists.txt schannel: add CURLOPT_CERTINFO support 2016-06-01 08:50:01 +02:00
configure.ac configure: ac_cv_ -> curl_cv_ for r/w vars 2016-04-21 23:08:28 +02:00
COPYING COPYING: clarify that Daniel is not the sole author 2016-02-06 18:40:27 +01:00
CTestConfig.cmake ENH: move dashboard location 2009-07-15 19:40:46 +00:00
curl-config.in URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
GIT-INFO curl tool: renaming hugehelp files to tool_hugehelp 2012-12-26 23:30:54 +01:00
libcurl.pc.in URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
MacOSX-Framework MacOSX-Framework: sdk regex fix for sdk 10.10 and later 2015-10-25 12:35:49 +01:00
Makefile.am build: include scripts/ in the dist 2016-04-09 23:44:53 +02:00
Makefile.dist URLs: change all http:// URLs to https:// 2016-02-03 00:19:02 +01:00
maketgz maketgz: add -j to make dist 2016-03-22 10:35:22 +01:00
README URLs: follow GitHub project rename (also Travis CI) 2016-02-04 23:01:38 +01:00
README.md README.md: polish 2016-05-30 11:40:20 +02:00
RELEASE-NOTES RELEASE-NOTES: synced with 142ee9fa15 2016-05-31 23:33:48 +02:00

Curl is a command-line tool for transferring data specified with URL syntax. Find out how to use curl by reading the curl.1 man page or the MANUAL document. Find out how to install Curl by reading the INSTALL document.

libcurl is the library curl is using to do its job. It is readily available to be used by your software. Read the libcurl.3 man page to learn how!

You find answers to the most frequent questions we get in the FAQ document.

Study the COPYING file for distribution terms and similar. If you distribute curl binaries or other binaries that involve libcurl, you might enjoy the LICENSE-MIXING document.

Contact

If you have problems, questions, ideas or suggestions, please contact us by posting to a suitable mailing list.

All contributors to the project are listed in the THANKS document.

Website

Visit the curl web site for the latest news and downloads.

Git

To download the very latest source off the Git server do this:

git clone https://github.com/curl/curl.git

(you'll get a directory named curl created, filled with the source code)

Notice

Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms.