aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2022-01-06 07:34:32 +0800
committerfanquake <fanquake@gmail.com>2022-01-06 07:35:01 +0800
commit17fdbefd3f40ec79b98c876229760b8fbb1d8620 (patch)
treefa00ef0f333e4077ee11ad61f97bdff9f9d57d28
parent801aaac2b39564aa14009785146ba26d2506fb53 (diff)
parentfa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091 (diff)
downloadbitcoin-17fdbefd3f40ec79b98c876229760b8fbb1d8620.tar.xz
Merge bitcoin/bitcoin#23970: Remove pointless and confusing shift in RelayAddress
fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091 refactor: Remove pointless and confusing shift in RelayAddress (MarcoFalke) Pull request description: The second argument written to the siphash is already quantized to 24 hours, so it seems confusing to quantize the first argument to 32 bits (out of 64 bits). > The shifting is pointless, we should get rid of it. It seems to be a silly evolution of this 2010 Satoshi code: 5cbf753 (where it made sense because everything was XORed together, and the address used the high bits, while the time used the low ones). (Copied from https://github.com/bitcoin/bitcoin/pull/18642#issuecomment-613773120) (The original code was `uint256 hashRand = hashSalt ^ (((int64)addr.ip)<<32) ^ ((GetTime()+addr.ip)/(24*60*60));`) This also allows to remove a integer sanitizer suppression for the whole file. ACKs for top commit: laanwj: Code review ACK fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091 sipa: utACK fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091 promag: Code review ACK fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091. Tree-SHA512: f5fd107464ccd839d6749aed6914b4935e39ab42906546b3f3810a7339fc4633fef931a1783a287572af5ec64525626fa91d147d8ff52eb076740465bf5cf839
-rw-r--r--src/net_processing.cpp4
-rw-r--r--test/sanitizer_suppressions/ubsan1
2 files changed, 2 insertions, 3 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 51aa498fb0..7ef0054630 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -1746,8 +1746,8 @@ void PeerManagerImpl::RelayAddress(NodeId originator,
// Relay to a limited number of other nodes
// Use deterministic randomness to send to the same nodes for 24 hours
// at a time so the m_addr_knowns of the chosen nodes prevent repeats
- uint64_t hashAddr = addr.GetHash();
- const CSipHasher hasher = m_connman.GetDeterministicRandomizer(RANDOMIZER_ID_ADDRESS_RELAY).Write(hashAddr << 32).Write((GetTime() + hashAddr) / (24 * 60 * 60));
+ const uint64_t hashAddr{addr.GetHash()};
+ const CSipHasher hasher{m_connman.GetDeterministicRandomizer(RANDOMIZER_ID_ADDRESS_RELAY).Write(hashAddr).Write((GetTime() + hashAddr) / (24 * 60 * 60))};
FastRandomContext insecure_rand;
// Relay reachable addresses to 2 peers. Unreachable addresses are relayed randomly to 1 or 2 peers.
diff --git a/test/sanitizer_suppressions/ubsan b/test/sanitizer_suppressions/ubsan
index fc14998ba1..6e4ac80927 100644
--- a/test/sanitizer_suppressions/ubsan
+++ b/test/sanitizer_suppressions/ubsan
@@ -105,6 +105,5 @@ implicit-unsigned-integer-truncation:crypto/
shift-base:arith_uint256.cpp
shift-base:crypto/
shift-base:hash.cpp
-shift-base:net_processing.cpp
shift-base:streams.h
shift-base:util/bip32.cpp