Commit graph

32994 commits

Author SHA1 Message Date
MarcoFalke
bcecde64b4
Merge bitcoin/bitcoin#24316: ci: Rename Cirrus CI osx_instance to macos_instance
c49e7db8ae ci: Follow Cirrus CI docs (Hennadii Stepanov)

Pull request description:

  See https://github.com/cirruslabs/cirrus-ci-docs/pull/763.

ACKs for top commit:
  katesalazar:
    ACK c49e7db8ae

Tree-SHA512: b86d571258e2682113833d575ca36a60b108ee38f2d74846b7631a29b9578cad00a29e62a3a1d808b21d2de3a27230f9ac58814c9f9b02d08675e65170ccd7e5
2022-02-11 13:21:01 +01:00
Hennadii Stepanov
c49e7db8ae
ci: Follow Cirrus CI docs
See https://github.com/cirruslabs/cirrus-ci-docs/pull/763
2022-02-11 13:52:22 +02:00
fanquake
5f7f2f7ffa
Merge bitcoin/bitcoin#24241: doc: cleanup doc on need of Developer Account to obtain macOS SDK
ddcac22f09 doc: cleanup doc on need of Developer Account to obtain macOS SDK (jarolrod)

Pull request description:

  The explicit statement that an Apple Developer Account is required in order to obtain the SDK is buried within the `Deterministic macOS DMG Notes` section. It should be the first thing mentioned under the `SDK Extraction` section.
  The reason to do this is to set expectations of what is required before starting any steps or clicking on links.

  This fixes the issue by doing just that; moving this information to the `SDK Extraction` section. Now that the information is moved, this also deletes unnecessary SDK related notes from the `Deterministic macOS DMG Notes` section. It is not necessary to explain under what sub-directory 'most' of the important files are inside of the `Xcode.app`.

  Note that this also fixes a missed Xcode version link bump by deleting it :)

ACKs for top commit:
  fanquake:
    ACK ddcac22f09

Tree-SHA512: 9fe7fddd66b68a0475be8b0c78cb58932bf5b68d962ece36a86f3b743a88d8561c0ec3e8d88bcaf338da7ab9d3dfcfb9399f6e1a884d83c8f3117c186d049469
2022-02-11 08:39:54 +00:00
jarolrod
ddcac22f09 doc: cleanup doc on need of Developer Account to obtain macOS SDK
The explicit statement that an Apple Developer Account is required in
order to obtain the SDK is buried within the "Deterministic macOS DMG
Notes" section. It should be the first thing mentioned under the "SDK
Extraction" section. The reason to do this is to set expectations of
what is required before starting any steps or clicking on links.

This fixes the issue by doing just that; moving this information to the
"SDK Extraction" section. Now that the information is moved, this also
deletes unnecessary SDK related notes from the "Deterministic macOS DMG
Notes" section. It is not necessary to explain under what sub-directory
'most' of the important files are inside of the 'Xcode.app'.
2022-02-10 23:50:16 -05:00
fanquake
471d15536f
build: add support for OpenBSD to depends 2022-02-10 12:33:10 +00:00
fanquake
75ae39eeec
build: add a default build tar in depends
This is so we can override it later for BSDs.
2022-02-10 12:33:02 +00:00
laanwj
a7e80449c0
Merge bitcoin/bitcoin#24238: random: use arc4random on OpenBSD
0c49e52b22 build: remove unneeded getentropy detection (HAVE_GETENTROPY) (Sebastian Falbesoner)
5cd15ffdce random: use arc4random on OpenBSD (Sebastian Falbesoner)

Pull request description:

  Inspired by a discussion on obtaining randomness on various OSes in a secp256k1 PR (https://github.com/bitcoin-core/secp256k1/pull/748#discussion_r524605472, see also https://bitcoincore.reviews/libsecp256k1-748), I think it makes sense to follow best practices and use `arc4random_buf` rather than `getentropy` on OpenBSD in our random module.

  The [getentropy(2) man page](https://man.openbsd.org/getentropy.2) states:
  ```
  getentropy() is not intended for regular code; please use the
  arc4random(3) family of functions instead.
  ```

  The [arc4random(3) man page](https://man.openbsd.org/arc4random.3) states:

  ```
  Use of these functions is encouraged for almost all random number
  consumption because the other interfaces are deficient in either quality,
  portability, standardization, or availability.
  ```
  On the linked PR discussion worries about using RC4 internally has been expressed (see https://security.stackexchange.com/questions/85601/is-arc4random-secure-enough/172905#172905), but this would only affect users of OpenBSD <5.5, using a version that was released more than 8 years ago.

ACKs for top commit:
  laanwj:
    Tested ACK 0c49e52b22

Tree-SHA512: b5ed3d0718962c5a3839db9a28f93d08a0ac93094cc664f83bc4cf1cfad25049e6240b7b81fe06b71e6a3a0ca24a2c337eab088abec5470ad014e10c04fdb216
2022-02-10 10:00:51 +01:00
Pieter Wuille
34d0e07e92
Test that OP_1-OP_16 (but not lower/higher) start witness programs 2022-02-10 08:51:48 +00:00
Vasil Dimov
ee822d85d6
util: use stronger-guarantee rename method
Use std::filesystem::rename() instead of std::rename(). We rely on the
destination to be overwritten if it exists, but std::rename()'s behavior
is implementation-defined in this case.
2022-02-10 08:16:05 +00:00
fanquake
243a9c3925
Merge bitcoin/bitcoin#24297: Fix unintended unsigned integer overflow in strencodings
fac9fe5d05 Fix unintended unsigned integer overflow in strencodings (MarcoFalke)

Pull request description:

  This fixes two issues for strings that start with a colon and only have one colon:

  * `fMultiColon` is incorrectly set to `true`
  * There is an unsigned integer overflow `colon - 1` (`0 - 1`)

  Neither issue matters, as the result is discarded. Though, it makes sense to still fix the issue for clarity and to avoid sanitizer issues in the function.

ACKs for top commit:
  laanwj:
    Code review ACK fac9fe5d05
  shaavan:
    Code Review ACK fac9fe5d05

Tree-SHA512: e71c21a0b617abf241e561ce6b90b963e2d5e2f77bd9547ce47209a1a94b454384391f86ef5d35fedd4f4df19add3896bb3d61fed396ebba8e864e3eeb75ed59
2022-02-10 07:17:32 +00:00
fanquake
8796c2f568
Merge bitcoin/bitcoin#24302: test: Remove unused integer sanitizer suppressions
fa2807ef19 test: Remove unused integer sanitizer suppressions (MarcoFalke)

Pull request description:

  Looks like they are not needed anymore. Maybe due to commit 7de2cf9b25 ?

ACKs for top commit:
  fanquake:
    ACK fa2807ef19

Tree-SHA512: 300aa47bd2cf6d44ad0d1d78889afeeb9ed0d7080f330e912db4c295dd13c43aaccdfbd4d7251006d2c0b848af6fb0d52104142ff528564edac8af49318f9f50
2022-02-10 07:15:37 +00:00
fanquake
3dc0bb9552
Merge bitcoin/bitcoin#24298: fuzz: Avoid unsigned integer overflow in FormatParagraph
fa2f7d0059 fuzz: Avoid unsigned integer overflow in FormatParagraph (MarcoFalke)

Pull request description:

  `FormatParagraph` is only ever called with compile time constant arguments, so I don't see the need for fuzzing it.

  Though, keep it for now, but avoid the unsigned integer overflow with this patch.

ACKs for top commit:
  laanwj:
    Code review ACK fa2f7d0059

Tree-SHA512: 01fc64a9ef73c183921ca1b0cd8db9514c0a242e3acf215a3393f383ae129e01625ebb16eaf9cb86370eda62d0145c3dcf8f62e40edf5958abc1f777c5687280
2022-02-10 07:14:24 +00:00
Kristaps Kaupe
b75f4c89ec
RPC: Return external_signer in getwalletinfo 2022-02-10 03:23:47 +02:00
brunoerg
7abd8b21ba doc: include wtxid in TransactionDescriptionString 2022-02-09 21:15:24 -03:00
brunoerg
2d596bce6f doc: add wtxid info in release-notes 2022-02-09 21:15:19 -03:00
fanquake
8c0f02c69d
Merge bitcoin/bitcoin#24265: Drop StripRedundantLastElementsOfPath() function
ebda2b8c81 util: Drop no longer needed StripRedundantLastElementsOfPath() function (Hennadii Stepanov)
ecd094e2b1 Use ArgsManager::GetPathArg() for "-walletdir" option (Hennadii Stepanov)
06fed4c21e Use ArgsManager::GetPathArg() for "-blocksdir" option (Hennadii Stepanov)
15b632bf16 Use ArgsManager::GetPathArg() for "-datadir" option (Hennadii Stepanov)
540ca5111f util: Add ArgsManager::GetPathArg() function (Hennadii Stepanov)

Pull request description:

  [Switching](https://github.com/bitcoin/bitcoin/pull/20744) to `std::filesystems` makes possible to leverage [`std::filesystem::path::lexically_normal`](https://en.cppreference.com/w/cpp/filesystem/path/lexically_normal) and get rid of ugly `StripRedundantLastElementsOfPath()` crutch.

  To make its usage simple and error-proof, a new `ArgsManager::GetPathArg()` member function introduced which guarantees to return a normalized with no trailing slashes paths provided via `-datadir`, `-blocksdir` or `-walletdir` command-line arguments or configure options.

ACKs for top commit:
  ryanofsky:
    Code review ACK ebda2b8c81. Only change since last review is rebase which simplified the last commit

Tree-SHA512: ed86959b6038b7152b5a1d473478667b72caab1716cc9149e1a75833d50511f22157e4e5e55a9465d1fa76b90bce5e5286f4e4f0d1ae65ebd9c012fae19d835f
2022-02-09 21:41:36 +00:00
MarcoFalke
fa2807ef19
test: Remove unused integer sanitizer suppressions 2022-02-09 21:26:25 +01:00
Jon Atack
f485a07454
Add missing thread safety lock assertions in validation.h 2022-02-09 19:13:50 +01:00
Jon Atack
37af8a20cf
Add missing thread safety lock assertions in validation.cpp
Co-authored-by: Shashwat <svangani239@gmail.com>
2022-02-09 19:13:49 +01:00
Hennadii Stepanov
ebda2b8c81
util: Drop no longer needed StripRedundantLastElementsOfPath() function 2022-02-09 19:33:24 +02:00
Hennadii Stepanov
ecd094e2b1
Use ArgsManager::GetPathArg() for "-walletdir" option 2022-02-09 19:31:23 +02:00
Hennadii Stepanov
06fed4c21e
Use ArgsManager::GetPathArg() for "-blocksdir" option 2022-02-09 19:31:23 +02:00
Hennadii Stepanov
15b632bf16
Use ArgsManager::GetPathArg() for "-datadir" option 2022-02-09 19:31:22 +02:00
Hennadii Stepanov
540ca5111f
util: Add ArgsManager::GetPathArg() function
Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2022-02-09 19:31:16 +02:00
Jon Atack
ae9ceed3e2
validation, refactoring: remove ChainstateManager::Reset()
Co-authored-by: Vasil Dimov <vd@FreeBSD.org>
Co-authored-by: laanwj <126646+laanwj@users.noreply.github.com>
2022-02-09 18:04:54 +01:00
MarcoFalke
fa1b89a6bd
scripted-diff: Rename nReadPos to m_read_pos in streams.h
-BEGIN VERIFY SCRIPT-
 sed -i 's/nReadPos/m_read_pos/g' ./src/streams.h
-END VERIFY SCRIPT-
2022-02-09 17:21:04 +01:00
MarcoFalke
fa56c79df9
Make CDataStream work properly on 64-bit systems 2022-02-09 17:21:01 +01:00
MarcoFalke
fab02f7991
streams: Fix read-past-the-end and integer overflows 2022-02-09 17:20:22 +01:00
laanwj
5e8e0b3d7f
Merge bitcoin/bitcoin#24253: Remove broken and unused CDataStream methods
fa1b227a72 Remove broken and unused CDataStream methods (MarcoFalke)
faee5f8dc2 test: Create fresh CDataStream each time (MarcoFalke)
fa71114926 test: Inline expected_xor (MarcoFalke)

Pull request description:

  The `insert` and `erase` methods have many issues:

  * They are unused
  * They are confusing and hard to read, as they implement "special cases" for optimization, that isn't needed
  * They are broken (See https://github.com/bitcoin/bitcoin/pull/24231)
  * Fixing them leads to mingw compile errors (See https://github.com/bitcoin/bitcoin/pull/24231#issuecomment-1029286985)

  Fix all issues by removing them

ACKs for top commit:
  laanwj:
    Code review ACK fa1b227a72

Tree-SHA512: 9d9e5d42e6ffc5ae82bdb67cfb5b50b45977ae674acee6ff99092560aebf2fc7e4584ded614e190db0663226fa198e34350517cd7ee57d518de22e9568bc349a
2022-02-09 16:04:43 +01:00
Jon Atack
daad0093e3
validation: replace lock with annotation in UnloadBlockIndex() 2022-02-09 15:38:36 +01:00
MarcoFalke
fa2f7d0059
fuzz: Avoid unsigned integer overflow in FormatParagraph 2022-02-09 14:38:22 +01:00
MarcoFalke
fac9fe5d05
Fix unintended unsigned integer overflow in strencodings 2022-02-09 13:24:55 +01:00
fanquake
6ac637f97f
Merge bitcoin/bitcoin#24288: build, refactor: Drop redundant $(package)_download_file assignments
d644c45e39 build, refactor: Drop redundant `$(package)_download_file` assignments (Hennadii Stepanov)

Pull request description:

  No need to specify `$(package)_download_file` when it is equal to `$(package)_file_name`.

  Historically, before bitcoin/bitcoin#19817, distinct `$(package)_download_file` and `$(package)_file_name` were used for better portability (I guess) by removing `+` characters from a file name.

  The only package which still use file renaming is `native_capnp`: eca694a4e7/depends/packages/native_capnp.mk (L3-L5)

ACKs for top commit:
  shaavan:
    ACK d644c45e39
  fanquake:
    ACK d644c45e39

Tree-SHA512: 488dd0f55cea077174e78a75d8385bacb1a5463883cadeb5fd7c9426865ea5f3a8bad0bd6e8e9d530bce6f0c1715349b3fbabb4e22634348cdd68f5fc8a3c53b
2022-02-09 11:59:43 +00:00
Bitcoin Hodler
8e9699cb10
Update doc to match new default wallet type
Which changed in #23002.
2022-02-09 07:38:48 +00:00
MarcoFalke
8ac79973f8
Merge bitcoin/bitcoin#24196: Fix integer sanitizer suppressions in validation.cpp
fac62056b5 Fix integer sanitizer suppressions in validation.cpp (MarcoFalke)

Pull request description:

  It doesn't seem ideal to have an integer sanitizer enabled, but then disable it for the whole validation.cpp file.

  Fix it with a refactor and remove the suppression.

ACKs for top commit:
  hebasto:
    ACK fac62056b5, I have reviewed the code and it looks OK, I agree it can be merged.
  prayank23:
    Code Review ACK fac62056b5

Tree-SHA512: efc5b9887cb2e207033b264ebf425bae5ff013e909701c049aea5d79a21f10495826e962d171b3d412717cbf0a4723e5124133b5401b35a73915212e85e91020
2022-02-09 08:30:38 +01:00
Hennadii Stepanov
b7942c9482
Merge bitcoin-core/gui#404: Fix various edge case bugs in QValidatedLineEdit
aeb18b665c Bugfix: GUI: Check validity when QValidatedLineEdit::setText is called (Luke Dashjr)
b1a544be10 Bugfix: GUI: Re-check validity after QValidatedLineEdit::setCheckValidator (Luke Dashjr)
2385b508d5 Bugfix: GUI: Only apply invalid style to QValidatedLineEdit, not its tooltip (Luke Dashjr)

Pull request description:

  1. Use a CSS selector to avoid changing the background colour of the tooltip.
  2. Re-check validity of input when we first set the validator (probably a no-op in practice).
  3. Check validity of input when it is set programmatically via `setText` (eg, via the address book). Probably no-op in practice UNTIL merging https://github.com/bitcoin/bitcoin/pull/15987 or any other PR that adds a warning for valid addresses.

  Moved from https://github.com/bitcoin/bitcoin/pull/18133 (just concept ACKs)

ACKs for top commit:
  Sjors:
    tACK aeb18b665c
  hebasto:
    ACK aeb18b665c, tested on Linux Mint 20.3 (Qt 5.12.8).

Tree-SHA512: b6fa8ee4dec76e1c759095721240e6fa5071a02993cb28406e96a0fa2e819f5dddc03d2e7c9073354d7865c2b09eb263afaf853ecba42e9fc4f50ef4ae20bf0f
2022-02-09 06:23:44 +02:00
MarcoFalke
fa27745ccb
ci: Bump fuzz tasks to jammy
This gives them a newer clang version, which may have more sanitizers
available.
2022-02-08 20:23:21 +01:00
MarcoFalke
fab8cd5f87
Revert "ci: Run fuzzer task for the master branch only"
This reverts commit 5a9e255e5a.
2022-02-08 20:18:10 +01:00
Hennadii Stepanov
58e16035c1
qt, refactor: Drop BitcoinGUI::{send,receive}CoinsMenuAction members 2022-02-08 18:41:42 +02:00
Hennadii Stepanov
fd667e73cd
qt: Make show_hide_action dependent on the main window actual state 2022-02-08 18:41:41 +02:00
Hennadii Stepanov
ee151d0327
qt: Drop BitcoinGUI::toggleHideAction member
Also dropped useless tooltip.
2022-02-08 18:41:41 +02:00
Hennadii Stepanov
78189daac8
qt, refactor: Fill up trayIconMenu before connections
This change is required for the following commits.
2022-02-08 18:41:29 +02:00
MarcoFalke
280a7777d3
Merge bitcoin/bitcoin#24235: validation: use stronger EXCLUSIVE_LOCKS_REQUIRED()
99de8068cd validation: use stronger EXCLUSIVE_LOCKS_REQUIRED() (Vasil Dimov)

Pull request description:

  https://github.com/bitcoin/bitcoin/pull/24103 added annotations to
  denote that the callers of `CChainState::ActivateBestChain()` and
  `CChainState::InvalidateBlock()` must not own `m_chainstate_mutex` at
  the time of the call.

  Replace the added `LOCKS_EXCLUDED()` with a stronger
  `EXCLUSIVE_LOCKS_REQUIRED()`, see
  https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#negative for the
  difference between both.

ACKs for top commit:
  hebasto:
    ACK 99de8068cd.
  jonatack:
    ACK 99de8068cd. Tested with Debian clang version 13.0.1.  Reproduced hebasto's results. Verified that  `LoadExternalBlockFile()` needs the annotation added here.

Tree-SHA512: 59640d9ad472cdb5066ecde89cc0aff8632a351fc030f39bb43800d2c856fb1aed3576e4134212d32be161b18780f06dc5066ac71df7f7cd69e3f21f886e1542
2022-02-08 15:53:49 +01:00
MarcoFalke
8edb0416dd
Merge bitcoin/bitcoin#24266: util: Avoid buggy std::filesystem:::create_directories() call
b9c113af75 util: Avoid buggy std::filesystem:::create_directories() call (Hennadii Stepanov)

Pull request description:

  Compiled with some libstdc++ versions (e.g., on Ubuntu 20.04) [`std::filesystem:::create_directories()`](https://en.cppreference.com/w/cpp/filesystem/create_directory) call [fails](https://github.com/bitcoin/bitcoin/issues/24257#issue-1123753243) to handle symbol links properly.

  No behavior change in comparison to the [pre-20744](c194293883) master branch.

  Fixes bitcoin/bitcoin#24257.

ACKs for top commit:
  ryanofsky:
    Code review ACK b9c113af75. Nice simplification and fix
  MarcoFalke:
    review ACK b9c113af75 🐬

Tree-SHA512: 79d940cfc1f68d9b0548fb2ab005e90850b54ac0fb3bb2940afd632d56288d92687579a3176bac3fd0ea3d2dae71e26444f8f7bdb87862414c12866ae5e857c4
2022-02-08 15:46:34 +01:00
Hennadii Stepanov
66afa286e5
qt, refactor: Replace BitcoinGUI::trayIconActivated with a lambda 2022-02-08 16:21:45 +02:00
Hennadii Stepanov
c3ca8364b2
qt, refactor: Replace BitcoinGUI::macosDockIconActivated with a lambda 2022-02-08 16:19:12 +02:00
fanquake
8afcc89a8f
Merge bitcoin/bitcoin#24282: docs: Move explanation of hardened key syntax closer to KEY section
bac30e85f3 docs: Move explanation of hardened key syntax closer to KEY section (Bitcoin Hodler)

Pull request description:

  The line about "(Anywhere a `'` suffix is permitted to denote hardened derivation, the suffix `h` can be used instead.)" belongs with the section on KEY expressions, not following the unrelated TREE section.

ACKs for top commit:
  prusnak:
    ACK bac30e8
  meshcollider:
    ACK bac30e85f3

Tree-SHA512: 56fe97b89c02e67e94cab33b01e56f17f9b501b97036c5b35939dc4000a9d5e9afe4333869ba97bbe81372c538b7b2021a7d2520aba731400d8d0e62714d52b4
2022-02-08 13:46:15 +00:00
fanquake
87b5b002ad
Merge bitcoin/bitcoin#24259: test: Remove unused valgrind suppressions
fa4b61911d test: Remove unused valgrind suppressions (MarcoFalke)
faccb2d7fe test: Exclude broken feature_init for now (MarcoFalke)
fa086d891b test: Properly skip feature_syscall_sandbox in valgrind (MarcoFalke)

Pull request description:

ACKs for top commit:
  fanquake:
    ACK fa4b61911d

Tree-SHA512: 5be1a8f288182d386531a033ae7258f753dd655dfa1746a52b65622a0359c2b7143a25b49c0747538308eed606a691847d2f59a5a0382b7751b8de7172adf0d3
2022-02-08 13:19:49 +00:00
Hennadii Stepanov
d644c45e39
build, refactor: Drop redundant $(package)_download_file assignments
No need to specify `$(package)_download_file` when it is equal to
`$(package)_file_name`.
2022-02-08 11:16:51 +02:00
MarcoFalke
eca694a4e7
Merge bitcoin/bitcoin#24239: test: fix ceildiv division by using integers
d1fab9d5d2 test: Call ceildiv helper with integer (Martin Zumsande)

Pull request description:

  On master,

  `assert_fee_amount(Decimal("0.00000993"), 217, Decimal("0.00004531"))` passes
  `assert_fee_amount(Decimal("0.00000993"), Decimal("217"), Decimal("0.00004531"))` fails.

  the reason is that the // operator in  `ceildiv(a,b) = -(-a//b)`  has a different behavior for Decimals, see [doc](https://docs.python.org/3/library/decimal.html#decimal-objects).

  `wallet_send.py` calls this function with Decimals, and I think this is the reason for the failure reported in the OP of #24151 (`wallet_send.py --legacy-wallet` line 332, the numbers used in the example above are from there). However, the other failures reported there cannot be explained by this, so this is just a partial fix.

ACKs for top commit:
  ryanofsky:
    Code review ACK d1fab9d5d2. Tracking down this problem was a good find, and code seems safer and easier to understand now

Tree-SHA512: 5bf0568cd1a0824f6b1a15a03580b6e9391b4f51112a97c1d00469d255bf6dda45c49a36fa567a5ba9b9973efe1d9cdd480db91965c9f4c2aa963629a8a32cba
2022-02-07 17:08:26 +01:00