Go to file
David Benjamin c6722cd6e0 Check SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER before touching wpend_buf.
SSL_write has messy semantics around retries. As a sanity-check, it does
pointer and length checks and requires the original and retry SSL_write
pass the same buffer pointer.

In some cases, buffer addresses may change but still include the
original data as a prefix on the retry. Callers then set
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER to skip the pointer check. But, in
that case, the pointer may have been freed so doing a comparison is
undefined behavior.

Short-circuiting the pointer equality check avoids this problem.

Change-Id: I76cb8f7d45533504cd95287bc53897ca636af51d
Reviewed-on: https://boringssl-review.googlesource.com/11760
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: Steven Valdez <svaldez@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
2016-10-25 20:15:45 +00:00
.github Add a PULL_REQUEST_TEMPLATE. 2016-03-08 15:23:52 +00:00
crypto More macro hygiene improvements. 2016-10-24 20:11:08 +00:00
decrepit Fix up macros. 2016-10-18 18:28:23 +00:00
fuzz Refresh fuzzer corpus. 2016-10-20 21:49:25 +00:00
include/openssl Prune some unused prototypes. 2016-10-24 20:10:47 +00:00
infra/config Commit-Queue config: effectively remove Andorid builders. 2016-07-26 13:14:47 +00:00
ssl Check SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER before touching wpend_buf. 2016-10-25 20:15:45 +00:00
third_party/android-cmake Move android-cmake README to METADATA file. 2016-09-14 17:18:51 +00:00
tool Use scopers in tool/ 2016-10-24 20:05:42 +00:00
util Preventing ppc64le files from being generated for Android. 2016-10-06 18:09:37 +00:00
.clang-format Import `newhope' (post-quantum key exchange). 2016-04-26 22:53:59 +00:00
.gitignore
API-CONVENTIONS.md Update API-CONVENTIONS.md for the new scopers. 2016-09-13 18:49:13 +00:00
BUILDING.md Allow .arch directives with Clang. 2016-08-26 17:45:49 +00:00
CMakeLists.txt Fix the run_tests target in fuzzer mode. 2016-10-14 16:01:47 +00:00
codereview.settings No-op change to trigger the new Bazel bot. 2016-07-07 12:07:04 -07:00
CONTRIBUTING.md Add a CONTRIBUTING.md file. 2016-02-10 21:38:19 +00:00
FUZZING.md Add a fuzzer for the SSL_CTX API. 2016-10-04 23:07:09 +00:00
INCORPORATING.md Remove backslash. 2016-07-07 21:39:44 +00:00
LICENSE Add some bug references to the LICENSE file. 2016-02-22 20:16:48 +00:00
PORTING.md Add a note in PORTING to ask us before adding ifdefs. 2016-08-11 15:48:14 +00:00
README.md Add an API-CONVENTIONS.md document. 2016-08-04 23:27:49 +00:00
STYLE.md Clarify CBS/CBB with respect to high tag number form. 2016-08-26 17:48:48 +00:00

BoringSSL

BoringSSL is a fork of OpenSSL that is designed to meet Google's needs.

Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is. We don't recommend that third parties depend upon it. Doing so is likely to be frustrating because there are no guarantees of API or ABI stability.

Programs ship their own copies of BoringSSL when they use it and we update everything as needed when deciding to make API changes. This allows us to mostly avoid compromises in the name of compatibility. It works for us, but it may not work for you.

BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.

Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the NDK) and a number of other apps/programs.

There are other files in this directory which might be helpful: