Skip to content

Commit d6db871

Browse files
committed
Merge bitcoin#32062: [29.x] backports and rc2
74df31c [doc] update example bitcoin.conf with missing options (glozow) 8082f88 [doc] update man pages for 29.0rc2 (glozow) 472d582 [build] bump to 29.0rc2 (glozow) a4c30bd qt: doc: adapt outdated binary paths to CMake changes (Sebastian Falbesoner) 4e438d3 build: use make < 3.82 syntax for define directive (Sjors Provoost) 7ff0b02 build: Remove manpages when making MacOS app (Ava Chow) 5ebcb59 test: fix intermittent failure in p2p_orphan_handling.py (Martin Zumsande) 458655b fuzz: make sure DecodeBase58(Check) is called with valid values more often (Lőrinc) 15ecae3 fuzz: Always restrict base conversion input lengths (Lőrinc) 80c5d57 contrib: Fix `gen-bitcoin-conf.sh`. (David Gumberg) Pull request description: backports: - bitcoin#32049 - bitcoin#32063 - bitcoin#32064 - bitcoin#32070 - bitcoin#31917 ACKs for top commit: Sjors: ACK 74df31c hebasto: ACK 74df31c, I have reviewed the code and it looks OK. ismaelsadeeq: Code review ACK 74df31c Tree-SHA512: df4ef832a03c9c3f89d30d3f65d81b7c7e4793d2cad8a269f1ff221454a4b0b05e06109f4556926c1c4f7fcbd2537052b4d58b4b3911dfcfc35726c600b587d9
2 parents e9e6825 + 74df31c commit d6db871

16 files changed

+130
-55
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ set(CLIENT_NAME "Bitcoin Core")
2626
set(CLIENT_VERSION_MAJOR 29)
2727
set(CLIENT_VERSION_MINOR 0)
2828
set(CLIENT_VERSION_BUILD 0)
29-
set(CLIENT_VERSION_RC 1)
29+
set(CLIENT_VERSION_RC 2)
3030
set(CLIENT_VERSION_IS_RELEASE "true")
3131
set(COPYRIGHT_YEAR "2025")
3232

cmake/module/Maintenance.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ function(add_macos_deploy_target)
8383
COMMAND ${CMAKE_COMMAND} --install ${PROJECT_BINARY_DIR} --config $<CONFIG> --component bitcoin-qt --prefix ${macos_app}/Contents/MacOS --strip
8484
COMMAND ${CMAKE_COMMAND} -E rename ${macos_app}/Contents/MacOS/bin/$<TARGET_FILE_NAME:bitcoin-qt> ${macos_app}/Contents/MacOS/Bitcoin-Qt
8585
COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/bin
86+
COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/share
8687
VERBATIM
8788
)
8889

contrib/devtools/gen-bitcoin-conf.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ EOF
5050
# adding newlines is a bit funky to ensure portability for BSD
5151
# see here for more details: https://stackoverflow.com/a/24575385
5252
${BITCOIND} --help \
53-
| sed '1,/Print this help message and exit/d' \
53+
| sed '1,/Options:/d' \
54+
| sed -E '/^[[:space:]]{2}-help/,/^[[:space:]]*$/d' \
5455
| sed -E 's/^[[:space:]]{2}\-/#/' \
5556
| sed -E 's/^[[:space:]]{7}/# /' \
5657
| sed -E '/[=[:space:]]/!s/#.*$/&=1/' \

depends/packages/capnp.mk

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ $(package)_download_file=$(native_$(package)_download_file)
55
$(package)_file_name=$(native_$(package)_file_name)
66
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
77

8-
define $(package)_set_vars :=
8+
define $(package)_set_vars
99
$(package)_config_opts := -DBUILD_TESTING=OFF
1010
$(package)_config_opts += -DWITH_OPENSSL=OFF
1111
$(package)_config_opts += -DWITH_ZLIB=OFF

depends/packages/libmultiprocess.mk

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ifneq ($(host),$(build))
88
$(package)_dependencies += native_capnp
99
endif
1010

11-
define $(package)_set_vars :=
11+
define $(package)_set_vars
1212
ifneq ($(host),$(build))
1313
$(package)_config_opts := -DCAPNP_EXECUTABLE="$$(native_capnp_prefixbin)/capnp"
1414
$(package)_config_opts += -DCAPNPC_CXX_EXECUTABLE="$$(native_capnp_prefixbin)/capnpc-c++"

doc/man/bitcoin-cli.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc1" "User Commands"
2+
.TH BITCOIN-CLI "1" "March 2025" "bitcoin-cli v29.0.0rc2" "User Commands"
33
.SH NAME
4-
bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc1
4+
bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc2
55
.SH SYNOPSIS
66
.B bitcoin-cli
77
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR]
@@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v29.0.0rc1
1515
.B bitcoin-cli
1616
[\fI\,options\/\fR] \fI\,help <command>\/\fR
1717
.SH DESCRIPTION
18-
Bitcoin Core RPC client version v29.0.0rc1
18+
Bitcoin Core RPC client version v29.0.0rc2
1919
.PP
2020
The bitcoin\-cli utility provides a command line interface to interact with a Bitcoin Core RPC server.
2121
.PP

doc/man/bitcoin-qt.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc1" "User Commands"
2+
.TH BITCOIN-QT "1" "March 2025" "bitcoin-qt v29.0.0rc2" "User Commands"
33
.SH NAME
4-
bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc1
4+
bitcoin-qt \- manual page for bitcoin-qt v29.0.0rc2
55
.SH SYNOPSIS
66
.B bitcoin-qt
77
[\fI\,options\/\fR] [\fI\,URI\/\fR]
88
.SH DESCRIPTION
9-
Bitcoin Core version v29.0.0rc1
9+
Bitcoin Core version v29.0.0rc2
1010
.PP
1111
The bitcoin\-qt application provides a graphical interface for interacting with Bitcoin Core.
1212
.PP

doc/man/bitcoin-tx.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc1" "User Commands"
2+
.TH BITCOIN-TX "1" "March 2025" "bitcoin-tx v29.0.0rc2" "User Commands"
33
.SH NAME
4-
bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc1
4+
bitcoin-tx \- manual page for bitcoin-tx v29.0.0rc2
55
.SH SYNOPSIS
66
.B bitcoin-tx
77
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR]
88
.br
99
.B bitcoin-tx
1010
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR]
1111
.SH DESCRIPTION
12-
Bitcoin Core bitcoin\-tx utility version v29.0.0rc1
12+
Bitcoin Core bitcoin\-tx utility version v29.0.0rc2
1313
.PP
1414
The bitcoin\-tx tool is used for creating and modifying bitcoin transactions.
1515
.PP

doc/man/bitcoin-util.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc1" "User Commands"
2+
.TH BITCOIN-UTIL "1" "March 2025" "bitcoin-util v29.0.0rc2" "User Commands"
33
.SH NAME
4-
bitcoin-util \- manual page for bitcoin-util v29.0.0rc1
4+
bitcoin-util \- manual page for bitcoin-util v29.0.0rc2
55
.SH SYNOPSIS
66
.B bitcoin-util
77
[\fI\,options\/\fR] [\fI\,command\/\fR]
88
.br
99
.B bitcoin-util
1010
[\fI\,options\/\fR] \fI\,grind <hex-block-header>\/\fR
1111
.SH DESCRIPTION
12-
Bitcoin Core bitcoin\-util utility version v29.0.0rc1
12+
Bitcoin Core bitcoin\-util utility version v29.0.0rc2
1313
.PP
1414
The bitcoin\-util tool provides bitcoin related functionality that does not rely on the ability to access a running node. Available [commands] are listed below.
1515
.SH OPTIONS

doc/man/bitcoin-wallet.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc1" "User Commands"
2+
.TH BITCOIN-WALLET "1" "March 2025" "bitcoin-wallet v29.0.0rc2" "User Commands"
33
.SH NAME
4-
bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc1
4+
bitcoin-wallet \- manual page for bitcoin-wallet v29.0.0rc2
55
.SH SYNOPSIS
66
.B bitcoin-wallet
77
[\fI\,options\/\fR] \fI\,<command>\/\fR
88
.SH DESCRIPTION
9-
Bitcoin Core bitcoin\-wallet utility version v29.0.0rc1
9+
Bitcoin Core bitcoin\-wallet utility version v29.0.0rc2
1010
.PP
1111
bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files.
1212
.PP

doc/man/bitcoind.1

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc1" "User Commands"
2+
.TH BITCOIND "1" "March 2025" "bitcoind v29.0.0rc2" "User Commands"
33
.SH NAME
4-
bitcoind \- manual page for bitcoind v29.0.0rc1
4+
bitcoind \- manual page for bitcoind v29.0.0rc2
55
.SH SYNOPSIS
66
.B bitcoind
77
[\fI\,options\/\fR]
88
.SH DESCRIPTION
9-
Bitcoin Core daemon version v29.0.0rc1
9+
Bitcoin Core daemon version v29.0.0rc2
1010
.PP
1111
The Bitcoin Core daemon (bitcoind) is a headless program that connects to the Bitcoin network to validate and relay transactions and blocks, as well as relaying addresses.
1212
.PP

share/examples/bitcoin.conf

+76-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,82 @@
1212
### Options
1313

1414

15+
# Execute command when an alert is raised (%s in cmd is replaced by
16+
# message)
17+
#alertnotify=<cmd>
18+
19+
# For backwards compatibility, treat an unused bitcoin.conf file in the
20+
# datadir as a warning, not an error.
21+
#allowignoredconf=1
22+
23+
# If this block is in the chain assume that it and its ancestors are valid
24+
# and potentially skip their script verification (0 to verify all,
25+
# default:
26+
# 00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77,
27+
# testnet3:
28+
# 00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57,
29+
# testnet4:
30+
# 0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3,
31+
# signet:
32+
# 000000895a110f46e59eb82bbc5bfb67fa314656009c295509c21b4999f5180a)
33+
#assumevalid=<hex>
34+
35+
# Maintain an index of compact filters by block (default: 0, values:
36+
# basic). If <type> is not supplied or if <type> = 1, indexes for
37+
# all known types are enabled.
38+
#blockfilterindex=<type>
39+
40+
# Execute command when the best block changes (%s in cmd is replaced by
41+
# block hash)
42+
#blocknotify=<cmd>
43+
44+
# Extra transactions to keep in memory for compact block reconstructions
45+
# (default: 100)
46+
#blockreconstructionextratxn=<n>
47+
48+
# Specify directory to hold blocks subdirectory for *.dat files (default:
49+
# <datadir>)
50+
#blocksdir=<dir>
51+
52+
# Whether to reject transactions from network peers. Disables automatic
53+
# broadcast and rebroadcast of transactions, unless the source peer
54+
# has the 'forcerelay' permission. RPC transactions are not
55+
# affected. (default: 0)
56+
#blocksonly=1
57+
58+
# Whether an XOR-key applies to blocksdir *.dat files. The created XOR-key
59+
# will be zeros for an existing blocksdir or when `-blocksxor=0` is
60+
# set, and random for a freshly initialized blocksdir. (default: 1)
61+
#blocksxor=1
62+
63+
# Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0)
64+
#coinstatsindex=1
65+
66+
# Specify path to read-only configuration file. Relative paths will be
67+
# prefixed by datadir location (only useable from command line, not
68+
# configuration file) (default: bitcoin.conf)
69+
#conf=<file>
70+
71+
# Run in the background as a daemon and accept commands (default: 0)
72+
#daemon=1
73+
74+
# Wait for initialization to be finished before exiting. This implies
75+
# -daemon (default: 0)
76+
#daemonwait=1
77+
78+
# Specify data directory
79+
#datadir=<dir>
80+
81+
# Maximum database cache size <n> MiB (minimum 4, default: 450). Make sure
82+
# you have enough RAM. In addition, unused memory allocated to the
83+
# mempool is shared with this cache (see -maxmempool).
84+
#dbcache=<n>
85+
86+
# Specify location of debug log file (default: debug.log). Relative paths
87+
# will be prefixed by a net-specific datadir location. Pass
88+
# -nodebuglogfile to disable writing the log to a file.
89+
#debuglogfile=<file>
90+
1591
# Specify additional configuration file, relative to the -datadir path
1692
# (only useable from configuration file, not command line)
1793
#includeconf=<file>
@@ -428,9 +504,6 @@
428504
# takes priority over "-debug"
429505
#debugexclude=<category>
430506

431-
# Print help message with debugging options and exit
432-
#help-debug=1
433-
434507
# Include IP addresses in debug output (default: 0)
435508
#logips=1
436509

src/qt/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,5 @@ sudo apt-get install qtcreator
120120
- Under `Debuggers`: select `"GDB"` as debugger
121121

122122
8. While in the `Projects` tab, ensure that you have the `bitcoin-qt` executable specified under `Run`
123-
- If the executable is not specified: click `"Choose..."`, navigate to `src/qt`, and select `bitcoin-qt`
123+
- If the executable is not specified: click `"Choose..."`, navigate to `build/bin`, and select `bitcoin-qt`
124124
9. You're all set! Start developing, building, and debugging the Bitcoin Core GUI

src/qt/test/wallettests.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,9 @@ struct MiniGUI {
268268
//
269269
// This also requires overriding the default minimal Qt platform:
270270
//
271-
// QT_QPA_PLATFORM=xcb src/qt/test/test_bitcoin-qt # Linux
272-
// QT_QPA_PLATFORM=windows src/qt/test/test_bitcoin-qt # Windows
273-
// QT_QPA_PLATFORM=cocoa src/qt/test/test_bitcoin-qt # macOS
271+
// QT_QPA_PLATFORM=xcb build/bin/test_bitcoin-qt # Linux
272+
// QT_QPA_PLATFORM=windows build/bin/test_bitcoin-qt # Windows
273+
// QT_QPA_PLATFORM=cocoa build/bin/test_bitcoin-qt # macOS
274274
void TestGUI(interfaces::Node& node, const std::shared_ptr<CWallet>& wallet)
275275
{
276276
// Create widgets for sending coins and listing transactions.

src/test/fuzz/base_encode_decode.cpp

+25-26
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <base58.h>
88
#include <psbt.h>
9+
#include <span.h>
910
#include <test/fuzz/FuzzedDataProvider.h>
1011
#include <util/strencodings.h>
1112
#include <util/string.h>
@@ -19,42 +20,40 @@ using util::TrimStringView;
1920

2021
FUZZ_TARGET(base58_encode_decode)
2122
{
22-
FuzzedDataProvider provider(buffer.data(), buffer.size());
23-
const std::string random_string{provider.ConsumeRandomLengthString(1000)};
24-
const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)};
23+
FuzzedDataProvider provider{buffer.data(), buffer.size()};
24+
const auto random_string{provider.ConsumeRandomLengthString(100)};
2525

26-
// Decode/Encode roundtrip
27-
std::vector<unsigned char> decoded;
28-
if (DecodeBase58(random_string, decoded, max_ret_len)) {
26+
const auto encoded{EncodeBase58(MakeUCharSpan(random_string))};
27+
const auto decode_input{provider.ConsumeBool() ? random_string : encoded};
28+
const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, decode_input.size() + 1)};
29+
if (std::vector<unsigned char> decoded; DecodeBase58(decode_input, decoded, max_ret_len)) {
2930
const auto encoded_string{EncodeBase58(decoded)};
30-
assert(encoded_string == TrimStringView(random_string));
31-
assert(encoded_string.empty() || !DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
31+
assert(encoded_string == TrimStringView(decode_input));
32+
if (decoded.size() > 0) {
33+
assert(max_ret_len > 0);
34+
assert(decoded.size() <= static_cast<size_t>(max_ret_len));
35+
assert(!DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
36+
}
3237
}
33-
// Encode/Decode roundtrip
34-
const auto encoded{EncodeBase58(buffer)};
35-
std::vector<unsigned char> roundtrip_decoded;
36-
assert(DecodeBase58(encoded, roundtrip_decoded, buffer.size())
37-
&& std::ranges::equal(roundtrip_decoded, buffer));
3838
}
3939

4040
FUZZ_TARGET(base58check_encode_decode)
4141
{
42-
FuzzedDataProvider provider(buffer.data(), buffer.size());
43-
const std::string random_string{provider.ConsumeRandomLengthString(1000)};
44-
const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)};
42+
FuzzedDataProvider provider{buffer.data(), buffer.size()};
43+
const auto random_string{provider.ConsumeRandomLengthString(100)};
4544

46-
// Decode/Encode roundtrip
47-
std::vector<unsigned char> decoded;
48-
if (DecodeBase58Check(random_string, decoded, max_ret_len)) {
45+
const auto encoded{EncodeBase58Check(MakeUCharSpan(random_string))};
46+
const auto decode_input{provider.ConsumeBool() ? random_string : encoded};
47+
const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, decode_input.size() + 1)};
48+
if (std::vector<unsigned char> decoded; DecodeBase58Check(decode_input, decoded, max_ret_len)) {
4949
const auto encoded_string{EncodeBase58Check(decoded)};
50-
assert(encoded_string == TrimStringView(random_string));
51-
assert(encoded_string.empty() || !DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
50+
assert(encoded_string == TrimStringView(decode_input));
51+
if (decoded.size() > 0) {
52+
assert(max_ret_len > 0);
53+
assert(decoded.size() <= static_cast<size_t>(max_ret_len));
54+
assert(!DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
55+
}
5256
}
53-
// Encode/Decode roundtrip
54-
const auto encoded{EncodeBase58Check(buffer)};
55-
std::vector<unsigned char> roundtrip_decoded;
56-
assert(DecodeBase58Check(encoded, roundtrip_decoded, buffer.size())
57-
&& std::ranges::equal(roundtrip_decoded, buffer));
5857
}
5958

6059
FUZZ_TARGET(base32_encode_decode)

test/functional/p2p_orphan_handling.py

+1
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,7 @@ def test_parents_change(self):
788788

789789
# Disconnect peer1. peer2 should become the new candidate for orphan resolution.
790790
peer1.peer_disconnect()
791+
self.wait_until(lambda: node.num_test_p2p_connections() == 1)
791792
node.bumpmocktime(TXREQUEST_TIME_SKIP)
792793
self.wait_until(lambda: len(node.getorphantxs(verbosity=2)[0]["from"]) == 1)
793794
# Both parents should be requested, now that they are both missing.

0 commit comments

Comments
 (0)