bitcoin/src
Ryan Ofsky 223fc24c4e
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / macOS 14 native, arm64, fuzz (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / Win64 native fuzz, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments
21e9d39a37 docs: add release notes for 31603 (brunoerg)
a8b548d75d test: `getdescriptorinfo`/`importdescriptors` with whitespace in pubkeys (brunoerg)
c7afca3d62 test: descriptor: check whitespace into keys (brunoerg)
cb722a3cea descriptor: check whitespace in ParsePubkeyInner (brunoerg)
50856695ef test: fix descriptors in `ismine_tests` (brunoerg)

Pull request description:

  Currently, we successfully parse descriptors which contains spaces in the beginning or end of the public/private key within a fragment (e.g. `pk( KEY)`, `pk(KEY )` or `pk( KEY )`). I have noticed that one of the reasons is that the `DecodeBase58` function simply ignore these whitespaces.

  This PR changes the `ParsePubkeyInner ` to reject pubkeys that contain a whitespace at the beginning and/or at the end. We will only check the whitespace in some RPCs (e.g. `importdescriptors`), but an already imported descriptor won't be affected by this check, especially because we store descriptors from `ToString`.

  For context: https://github.com/brunoerg/bitcoinfuzz/issues/72

ACKs for top commit:
  rkrux:
    tACK 21e9d39a37
  darosior:
    re-ACK 21e9d39a37
  sipa:
    utACK 21e9d39a37

Tree-SHA512: 54f48a89a235517e5cdc29a46dceeb7dabbee93c7616a166288ff3f90131808eb0ece43b0797a11fe827a5f7bd51d65e3e75c16789b0a42020934cabb684cc8f
2025-03-18 08:36:41 -04:00
..
bench Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17) 2025-03-17 13:10:10 +08:00
common pcp: make NAT-PMP error codes uint16_t 2025-02-12 10:31:43 -05:00
compat netbase: refactor CreateSock() to accept sa_family_t 2024-03-01 13:13:07 -05:00
consensus Remove checkpoints 2025-03-13 11:13:13 +00:00
crc32c Update crc32c subtree to latest upstream master 2024-02-27 18:28:19 +00:00
crypto cmake: add optional source files to bitcoin_crypto directly 2025-02-07 09:11:27 +01:00
index scripted-diff: rename block and undo functions for consistency 2025-01-09 15:17:02 +01:00
init refactor: Avoid using IsArgSet() on -debug, -loglevel, and -vbparams list options 2025-02-13 12:30:15 -05:00
interfaces Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17) 2025-03-17 13:10:10 +08:00
ipc Add waitNext() to BlockTemplate interface 2025-02-19 17:20:57 +01:00
kernel Remove checkpoints 2025-03-13 11:13:13 +00:00
leveldb Update leveldb subtree to latest upstream 2025-01-16 11:09:56 +00:00
logging scripted-diff: modernize outdated trait patterns - values 2025-02-21 10:43:01 +01:00
minisketch Update minisketch subtree to latest master 2025-03-05 15:36:56 +00:00
node Remove checkpoints 2025-03-13 11:13:13 +00:00
policy validation: use wtxid instead of txid in CheckEphemeralSpends 2025-03-11 16:00:46 +00:00
primitives tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
qt qt: doc: adapt outdated binary paths to CMake changes 2025-03-16 17:15:04 +01:00
rpc scripted-diff: modernize outdated trait patterns - types 2025-02-21 10:41:27 +01:00
script Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments 2025-03-18 08:36:41 -04:00
secp256k1 Update secp256k1 subtree to v0.6.0 2024-11-04 14:59:46 -05:00
support util: Add missing types in make_secure_unique 2024-12-10 21:51:48 +01:00
test Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments 2025-03-18 08:36:41 -04:00
univalue Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17) 2025-03-17 13:10:10 +08:00
util scripted-diff: modernize outdated trait patterns - values 2025-02-21 10:43:01 +01:00
wallet Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments 2025-03-18 08:36:41 -04:00
zmq cmake: Add FindZeroMQ module 2024-10-25 18:09:36 +01:00
.clang-format refactor: Print verbose serialize compiler error messages 2023-12-15 15:20:54 +01:00
.clang-tidy tidy: add clang-tidy modernize-use-starts-ends-with check 2024-09-14 20:33:32 +03:00
addrdb.cpp scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
addrdb.h Use serialization parameters for CAddress serialization 2023-09-05 10:13:25 +02:00
addresstype.cpp policy: Add OP_1 <0x4e73> as a standard output type 2024-07-30 14:06:58 -04:00
addresstype.h policy: Add OP_1 <0x4e73> as a standard output type 2024-07-30 14:06:58 -04:00
addrman.cpp addrman: cap the max_pct to not exceed the maximum number of addresses 2024-11-11 12:47:53 -03:00
addrman.h addrman: cap the max_pct to not exceed the maximum number of addresses 2024-11-11 12:47:53 -03:00
addrman_impl.h Merge bitcoin/bitcoin#30568: addrman: change internal id counting to int64_t 2024-09-20 12:55:22 -04:00
arith_uint256.cpp Add a fuzz test for Num3072 multiplication and inversion 2025-01-09 10:11:46 -05:00
arith_uint256.h doc: Clarify comments about endianness after #30526 2025-01-03 09:19:53 -05:00
attributes.h
banman.cpp refactor: Delay translation of _() literals 2025-01-14 19:21:37 +01:00
banman.h net_processing: remove Misbehavior score and increments 2024-05-30 08:35:18 -04:00
base58.cpp refactor: Avoid needless, unsafe c-style cast 2024-12-19 13:46:31 +01:00
base58.h
bech32.cpp Split out bech32 separator char to header 2024-10-19 18:49:53 +02:00
bech32.h Split out bech32 separator char to header 2024-10-19 18:49:53 +02:00
bip324.cpp net: merge V2Transport constructors, move key gen 2023-09-10 16:11:52 -04:00
bip324.h net: merge V2Transport constructors, move key gen 2023-09-10 16:11:52 -04:00
bitcoin-chainstate.cpp Remove checkpoints 2025-03-13 11:13:13 +00:00
bitcoin-cli-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-cli.cpp Fix nonsensical bitcoin-cli -norpcwallet behavior 2025-02-13 12:30:15 -05:00
bitcoin-tx-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-tx.cpp refactor: Use TranslateFn type consistently 2025-01-15 12:15:40 +01:00
bitcoin-util-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-util.cpp refactor: Use TranslateFn type consistently 2025-01-15 12:15:40 +01:00
bitcoin-wallet-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-wallet.cpp refactor: Use TranslateFn type consistently 2025-01-15 12:15:40 +01:00
bitcoind-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoind.cpp refactor: introduce a more general LockDirectories for init 2025-01-16 21:06:21 +00:00
blockencodings.cpp scripted-diff: LogPrint -> LogDebug 2024-08-29 13:49:57 +02:00
blockencodings.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
blockfilter.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
blockfilter.h Remove unused includes from blockfilter.h 2023-08-17 18:28:15 +02:00
chain.cpp
chain.h Remove checkpoints 2025-03-13 11:13:13 +00:00
chainparams.cpp refactor: Avoid using IsArgSet() on -signetseednode and -signetchallenge list options 2025-02-13 12:30:15 -05:00
chainparams.h
chainparamsbase.cpp net, init: derive default onion port if a user specified a -port 2024-11-14 13:41:02 -05:00
chainparamsbase.h net, init: derive default onion port if a user specified a -port 2024-11-14 13:41:02 -05:00
chainparamsseeds.h seeds: update fixed dns seeds 2025-03-06 15:39:58 -06:00
checkqueue.h Merge bitcoin/bitcoin#31313: refactor: Clamp worker threads in ChainstateManager constructor 2024-12-03 18:02:37 -05:00
clientversion.cpp refactor: Delay translation of _() literals 2025-01-14 19:21:37 +01:00
clientversion.h scripted-diff: Clarify "user agent" variable name 2024-10-28 12:35:49 +00:00
cluster_linearize.h doc: correct typos 2024-11-11 14:14:39 +00:00
CMakeLists.txt cmake: Set top-level target output locations 2025-02-20 22:18:51 +00:00
coins.cpp Merge bitcoin/bitcoin#30906: refactor: prohibit direct flags access in CCoinsCacheEntry and remove invalid tests 2024-12-04 14:09:05 -05:00
coins.h coins, refactor: Remove direct GetFlags access 2024-12-02 13:52:34 +01:00
compressor.cpp Clean up things that include script/standard.h 2023-08-14 17:38:27 -04:00
compressor.h refactor: Rename CTransaction::nVersion to version 2024-06-07 13:55:23 -04:00
core_io.h rpc: add getdescriptoractivity 2024-11-26 20:47:08 -05:00
core_memusage.h
core_read.cpp ci: Update Clang in "tidy" job 2024-12-05 14:37:47 +00:00
core_write.cpp refactor: Rename CTransaction::nVersion to version 2024-06-07 13:55:23 -04:00
cuckoocache.h validation: Don't error if maxsigcachesize exceeds uint32::max 2024-07-04 22:35:29 +02:00
dbwrapper.cpp dbwrapper: Bump max file size to 32 MiB 2024-11-30 20:19:08 +01:00
dbwrapper.h dbwrapper: Bump max file size to 32 MiB 2024-11-30 20:19:08 +01:00
deploymentinfo.cpp
deploymentinfo.h
deploymentstatus.cpp scripted-diff: modernize outdated trait patterns - types 2025-02-21 10:41:27 +01:00
deploymentstatus.h
dummywallet.cpp wallet, test: Be able to always swap BDB endianness 2024-05-16 15:03:13 -04:00
external_signer.cpp refactor: Remove Span operator==, Use std::ranges::equal 2024-08-13 07:44:31 +02:00
external_signer.h
flatfile.cpp scripted-diff: LogPrint -> LogDebug 2024-08-29 13:49:57 +02:00
flatfile.h refactor: Add FlatFileSeq member variables in BlockManager 2024-07-24 09:39:35 +02:00
hash.cpp crypto, hash: replace custom rotl32 with std::rotl 2024-01-05 17:12:38 +01:00
hash.h Squashed 'src/secp256k1/' changes from 2f2ccc46954..0cdc758a563 2024-11-04 14:59:46 -05:00
headerssync.cpp [headerssync] update headerssync config for v29 2025-03-04 14:23:18 -05:00
headerssync.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
httprpc.cpp Fix nonsensical -norpcwhitelist behavior 2025-02-13 12:30:15 -05:00
httprpc.h
httpserver.cpp Fix nonsensical -norpcbind and -norpcallowip behavior 2025-02-13 12:30:15 -05:00
httpserver.h rpc: increase the defaults for -rpcthreads and -rpcworkqueue 2024-11-04 17:08:21 +01:00
i2p.cpp Merge bitcoin/bitcoin#29833: i2p: fix and improve logs 2024-06-26 15:28:26 -04:00
i2p.h i2p: log errors properly according to their severity 2024-06-12 16:19:50 -03:00
indirectmap.h
init.cpp Remove checkpoints 2025-03-13 11:13:13 +00:00
init.h refactor: introduce a more general LockDirectories for init 2025-01-16 21:06:21 +00:00
key.cpp refactor: remove un-tested early returns 2024-08-04 08:52:22 +02:00
key.h refactor: move SignSchnorr to KeyPair 2024-08-04 08:51:36 +02:00
key_io.cpp key: clear out secret data in DecodeExtKey 2024-10-27 15:38:54 +01:00
key_io.h Clean up things that include script/standard.h 2023-08-14 17:38:27 -04:00
logging.cpp log: Enforce trailing newline, Remove redundant m_started_new_line 2024-10-01 11:31:39 +02:00
logging.h log: Enforce trailing newline, Remove redundant m_started_new_line 2024-10-01 11:31:39 +02:00
mapport.cpp mapport: make ProcessPCP void 2024-11-04 14:19:40 -05:00
mapport.h mapport: rename 'use_pcp' to 'enable' 2024-10-29 11:58:51 -04:00
memusage.h memusage: Add DynamicUsage for std::string 2024-11-04 18:46:40 +01:00
merkleblock.cpp [clang-tidy] Enable the misc-no-recursion check 2024-04-07 14:04:45 +01:00
merkleblock.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
net.cpp Merge bitcoin/bitcoin#30529: Fix -norpcwhitelist, -norpcallowip, and similar corner case behavior 2025-02-14 15:10:09 -08:00
net.h net: reduce CAddress usage to CService or CNetAddr 2025-02-13 12:38:55 +01:00
net_permissions.cpp util: move fees.h and error.h to common/messages.h 2024-05-16 10:16:08 -05:00
net_permissions.h scripted-diff: modernize outdated trait patterns - types 2025-02-21 10:41:27 +01:00
net_processing.cpp Remove checkpoints 2025-03-13 11:13:13 +00:00
net_processing.h net: add GetOrphanTransactions() to PeerManager 2024-10-01 21:55:18 -04:00
net_types.cpp rpc: avoid copying into UniValue 2024-05-20 16:48:19 +00:00
net_types.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
netaddress.cpp net: Add optional length checking to CService::SetSockAddr 2025-01-13 21:53:56 +01:00
netaddress.h net: Add optional length checking to CService::SetSockAddr 2025-01-13 21:53:56 +01:00
netbase.cpp scripted-diff: drop config/ subdir for bitcoin-config.h, rename to bitcoin-build-config.h 2024-10-10 12:22:12 +02:00
netbase.h scripted-diff: modernize outdated trait patterns - types 2025-02-21 10:41:27 +01:00
netgroup.cpp Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
netgroup.h net: Add continuous ASMap health check logging 2023-12-02 22:03:08 +01:00
netmessagemaker.h refactor: NetMsg::Make() without nVersion 2023-11-20 14:02:27 +01:00
noui.cpp node: Use log levels in noui_ThreadSafeMessageBox 2024-03-21 16:41:16 +01:00
noui.h
outputtype.cpp fix incorrect multisig redeem script size limit for segwit 2024-05-03 14:20:44 -03:00
outputtype.h fix incorrect multisig redeem script size limit for segwit 2024-05-03 14:20:44 -03:00
pow.cpp consensus: add DeriveTarget() to pow.h 2025-01-22 11:29:05 +01:00
pow.h consensus: add DeriveTarget() to pow.h 2025-01-22 11:29:05 +01:00
prevector.h prevector: avoid GCC bogus warnings in insert method 2024-09-11 17:41:26 +02:00
protocol.cpp scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp} 2024-10-26 23:44:15 +02:00
protocol.h scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp} 2024-10-26 23:44:15 +02:00
psbt.cpp util: add TransactionError includes and namespace declarations 2024-05-16 10:16:08 -05:00
psbt.h Merge bitcoin/bitcoin#30406: refactor: modernize-use-equals-default 2024-07-11 19:08:46 +01:00
pubkey.cpp refactor: Use immediate lambda to work around GCC bug 117966 2024-12-16 10:39:28 +01:00
pubkey.h refactor: Make XOnlyPubKey tolerate constexpr std::arrays 2024-08-28 19:09:51 +02:00
random.cpp Revert "Merge bitcoin/bitcoin#31826: random: Check GetRNDRRS is supported in InitHardwareRand to avoid infinite loop" 2025-02-19 10:28:13 -05:00
random.h refactor: modernize remaining outdated trait patterns 2025-02-21 10:43:41 +01:00
randomenv.cpp refactor: modernize remaining outdated trait patterns 2025-02-21 10:43:41 +01:00
randomenv.h
rest.cpp Merge bitcoin/bitcoin#31583: rpc: add target to getmininginfo field and show next block info 2025-01-22 15:01:23 -05:00
rest.h
scheduler.cpp scripted-diff: Rename SingleThreadedSchedulerClient to SerialTaskRunner 2024-02-15 14:43:14 +01:00
scheduler.h kernel: Remove dependency on CScheduler 2024-02-16 17:12:52 +01:00
serialize.h refactor: modernize remaining outdated trait patterns 2025-02-21 10:43:41 +01:00
signet.cpp scripted-diff: LogPrint -> LogDebug 2024-08-29 13:49:57 +02:00
signet.h
span.h refactor: Simplify SpanPopBack 2024-12-19 13:46:52 +01:00
streams.cpp streams: add DataStream::GetMemoryUsage 2024-11-04 18:46:40 +01:00
streams.h refactor: Avoid passing span iterators when data pointers are expected 2024-12-19 14:39:55 +01:00
sync.cpp scripted-diff: modernize outdated trait patterns - values 2025-02-21 10:43:01 +01:00
sync.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
threadsafety.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
tinyformat.h refactor: Introduce struct to hold a runtime format string 2025-01-15 12:16:08 +01:00
torcontrol.cpp Normalize inconsistent -noonlynet behavior 2025-02-13 12:30:15 -05:00
torcontrol.h net, init: derive default onion port if a user specified a -port 2024-11-14 13:41:02 -05:00
txdb.cpp refactor: Rely on returned value of GetCoin instead of parameter 2024-09-18 20:03:47 +02:00
txdb.h kernel: Move default cache constants to caches 2025-01-15 15:44:55 +01:00
txmempool.cpp txmempool: fix typos in comments 2024-12-31 00:04:20 -03:00
txmempool.h txmempool: fix typos in comments 2024-12-31 00:04:20 -03:00
txorphanage.cpp [fuzz] TxOrphanage::SanityCheck accounting 2025-02-07 13:55:57 -05:00
txorphanage.h [fuzz] TxOrphanage::SanityCheck accounting 2025-02-07 13:55:57 -05:00
txrequest.cpp [refactor] make GetCandidatePeers take uint256 and in-out vector 2025-01-29 18:05:16 -05:00
txrequest.h [refactor] make GetCandidatePeers take uint256 and in-out vector 2025-01-29 18:05:16 -05:00
uint256.cpp scripted-diff: Rename SetHex to SetHexDeprecated 2024-07-24 09:15:34 +02:00
uint256.h doc: Clarify comments about endianness after #30526 2025-01-03 09:19:53 -05:00
undo.h Include version.h in fewer places 2023-11-16 11:36:22 +10:00
validation.cpp Remove checkpoints 2025-03-13 11:13:13 +00:00
validation.h refactor: Replace uint256 type with Wtxid in PackageMempoolAcceptResult struct 2025-03-11 16:00:54 +00:00
validationinterface.cpp refactor: include the proper header rather than forward-declaring RemovalReasonToString 2024-10-08 15:25:47 +00:00
validationinterface.h [refactor] change ActiveTipChange to use CBlockIndex ref instead of ptr 2024-07-25 11:01:22 +01:00
versionbits.cpp
versionbits.h
walletinitinterface.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00