Merge bitcoin/bitcoin#32490: refactor: Remove UB in prevector reverse iterators
faf9082a5ftest: Fix whitespace in prevector_tests.cpp (MarcoFalke)fa7f04c8a7refactor: Remove UB in prevector reverse iterators (MarcoFalke) Pull request description: `rend()` creates a pointer with offset `-1`. This is UB, according to the C++ standard: https://eel.is/c++draft/expr.add#4: When an expression J that has integral type is added to [...] an expression P of pointer type, the result has the type of P. ... if P points to a (possibly-hypothetical) array element i of an array object x with n elements [...] the expressions P + J and J + P (where J has the value j) point to the (possibly-hypothetical) array element i+j of x if 0≤i+j≤n [...] Otherwise, the behavior is undefined. Also, it is unclear why the functions exist at all, when stdlib utils such as `std::reverse_iterator{it}` or `std::views::reverse` can be used out of the box. So remove them, along with the ubsan suppressions, that are no longer used. I've tagged this a refactor, because the code was always dead (unused outside of tests). And since commit2925bd537cit was completely dead. Also, I could not find a sanitizer that detects this type of UB. ACKs for top commit: l0rinc: tested ACKfaf9082a5fachow101: ACKfaf9082a5fstickies-v: ACKfaf9082a5f, nice find. theuni: utACKfaf9082a5fTree-SHA512: 31511d520a1c0fdd65c2e5f1a8ef6fd17464303b6bff88a5d9d9577adfee849d431deb510882b6f4e15e8fb7168861bc0d26fca3bed4278f57a9d6e7b1235dce
This commit is contained in:
3 files changed
+58
-84
No files matched your search
@@ -54,7 +54,6 @@ unsigned-integer-overflow:DecompressAmount
|
||||
unsigned-integer-overflow:crypto/
|
||||
unsigned-integer-overflow:MurmurHash3
|
||||
unsigned-integer-overflow:TxConfirmStats::EstimateMedianVal
|
||||
unsigned-integer-overflow:prevector.h
|
||||
unsigned-integer-overflow:InsecureRandomContext::rand64
|
||||
unsigned-integer-overflow:InsecureRandomContext::SplitMix64
|
||||
unsigned-integer-overflow:bitset_detail::PopCount
|
||||
@@ -62,7 +61,6 @@ implicit-integer-sign-change:SetStdinEcho
|
||||
implicit-integer-sign-change:compressor.h
|
||||
implicit-integer-sign-change:crypto/
|
||||
implicit-integer-sign-change:TxConfirmStats::removeTx
|
||||
implicit-integer-sign-change:prevector.h
|
||||
implicit-integer-sign-change:verify_flags
|
||||
implicit-integer-sign-change:EvalScript
|
||||
implicit-integer-sign-change:serialize.h
|
||||
|
||||
Reference in new issue
Block a user