bitcoin/src
Adam Langley 1444c2e7d0 Switch memory_cleanse implementation to BoringSSL's to ensure memory clearing even with link-time optimization.
The implementation we currently use from OpenSSL prevents the compiler from optimizing away clensing operations on blocks of memory that are about to be released, but this protection is not extended to link-time optimization. This commit copies the solution cooked up by Google compiler engineers which uses inline assembly directives to instruct the compiler not to optimize out the call under any circumstances. As the code is in-lined, this has the added advantage of removing one more OpenSSL dependency.

Regarding license compatibility, Google's contributions to BoringSSL library, including this code, is made available under the ISC license, which is MIT compatible.

BoringSSL git commit: ad1907fe73334d6c696c8539646c21b11178f20f
2017-09-06 13:46:11 -07:00
..
bench Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
compat Merge #11144: Move local include to before system includes 2017-08-28 17:57:44 +02:00
config
consensus scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
crypto Merge #11143: Fix include path for bitcoin-config.h 2017-09-05 23:15:55 +02:00
leveldb Update LevelDB with latest Bitcoin-specific patches 2017-08-01 12:40:42 -07:00
obj
obj-test
policy Remove redundant explicitly defined copy ctors 2017-08-28 01:29:48 +03:00
primitives Merge #8330: Structure Packing Optimizations in C{,Mutable}Transaction 2017-09-06 20:14:52 +02:00
qt Merge #11117: Prepare for non-Base58 addresses 2017-09-06 22:31:02 +02:00
rpc Merge #11117: Prepare for non-Base58 addresses 2017-09-06 22:31:02 +02:00
script Introduce wrappers around CBitcoinAddress 2017-09-06 13:07:45 -07:00
secp256k1 Fixed multiple typos 2017-06-22 19:18:10 +03:00
support Switch memory_cleanse implementation to BoringSSL's to ensure memory clearing even with link-time optimization. 2017-09-06 13:46:11 -07:00
test Merge #11117: Prepare for non-Base58 addresses 2017-09-06 22:31:02 +02:00
univalue Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
wallet Merge #11117: Prepare for non-Base58 addresses 2017-09-06 22:31:02 +02:00
zmq Merge #10809: optim: mark a few classes final 2017-08-21 18:25:48 +02:00
.clang-format Merge #10193: scripted-diff: Remove #include <boost/foreach.hpp> 2017-07-04 18:05:18 +02:00
addrdb.cpp Deduplicate addrdb.cpp and use CHashWriter/Verifier 2017-06-01 16:42:07 -07:00
addrdb.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
addrman.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
addrman.h scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
amount.h Consensus: Policy: MOVEONLY: Move CFeeRate out of the consensus module 2017-05-03 18:00:13 +02:00
arith_uint256.cpp Fix instantiation and array accesses in class base_uint<BITS> 2017-06-07 17:21:29 +00:00
arith_uint256.h Prefer compile-time checking over run-time checking 2017-08-17 00:42:32 +02:00
base58.cpp Move CBitcoinAddress to base58.cpp 2017-09-06 13:07:45 -07:00
base58.h Move CBitcoinAddress to base58.cpp 2017-09-06 13:07:45 -07:00
bitcoin-cli-res.rc
bitcoin-cli.cpp Add option -stdinrpcpass to allow RPC password to be read from standard input 2017-08-23 12:48:00 -06:00
bitcoin-tx-res.rc
bitcoin-tx.cpp Introduce wrappers around CBitcoinAddress 2017-09-06 13:07:45 -07:00
bitcoind-res.rc
bitcoind.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
blockencodings.cpp Fix typos 2017-07-15 14:28:40 +02:00
blockencodings.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
bloom.cpp scripted-diff: Remove #include <boost/foreach.hpp> 2017-06-22 03:48:52 +02:00
bloom.h param variables made const 2017-02-13 14:39:48 +09:00
chain.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
chain.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
chainparams.cpp Update chain transaction statistics 2017-08-03 16:39:58 -07:00
chainparams.h chainparams: make supported service bits option explicit 2017-06-22 15:21:22 -04:00
chainparamsbase.cpp Merge #10825: net: set regtest JSON-RPC port to 18443 to avoid conflict with testnet 18332 2017-09-06 01:18:35 +02:00
chainparamsbase.h Chainparams: Use a regular factory for creating chainparams 2017-05-03 18:15:47 +02:00
chainparamsseeds.h p2p: Hardcoded seeds update pre-0.15 branch 2017-07-30 14:04:51 +02:00
checkpoints.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
checkpoints.h [MOVEONLY] Move progress estimation out of checkpoints 2017-01-04 13:18:49 -08:00
checkqueue.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
clientversion.cpp Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
clientversion.h Fix build warning from #error text 2017-04-07 14:37:25 -04:00
coins.cpp Use nullptr instead of zero (0) as the null pointer constant 2017-08-16 10:24:18 +02:00
coins.h Merge #10558: Address nits from per-utxo change 2017-06-28 11:44:22 -07:00
compat.h Move CloseSocket out of SetSocketNonBlocking and pass SOCKET by const reference in SetSocket* functions 2017-07-22 09:11:55 +02:00
compressor.cpp Fix subscript[0] in compressor.cpp 2017-07-08 13:33:01 -07:00
compressor.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
core_io.h Pass serialization flags and whether to include hex to TxToUniv 2017-08-17 10:42:51 -07:00
core_memusage.h Avoid dereference-of-casted-pointer 2017-07-07 10:45:31 -07:00
core_read.cpp Fix signed/unsigned comparison warning introduced in c8e29d7ff0. 2017-07-12 14:03:42 -04:00
core_write.cpp Introduce wrappers around CBitcoinAddress 2017-09-06 13:07:45 -07:00
cuckoocache.h Fix header guards using reserved identifiers 2017-08-26 02:56:53 +03:00
dbwrapper.cpp Merge #10701: Remove the virtual specifier for functions with the override specifier 2017-09-04 18:06:44 -07:00
dbwrapper.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
fs.cpp Remove unused Boost includes 2017-06-09 10:25:26 +02:00
fs.h [Trivial] Add BITCOIN_FS_H endif footer in fs.h 2017-05-19 02:01:28 -07:00
hash.cpp Cleanup (safe, it was checked) subscript[0] in MurmurHash3 (and cleanup MurmurHash3 to be more clear). 2017-07-08 13:33:01 -07:00
hash.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
httprpc.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
httprpc.h Remove unnecessary forward class declarations in header files 2017-06-12 20:37:43 +02:00
httpserver.cpp Merge #10809: optim: mark a few classes final 2017-08-21 18:25:48 +02:00
httpserver.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
indirectmap.h prepend license statement to indirectmap 2016-07-27 16:27:07 -07:00
init.cpp Merge #10357: Allow setting nMinimumChainWork on command line 2017-09-06 19:00:57 +02:00
init.h init: Factor out AppInitLockDataDirectory 2017-07-17 14:56:52 +02:00
key.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
key.h Add length check for CExtKey deserialization 2017-08-17 21:54:23 +02:00
keystore.cpp Remove unused Boost includes 2017-06-09 10:25:26 +02:00
keystore.h Remove the virtual specifier for functions with the override specifier 2017-08-09 10:44:59 +02:00
limitedmap.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
Makefile.am Merge #11143: Fix include path for bitcoin-config.h 2017-09-05 23:15:55 +02:00
Makefile.bench.include leveldb: enable runtime-detected crc32 instructions 2017-06-09 19:25:36 -07:00
Makefile.leveldb.include build: verify that the assembler can handle crc32 functions 2017-07-13 12:49:05 -04:00
Makefile.qt.include leveldb: enable runtime-detected crc32 instructions 2017-06-09 19:25:36 -07:00
Makefile.qttest.include Remove redundant testutil files 2017-09-05 15:02:17 +12:00
Makefile.test.include Remove redundant testutil files 2017-09-05 15:02:17 +12:00
memusage.h scripted-diff: Remove #include <boost/foreach.hpp> 2017-06-22 03:48:52 +02:00
merkleblock.cpp Merge #9980: Fix mem access violation merkleblock 2017-07-17 15:12:39 -07:00
merkleblock.h Add const to methods that do not modify the object for which it is called 2017-07-25 13:46:52 +02:00
miner.cpp Merge #9964: Add const to methods that do not modify the object for which it is called 2017-08-16 02:09:49 +02:00
miner.h Fix boost headers included as user instead of system headers 2017-08-26 21:09:00 +03:00
net.cpp Merge #10596: Add vConnect to CConnman::Options 2017-09-06 02:03:48 +02:00
net.h Merge #10596: Add vConnect to CConnman::Options 2017-09-06 02:03:48 +02:00
net_processing.cpp Allow setting nMinimumChainWork on command line 2017-09-05 15:05:28 -04:00
net_processing.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
netaddress.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
netaddress.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
netbase.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
netbase.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
netmessagemaker.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
noui.cpp Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
noui.h
pow.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
pow.h Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
prevector.h Fix header guards using reserved identifiers 2017-08-26 02:56:53 +03:00
protocol.cpp Merge #9544: [trivial] Add end of namespace comments. Improve consistency. 2017-06-26 13:40:26 +02:00
protocol.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
pubkey.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
pubkey.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
random.cpp Merge #10843: Add attribute [[noreturn]] (C++11) to functions that will not return 2017-08-22 09:38:49 +02:00
random.h Merge #10377: Use rdrand as entropy source on supported platforms 2017-06-14 15:22:15 +02:00
rest.cpp Merge #10845: Remove unreachable code 2017-09-06 21:44:18 +02:00
reverse_iterator.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
reverselock.h Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
scheduler.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
scheduler.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
serialize.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
streams.h Trivial: Documentation fixes for CVectorWriter ctors 2017-08-26 13:20:36 +03:00
sync.cpp Use nullptr instead of zero (0) as the null pointer constant 2017-08-16 10:24:18 +02:00
sync.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
threadinterrupt.cpp net: add CThreadInterrupt and InterruptibleSleep 2017-01-03 17:53:09 -05:00
threadinterrupt.h net: add CThreadInterrupt and InterruptibleSleep 2017-01-03 17:53:09 -05:00
threadsafety.h
timedata.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
timedata.h Merge #8808: Do not shadow variables (gcc set) 2017-03-03 15:48:53 +01:00
tinyformat.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
torcontrol.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
torcontrol.h
txdb.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
txdb.h Merge #10809: optim: mark a few classes final 2017-08-21 18:25:48 +02:00
txmempool.cpp Remove redundant explicitly defined copy ctors 2017-08-28 01:29:48 +03:00
txmempool.h Merge #11164: Fix boost headers included as user instead of system headers 2017-09-05 22:27:17 +02:00
ui_interface.cpp [wallet] Add high transaction fee warnings 2016-09-26 01:11:27 +02:00
ui_interface.h [Qt] allow to execute a callback during splashscreen progress 2017-06-29 17:48:08 +02:00
uint256.cpp uint256: replace sprintf with HexStr and reverse-iterator 2017-02-27 10:02:45 +01:00
uint256.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
undo.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
util.cpp Merge #10901: Fix constness of ArgsManager methods 2017-08-16 16:09:27 +02:00
util.h Merge #10901: Fix constness of ArgsManager methods 2017-08-16 16:09:27 +02:00
utilmoneystr.cpp Refactor: Remove using namespace <xxx> from util* 2017-03-08 08:47:02 -08:00
utilmoneystr.h doc: Add comment to use ValueFromAmount/AmountFromValue for JSON, not utilmoneystr 2017-08-07 17:10:42 +02:00
utilstrencodings.cpp Allow setting nMinimumChainWork on command line 2017-09-05 15:05:28 -04:00
utilstrencodings.h Allow setting nMinimumChainWork on command line 2017-09-05 15:05:28 -04:00
utiltime.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
utiltime.h [logging] log system time and mock time 2017-05-10 15:49:00 -04:00
validation.cpp Allow setting nMinimumChainWork on command line 2017-09-05 15:05:28 -04:00
validation.h Allow setting nMinimumChainWork on command line 2017-09-05 15:05:28 -04:00
validationinterface.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
validationinterface.h Remove declaration of unused function: void UpdatedTransaction(const uint256 &) 2017-07-15 20:04:04 +02:00
version.h Remove unused constant MEMPOOL_GD_VERSION 2017-06-09 01:45:36 +02:00
versionbits.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
versionbits.h scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
warnings.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
warnings.h remove some unused functions 2017-07-22 09:55:57 +02:00