Go to file
David Benjamin 4dcc290eb0 Fix GOTPCREL accesses to symbols defined outside the module.
5c38c05b26 caused foo@GOTPCREL for
external foo to resolve to bcm_redirector_foo. This is morally
equivalent to using foo@PLT when a pointer to foo is needed. But this
does not work if foo is data. Notably, this ended up mangling
OPENSSL_ia32cap_P because it failed to recognize it as an symbol in the
library (but external to the module). It also mangles some things that
ASan emits.

(It also breaks non-NULL function pointer comparisons, but those are
silly.)

Instead, apply a variation of the OPENSSL_ia32cap_addr_delta trick that
works for the GOT. "addr_delta" is really weird, so I'm calling this an
"external relocation". This causes fprintf(stderr) to work and also
seems to keep ASan compiling. I was unable to reproduce the case that
5c38c05b26 added the bcm_redirector_foo
transform for.

Also tighten up the pattern. No need to reference a bit of memory twice
since we just loaded it into a register.

Change-Id: If5520fc0887e83e23a08828e40fbbed9e47d912e
Reviewed-on: https://boringssl-review.googlesource.com/16345
Commit-Queue: David Benjamin <davidben@google.com>
Commit-Queue: Adam Langley <agl@google.com>
Reviewed-by: Adam Langley <agl@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
2017-05-15 23:33:15 +00:00
.github Add a PULL_REQUEST_TEMPLATE. 2016-03-08 15:23:52 +00:00
crypto Add AES-GCM-SIV tests for counter wrapping. 2017-05-15 16:08:46 +00:00
decrepit Move des/ to crypto/fipsmodule/ 2017-05-02 19:21:02 +00:00
fipsoracle fipsoracle: Remove fax sample verification baked into test suites. This is covered by run_cavp.go. 2017-05-04 22:10:37 +00:00
fuzz Refresh fuzzer corpus. 2017-05-10 17:06:02 +00:00
include/openssl Add SSL_CIPHER_has_SHA384_HMAC. 2017-05-15 16:36:34 +00:00
infra/config Restore ios64_compile to the CQ. 2017-05-11 16:49:08 +00:00
ssl Add SSL_CIPHER_has_SHA384_HMAC. 2017-05-15 16:36:34 +00:00
third_party Clear the last GTest warning suppression. 2017-02-16 19:03:32 +00:00
tool Make -loop survive errors. 2017-04-17 13:51:18 +00:00
util Fix GOTPCREL accesses to symbols defined outside the module. 2017-05-15 23:33:15 +00:00
.clang-format Import `newhope' (post-quantum key exchange). 2016-04-26 22:53:59 +00:00
.gitignore Add sde-linux64 to .gitignore. 2017-05-12 14:53:07 +00:00
API-CONVENTIONS.md Fix API-CONVENTIONS.md typos. 2017-01-04 01:46:32 +00:00
BUILDING.md Add the start of standalone iOS build support. 2017-04-07 17:13:44 +00:00
CMakeLists.txt Fixing assembly coverage reporting. 2017-05-11 16:55:29 +00:00
codereview.settings No-op change to trigger the new Bazel bot. 2016-07-07 12:07:04 -07:00
CONTRIBUTING.md
FUZZING.md Fix FUZZING.md typo. 2017-03-30 16:54:18 +00:00
INCORPORATING.md Update links to Bazel's site. 2016-10-31 18:16:58 +00:00
LICENSE
PORTING.md Restore SSL_CTX_set_ecdh_auto compatibility hook. 2017-03-14 14:54:45 +00:00
README.md Add an API-CONVENTIONS.md document. 2016-08-04 23:27:49 +00:00
STYLE.md Work around language and compiler bug in memcpy, etc. 2016-12-21 20:34:47 +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: