2019-10-22 19:19:09 +02:00
|
|
|
# -fsanitize=integer suppressions
|
|
|
|
# ===============================
|
|
|
|
# Unsigned integer overflow occurs when the result of an unsigned integer
|
|
|
|
# computation cannot be represented in its type. Unlike signed integer overflow,
|
|
|
|
# this is not undefined behavior, but it is often unintentional. The list below
|
|
|
|
# contains files in which we expect unsigned integer overflows to occur. The
|
|
|
|
# list is used to suppress -fsanitize=integer warnings when running our CI UBSan
|
|
|
|
# job.
|
2020-11-20 10:55:52 +01:00
|
|
|
unsigned-integer-overflow:*/include/c++/*/bits/basic_string.tcc
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:arith_uint256.h
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:basic_string.h
|
|
|
|
unsigned-integer-overflow:bench/bench.h
|
2022-07-08 10:40:53 +02:00
|
|
|
unsigned-integer-overflow:bitcoin-tx.cpp
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:bloom.cpp
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:chain.cpp
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:chain.h
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:coded_stream.h
|
|
|
|
unsigned-integer-overflow:core_write.cpp
|
Merge #20844: test: Add sanitizer suppressions for AMD EPYC CPUs
fa6c114ae604571435e8c4d25906a8b6d5b9984c test: Add sanitizer suppressions for AMD EPYC CPUs (MarcoFalke)
Pull request description:
Currently the ci system only runs on intel cpus (and some arm devices), but it won't run on CPUs `Using the 'shani(1way,2way)' SHA256 implementation` (excerpt from debug log).
For reference, google cloud CPUs (which is what Cirrus CI uses) print `Using the 'sse4(1way),sse41(4way),avx2(8way)' SHA256 implementation`
The traceback I got:
```
crypto/sha256_shani.cpp:87:18: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'size_t' (aka 'unsigned long')
#0 0x55c0000e95ec in sha256_shani::Transform(unsigned int*, unsigned char const*, unsigned long) /root/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/crypto/sha256_shani.cpp:87:18
#1 0x55bfffb926f8 in (anonymous namespace)::SelfTest() /root/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/crypto/sha256.cpp:517:9
#2 0x55bfffb906ed in SHA256AutoDetect[abi:cxx11]() /root/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/crypto/sha256.cpp:626:5
#3 0x55bfff87ab97 in BasicTestingSetup::BasicTestingSetup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<char const*, std::allocator<char const*> > const&) /root/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/util/setup_common.cpp:104:5
#4 0x55bffe885877 in main /root/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/qt/test/test_main.cpp:52:27
#5 0x7f20c3bf60b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
#6 0x55bffe7a5f6d in _start (/root/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/qt/test/test_bitcoin-qt+0x1d00f6d)
SUMMARY: UndefinedBehaviorSanitizer: unsigned-integer-overflow crypto/sha256_shani.cpp:87:18 in
ACKs for top commit:
laanwj:
Anyhow ACK fa6c114ae604571435e8c4d25906a8b6d5b9984c
Tree-SHA512: 968a1d28eedec58c337b1323862f583cb1bcd78c5f03396940b9ab53ded12f8c6652877909aba05ee5586532137418fd817ff979bd7bef6e07856094f9d7f9b1
2021-01-06 08:35:53 +01:00
|
|
|
unsigned-integer-overflow:crypto/*
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:hash.cpp
|
|
|
|
unsigned-integer-overflow:leveldb/db/log_reader.cc
|
|
|
|
unsigned-integer-overflow:leveldb/util/bloom.cc
|
|
|
|
unsigned-integer-overflow:leveldb/util/crc32c.h
|
|
|
|
unsigned-integer-overflow:leveldb/util/hash.cc
|
|
|
|
unsigned-integer-overflow:policy/fees.cpp
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:prevector.h
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:script/interpreter.cpp
|
|
|
|
unsigned-integer-overflow:stl_bvector.h
|
|
|
|
unsigned-integer-overflow:txmempool.cpp
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:util/strencodings.cpp
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:validation.cpp
|
Merge bitcoin/bitcoin#26153: Reduce wasted pseudorandom bytes in ChaCha20 + various improvements
511aa4f1c7508f15cab8d7e58007900ad6fd3d5d Add unit test for ChaCha20's new caching (Pieter Wuille)
fb243d25f754da8f01793b41e2d225b917f3e5d7 Improve test vectors for ChaCha20 (Pieter Wuille)
93aee8bbdad808b7009279b67470d496cc26b936 Inline ChaCha20 32-byte specific constants (Pieter Wuille)
62ec713961ade7b58e90c905395558a41e8a59f0 Only support 32-byte keys in ChaCha20{,Aligned} (Pieter Wuille)
f21994a02e1cc46d41995581b54222abc655be93 Use ChaCha20Aligned in MuHash3072 code (Pieter Wuille)
5d16f757639e2cc6e81db6e07bc1d5dd74abca6c Use ChaCha20 caching in FastRandomContext (Pieter Wuille)
38eaece67b1bc37b2f502348c5d7537480a34346 Add fuzz test for testing that ChaCha20 works as a stream (Pieter Wuille)
5f05b27841af0bed1b6e7de5f46ffe33e5919e4d Add xoroshiro128++ PRNG (Martin Leitner-Ankerl)
12ff72476ac0dbf8add736ad3fb5fad2eeab156c Make unrestricted ChaCha20 cipher not waste keystream bytes (Pieter Wuille)
6babf402130a8f3ef3058594750aeaa50b8f5044 Rename ChaCha20::Seek -> Seek64 to clarify multiple of 64 (Pieter Wuille)
e37bcaa0a6dbb334ab6e817efcb609ccee6edc39 Split ChaCha20 into aligned/unaligned variants (Pieter Wuille)
Pull request description:
This is an alternative to #25354 (by my benchmarking, somewhat faster), subsumes #25712, and adds additional test vectors.
It separates the multiple-of-64-bytes-only "core" logic (which becomes simpler) from a layer around which performs caching/slicing to support arbitrary byte amounts. Both have their uses (in particular, the MuHash3072 code can benefit from multiple-of-64-bytes assumptions), plus the separation results in more readable code. Also, since FastRandomContext effectively had its own (more naive) caching on top of ChaCha20, that can be dropped in favor of ChaCha20's new built-in caching.
I thought about rebasing #25712 on top of this, but the changes before are fairly extensive, so redid it instead.
ACKs for top commit:
ajtowns:
ut reACK 511aa4f1c7508f15cab8d7e58007900ad6fd3d5d
dhruv:
tACK crACK 511aa4f1c7
Tree-SHA512: 3aa80971322a93e780c75a8d35bd39da3a9ea570fbae4491eaf0c45242f5f670a24a592c50ad870d5fd09b9f88ec06e274e8aa3cefd9561d623c63f7198cf2c7
2023-02-15 15:51:38 +01:00
|
|
|
unsigned-integer-overflow:xoroshiro128plusplus.h
|
2021-01-01 15:02:49 +01:00
|
|
|
# std::variant warning fixed in https://github.com/gcc-mirror/gcc/commit/074436cf8cdd2a9ce75cadd36deb8301f00e55b9
|
|
|
|
implicit-unsigned-integer-truncation:std::__detail::__variant::_Variant_storage
|
2022-03-17 14:53:37 +01:00
|
|
|
vptr:bls/bls.h
|
2019-12-04 19:22:23 +01:00
|
|
|
|
|
|
|
implicit-integer-sign-change:*/include/c++/*/bits/*.h
|
|
|
|
implicit-integer-sign-change:*/new_allocator.h
|
|
|
|
implicit-integer-sign-change:/usr/include/boost/date_time/format_date_parser.hpp
|
|
|
|
implicit-integer-sign-change:arith_uint256.cpp
|
|
|
|
implicit-integer-sign-change:bech32.cpp
|
|
|
|
implicit-integer-sign-change:bloom.cpp
|
|
|
|
implicit-integer-sign-change:chain.*
|
|
|
|
implicit-integer-sign-change:coins.h
|
|
|
|
implicit-integer-sign-change:compat/stdin.cpp
|
|
|
|
implicit-integer-sign-change:compressor.h
|
2023-06-01 11:22:39 +02:00
|
|
|
implicit-integer-sign-change:crc32c/
|
2019-12-04 19:22:23 +01:00
|
|
|
implicit-integer-sign-change:crypto/*
|
|
|
|
implicit-integer-sign-change:key.cpp
|
|
|
|
implicit-integer-sign-change:noui.cpp
|
|
|
|
implicit-integer-sign-change:prevector.h
|
|
|
|
implicit-integer-sign-change:script/bitcoinconsensus.cpp
|
|
|
|
implicit-integer-sign-change:script/interpreter.cpp
|
|
|
|
implicit-integer-sign-change:serialize.h
|
|
|
|
implicit-integer-sign-change:test/arith_uint256_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/coins_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/pow_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/prevector_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/sighash_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/streams_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/transaction_tests.cpp
|
|
|
|
implicit-integer-sign-change:txmempool.cpp
|
|
|
|
implicit-integer-sign-change:validation.cpp
|
|
|
|
implicit-integer-sign-change:zmq/zmqpublishnotifier.cpp
|
|
|
|
implicit-signed-integer-truncation,implicit-integer-sign-change:chain.h
|
|
|
|
implicit-signed-integer-truncation,implicit-integer-sign-change:test/skiplist_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:chain.h
|
|
|
|
implicit-signed-integer-truncation:crypto/*
|
|
|
|
implicit-signed-integer-truncation:cuckoocache.h
|
|
|
|
implicit-signed-integer-truncation:leveldb/*
|
|
|
|
implicit-signed-integer-truncation:streams.h
|
|
|
|
implicit-signed-integer-truncation:test/arith_uint256_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:test/skiplist_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:torcontrol.cpp
|
|
|
|
implicit-unsigned-integer-truncation:crypto/*
|
|
|
|
implicit-unsigned-integer-truncation:leveldb/*
|
Merge bitcoin/bitcoin#26153: Reduce wasted pseudorandom bytes in ChaCha20 + various improvements
511aa4f1c7508f15cab8d7e58007900ad6fd3d5d Add unit test for ChaCha20's new caching (Pieter Wuille)
fb243d25f754da8f01793b41e2d225b917f3e5d7 Improve test vectors for ChaCha20 (Pieter Wuille)
93aee8bbdad808b7009279b67470d496cc26b936 Inline ChaCha20 32-byte specific constants (Pieter Wuille)
62ec713961ade7b58e90c905395558a41e8a59f0 Only support 32-byte keys in ChaCha20{,Aligned} (Pieter Wuille)
f21994a02e1cc46d41995581b54222abc655be93 Use ChaCha20Aligned in MuHash3072 code (Pieter Wuille)
5d16f757639e2cc6e81db6e07bc1d5dd74abca6c Use ChaCha20 caching in FastRandomContext (Pieter Wuille)
38eaece67b1bc37b2f502348c5d7537480a34346 Add fuzz test for testing that ChaCha20 works as a stream (Pieter Wuille)
5f05b27841af0bed1b6e7de5f46ffe33e5919e4d Add xoroshiro128++ PRNG (Martin Leitner-Ankerl)
12ff72476ac0dbf8add736ad3fb5fad2eeab156c Make unrestricted ChaCha20 cipher not waste keystream bytes (Pieter Wuille)
6babf402130a8f3ef3058594750aeaa50b8f5044 Rename ChaCha20::Seek -> Seek64 to clarify multiple of 64 (Pieter Wuille)
e37bcaa0a6dbb334ab6e817efcb609ccee6edc39 Split ChaCha20 into aligned/unaligned variants (Pieter Wuille)
Pull request description:
This is an alternative to #25354 (by my benchmarking, somewhat faster), subsumes #25712, and adds additional test vectors.
It separates the multiple-of-64-bytes-only "core" logic (which becomes simpler) from a layer around which performs caching/slicing to support arbitrary byte amounts. Both have their uses (in particular, the MuHash3072 code can benefit from multiple-of-64-bytes assumptions), plus the separation results in more readable code. Also, since FastRandomContext effectively had its own (more naive) caching on top of ChaCha20, that can be dropped in favor of ChaCha20's new built-in caching.
I thought about rebasing #25712 on top of this, but the changes before are fairly extensive, so redid it instead.
ACKs for top commit:
ajtowns:
ut reACK 511aa4f1c7508f15cab8d7e58007900ad6fd3d5d
dhruv:
tACK crACK 511aa4f1c7
Tree-SHA512: 3aa80971322a93e780c75a8d35bd39da3a9ea570fbae4491eaf0c45242f5f670a24a592c50ad870d5fd09b9f88ec06e274e8aa3cefd9561d623c63f7198cf2c7
2023-02-15 15:51:38 +01:00
|
|
|
shift-base:xoroshiro128plusplus.h
|