From 2afbf25e25befddd0f659c12111488ef4b3312d9 Mon Sep 17 00:00:00 2001 From: laanwj <126646+laanwj@users.noreply.github.com> Date: Thu, 26 May 2022 20:06:07 +0200 Subject: [PATCH] Merge bitcoin/bitcoin#24032: Add defaults to vDeployments to avoid uninitialized variables c4c5b9ca6e98cf44309af73edf5559940a04d00f consensus/params: set default values for BIP9Deployment (Anthony Towns) Pull request description: Adds default values for `vDeployments` in `consensus/params.h` so that undefined behaviour is avoided if a deployment is not initialized. Also adds a check in the unit tests to alert if this is happening, since even if it doesn't invoke undefined behaviour it's probably a mistake. ACKs for top commit: laanwj: Code review ACK c4c5b9ca6e98cf44309af73edf5559940a04d00f Tree-SHA512: 22d7ff86a817d9e9e67c47301fc3b7e9d5821c13565d7706711f113dea220eea29b413a7c8d029691009159cebc85a108d77cb52418734091c196bafb2b12423 --- src/consensus/params.h | 6 +++--- src/test/versionbits_tests.cpp | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/consensus/params.h b/src/consensus/params.h index 7d6e9772c2751..f025d8a54034c 100644 --- a/src/consensus/params.h +++ b/src/consensus/params.h @@ -46,11 +46,11 @@ constexpr bool ValidDeployment(DeploymentPos dep) { return DEPLOYMENT_TESTDUMMY */ struct BIP9Deployment { /** Bit position to select the particular bit in nVersion. */ - int bit; + int bit{28}; /** Start MedianTime for version bits miner confirmation. Can be a date in the past */ - int64_t nStartTime; + int64_t nStartTime{NEVER_ACTIVE}; /** Timeout/expiry MedianTime for the deployment attempt. */ - int64_t nTimeout; + int64_t nTimeout{NEVER_ACTIVE}; /** If lock in occurs, delay activation until at least this block * height. Note that activation will only occur on a retarget * boundary. diff --git a/src/test/versionbits_tests.cpp b/src/test/versionbits_tests.cpp index af31496fc5d82..0695e33a32133 100644 --- a/src/test/versionbits_tests.cpp +++ b/src/test/versionbits_tests.cpp @@ -282,6 +282,7 @@ static void check_computeblockversion(const Consensus::Params& params, Consensus nStartTime == Consensus::BIP9Deployment::NEVER_ACTIVE) { BOOST_CHECK_EQUAL(min_activation_height, 0); + BOOST_CHECK_EQUAL(nTimeout, Consensus::BIP9Deployment::NO_TIMEOUT); return; }